• italian
  • german
  • swedish
S'inscrire à la newsletter:
Rechercher dans le site:
*
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
02 Décembre 2008 à 22:46:51

Connexion avec identifiant, mot de passe et durée de la session



 
« sujet précédent | | sujet suivant »
Pages: [1] Imprimer
Auteur Fil de discussion: Un espace membre en PHP  (Lu 755 fois)
Flore
Espoir
***

Points gagnés: 1
Messages: 101


Voir le profil
« le: 12 Juillet 2008 à 20:45:12 »

Bonjour à tous et toutes,

Il y a peu un copain me fait passer un fichier texte expliquant comment créer un espace membre en PHP.

Je commence donc à travailler là-dessus, au premier test demandé a savoir contrôler que ma BDD se remplisse et bonne réception du mail a la personne qui s'inscrit, rien ne se passe ou plutôt si, lorsque le formulaire est remplit et envoyé cela m'amène a une adresse "HTTP/localhost/".
J'en déduis que mon <form action=…> Ne m’amène nul par.

Pourtant, j'indique bien ma base de donnée/login/mdp et la table concernée.

S'agit'-il d'une erreur de syntaxe ?? Je ne sais plus trop quoi faire, car apparemment le code semble juste.

Si vous avez une idée ? Merci à vous

Je vous joins le code.
Code:
<?php
//Redirige l'utilisateur s'il est deja identifie
if(isset($_COOKIE["ID_UTILISATEUR"]))
{
header("Location: index.php");
}
else
{

// Formulaire visible par défaut
$masquer_formulaire false;

// Une fois le formulaire envoyé
if(isset($_POST["BT_Envoyer"]))
{

// Vérification de la validité des champs
if(!ereg("^[A-Za-z0-9_]{4,20}$",$_POST["TB_Nom_Utilisateur"]))
{
$message "Votre nom d'utilisateur doit comporter entre 4 et 20 caractères<br />\n";
$message .= "L'utilisation de l'underscore est autorisée";
}
elseif(!ereg("^[A-aZ-z0-9_]‘4,}$",$_POST["TB_Mot_de_Passe"]))
{
$message "Votre mot de passe doit comporter au moins 4 caractères";
}
elseif($_POST["TB_Mot_de_Passe"]!=$_POST["TB_Confirmation_Mot_de_Passe"])
{
$message "Votre mot de passe n'a pas été correctement confirmé";
}
elseif(!ereg("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z}{2,4}$",$_POST["TB_Adresse_Email"]))
{
$message "Votre adresse e-mail n'est pas valide";
}
else
{

// Connexion à la base de données
// Valeurs à modifier selon vos paramètres configuration
mysql_connect ("monserveur""monlogin""monpass");
mysql_select_db ("mabase");

// Vérification de l'unicité du nom d'utilisateur et de l'adresse e-mail
$result mysql_query("SELECT Nom_Utilisateur, Adresse_Email, FROM matable WHERE Nom_Utilisateur = '" .$_POST["TB_Nom_Utilisateur"]."'OR Adresse_Email = '" .$_POST["TB_Adresse_Email"]."'") or die (mysql_error());

// Si une erreur survient
if(!$result)
{
$message "Une erreur est survenue lors de la création de votre compte utilisateur";
}
else
{
// Si un enregistrement est trouvé
if(mysql_num_rows($result) > 0)
{
while($row mysql_fetch_array($result))
{
if($_POST["TB_Nom_Utilisateur"]==$row["Nom_Utilisateur"])
{
$message "Le nom d'utilisateur" .$_POST["TB_Nom_Utilisateur"];
$message .="est déjà utilisé";
}
elseif($_POST["TB_Adresse_Email"]==$row["Adresse_Email"])
{
$message ="L'adresse e-mail" .$_POST["TB_Adresse_Email"];
$message .="est déjà utilisée";
}
}
}
else
{
// Génération de la clef d'activation
$caracteres = array ("a""b""c""d""e""f"0123456789);
$caracteres_aleatoires array_rand($caracteres8);
$clef_activation "";

foreach($caracteres_aleatoires as $i)
{
$clef_activation .=$caracteres[$i];
}

// Création du compte utilisateur
$result mysql_query("INSERT INTO matable(Nom_Utilisateur, Mot_de_Passe, Adresse_Email, Date_Inscription, Clef_Activation)
VALUES('"
.$_POST["TB_Nom_Utilisateur"] ."', '".md5($_POST["TB_Mot_de_Passe"]) ."', '".$_POST["TB_Adresse_Email"]."', '".$clef_activation ."')
"
);

// Si une erreur survient
if(!$result)
{
$message "Une erreur est survenue lors de la création de votre compte utilisateur";
}
else
{

// Envoi du mail d'activation
$sujet "Activation de votre compte utilisateur";
$message "Pour valider votre inscription, merci de cliquer sur le lien suivant :\n";
$message .= "http://".$_SERVER['SERVER_NAME'];
$message .= "/activer-compte-utilisateur.php?id=".mysql_insert_id();
$message .= "&clef=".$clef_activation;

// Si une erreur survient
if(!@mail($_POST["TB_Adresse_Email"], $sujet$message))
{
$message "Une erreur est survenue lors de l'envoi du mail d'activation<br />\n";
$message .= "Veuillez contacter l'administrateur afin d'activer votre compte";
}
else
{

// Message de confirmation
$message "Votre compte utilisateur a correctement été créer<br />\n";
$message .="Un email vient de vous être envoyer afin de l'activer";

// On masque le formulaire
$masquer_formulaire true;
}
}
}
}
}

// Fermeture de la connexion à la base de données
mysql_close();
}
}

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Test</title>
</head>

<body>
<?php if(isset($message)) { ?>
<p><?php $message?></p>
<?php } if($masquer_formulaire != true){ ?>
<form action="http://<?= $_SERVER['SERVER_NAME'] .$_SERVER ['SCRIPT_NAME'];?>" method ="POST">

<p>
Nom d'utilisateur : <input type="text" name="TB_Nom_Utilisateur" />
</p>
<p>
Mot de passe : <input type="password" name="TB_Mot_de_Passe" />
</p>
<p>
Confirmation du mot de passe : <input type="password" name="TB_Confirmation_Mot_de_Passe" />
</p>
<p>
Adresse e-mail :<input type="text" name="TB_Adresse_Email" />
</p>
<p>
<input type="submit" name="BT_Envoyer" value="Envoyer" />
</p>
</form>
<?php ?>
</body>
</html>


« Dernière édition: 13 Juillet 2008 à 02:29:52 par Flore » Journalisée

--

Flore
Flore
Espoir
***

Points gagnés: 1
Messages: 101


Voir le profil
« Répondre #1 le: 13 Juillet 2008 à 02:36:56 »

Je me réponds à moi même  Shocked

Ce qui vous donne un peu plus d'info, j'ai réussie a ne plus avoir ce souci de page en localhost,(sans trop savoir comment j'ai fais).

Par contre, j'arrive a cette erreur :

Warning: mysql_close(): no MySQL-Link resource supplied in /.../.../.../.../.../.../.../creer-compte-utilisateur.php on line 124

Or la ligne 124, correspond a ma fermeture de connexion :

Code:
mysql_close();

je continue
Journalisée

--

Flore
Thierry
Rédacteur Admin
Intarrisable
*****

Points gagnés: 12
Messages: 1436



Voir le profil
« Répondre #2 le: 13 Juillet 2008 à 09:07:07 »

Bonjour,

Si j'ai bien vu le code :

Code:
// Fermeture de la connexion à la base de données
mysql_close();
}
}

est placé en dehors du if suivant :

Code:
// Une fois le formulaire envoyé
if(isset($_POST["BT_Envoyer"]))
{

or c'est dans ce if que vous créez la connexion à la base mysql.

Je m'explique :

si la condition est remplie (envoi du formulaire) vous vous connectez à la BDD puis vous fermez la connexion.
Si la condition n'est pas remplie, vous fermez une connexion qui n'est pas ouverte.

Donc, sauf erreur de ma part (je n'y connais pas grand chose en php), déplacez le mysql_close dans le if de façon à ce que la fermeture de la connexion ne se réalise que si celle-ci a été ouverte.

Journalisée
Flore
Espoir
***

Points gagnés: 1
Messages: 101


Voir le profil
« Répondre #3 le: 13 Juillet 2008 à 15:30:29 »

Merci Thierry,

Pourrais tu me situer, précisément ou tu le situerais dans un bout de code stp ?

Et pas de soucis, pour le moment je test dans un coin, car ensuite il y a d'autre choses à ajouter.



[HS] je vois la prévisualisation de mes messages que sur une ligne quand j'écris mes messages, est ce normal ?
Journalisée

--

Flore
Thierry
Rédacteur Admin
Intarrisable
*****

Points gagnés: 12
Messages: 1436



Voir le profil
« Répondre #4 le: 13 Juillet 2008 à 20:12:54 »

voici ma proposition, à supposer que j'ai raison :


// On masque le formulaire
      $masquer_formulaire = true;
      }
      }
      }
                mysql_close(); //nouvel emplacement

   }// sauf erreur la fin du if isset est là, donc faut déplacer juste avant
}

// Fermeture de la connexion à la base de données
      //mysql_close(); ancien emplacement
      }
   }

Journalisée
Flore
Espoir
***

Points gagnés: 1
Messages: 101


Voir le profil
« Répondre #5 le: 13 Juillet 2008 à 20:39:24 »

D'accord. Bien vue !  Smile

Donc a priori, je n'ai plus de message d'erreur.

Par contre, le script ne fonctionne pas.
 Shocked

Difficile a comprendre pour moi la.

Merci en tout cas.

Journalisée

--

Flore
mathias
Intarrisable
*****

Points gagnés: 1
Messages: 528



Voir le profil WWW
« Répondre #6 le: 14 Juillet 2008 à 01:22:30 »

Bonsoir,

J'ai remarqué un petit quelque chose, juste au dessus de cette ligne:
Citation
<form action="http://<?= $_SERVER['SERVER_NAME'] .$_SERVER ['SCRIPT_NAME'];?>" method ="POST">
vous avez fermer la balise php avec un "?>"  alors que vous avez rentré la condition "true".
Il n'y à rien à traiter donc. Balise fermé sans rien dedans.

Mais un doute persiste car plus loin vous avez remis "<?php } ?>".
La question est donc:

Si le script ne fonctionne pas ne serait-ce pas à cause de ceci? Refermer une balise pour la réouvrir plus loin ?

Je ne sais pas alors si le code PHP prend en conte ce qu'il se trouve entre ses deux lignes.

Essayez de ne pas refermé cette balise pour que le HTML  soit bien inclu dedans.
Personnellement je n'avais pas appris comme ceci, mais l'erreur est permise à tous Wink
Journalisée

Flore
Espoir
***

Points gagnés: 1
Messages: 101


Voir le profil
« Répondre #7 le: 14 Juillet 2008 à 02:52:52 »

Je viens d'essayer, il me dis y avoir une erreur à la ligne 145, celle que vous citez .

Pour ma part, j'essaie d'apprendre via le fichier fournit par mon ami, c'est pas très évident, a en devenir folle  Confused

Merci et bonne fin de soirée.

Journalisée

--

Flore
mathias
Intarrisable
*****

Points gagnés: 1
Messages: 528



Voir le profil WWW
« Répondre #8 le: 14 Juillet 2008 à 14:47:14 »

Il existe un site très bien pour apprendre le PHP correctement. C'est là ou j'ai en partit appris.

Il s'agit du site du zero.
Journalisée

Flore
Espoir
***

Points gagnés: 1
Messages: 101


Voir le profil
« Répondre #9 le: 15 Juillet 2008 à 20:04:25 »

Bonsoir,

Oui Mathias, je connais ce site, je cherche juste une façon rapide d'avoir un accès membres.
Celle-ci me plaisait bien car assez sécurisée apparemment et simple a mettre en place  Confused d'après celui qui m'a fournie le tuto. Mouais …  Laughing

Je ne fais pas de site et j'essaie de rendre service, et je n'ai que peu de temps maintenant pour me lancer dans des cours tel que le présente le Site du zero, bien qu'ils soient tous très bien expliqué.

Merci

Journalisée

--

Flore
mathias
Intarrisable
*****

Points gagnés: 1
Messages: 528



Voir le profil WWW
« Répondre #10 le: 16 Juillet 2008 à 02:01:47 »

Bon, ba faut faire tourner Google ma chère Flore Wink

Espace membre PHP

Normalement tout y est déjà inscrit, même les scripts sont tout faits, plus qu'a copier.

(PS: pourquoi avoir mis mon prénom en gras? je fais que 70kg je suis pas encore gras ^_^ )
Journalisée

Flore
Espoir
***

Points gagnés: 1
Messages: 101


Voir le profil
« Répondre #11 le: 16 Juillet 2008 à 03:05:20 »

Bon, ba faut faire tourner Google ma chère Flore Wink

Espace membre PHP

Normalement tout y est déjà inscrit, même les scripts sont tout faits, plus qu'a copier.

Je vais aller voir notre ami google  Smile

En tout cas, je tiens a disposition à celles ou ceux qui veulent le fichier que l'on m'a fait parvenir...
(je ne sais pas si j'ai le droit de proposer sa sur le forum !?)

Citation
(PS: pourquoi avoir mis mon prénom en gras? je fais que 70kg je suis pas encore gras ^_^ )

Oupss pardon, une fâcheuse habitude je pense que j'ai pris lorsque je souhaites m'adresser a une personne en particulier sur un Forum.
Dsl  Confused

Merci à tous pour le soutien et bonne vacances a ceux qui y sont  Confused

Journalisée

--

Flore
Pages: [1] Imprimer 
« sujet précédent | | sujet suivant »
Aller à:  

Powered by SMF 1.1.4 | SMF © 2006, Simple Machines LLC