Inscription/confirmation

saluttt
Invité n'ayant pas de compte PHPfrance

21 oct. 2011, 15:53

Bonjour je suis nouveau sur ce forum et un peu débutant en php, je suis en train de faire un site et j'aurais besoin d'aide .Je n'arriv pas à m'inscrire ou a activer un compte.Pas facile a expliquer pourriez vous me dire si il y a une erreur dans ce code, il s'agit de ma page d'inscription(page cible):
<?php


$mail = htmlentities($_POST['mail']);
$nom_site = "truk";

$base = mysql_connect () or die('Erreur de connexion '.mysql_error());
mysql_select_db('',$base) or die('Erreur de selection '.mysql_error());

// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['passwd']) && !empty($_POST['passwd'])) && (isset($_POST['passwdc']) && !empty($_POST['passwdc'])) && (isset($_POST['ville'])&& !empty($_POST['ville'])) && (isset($_POST['mail']) && !empty($_POST['mail'])))

{
$reponse = 'Un ou plusieurs champs ne sont pas remplis, <a href="javascript:history.back(1)">Retour au formulaire</a>';
}
elseif (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $mail)) //Verifie que l'email entrée n'est pas une fausse.
{
$chaine = "abcdefghijklmnopqrstuvwxyz0123456789";
$confirm = str_shuffle($chaine); //On créé le code de confirmation

$login = htmlentities($_POST['login']); //On recupère les infos
$passwd = htmlentities($_POST['passwd']);
$passwdc = htmlentities($_POST['passwdc']);
$ville = htmlentities($_POST['ville']);



/*On Fait la variable contenant le mail de confirmation*/

$message1 = '<html><body>Bonjour ' . $login . ' et bienvenue sur ' .$nom_site. '.</br>';
$message1 .= '</br>';
$message1 .= 'Vous venez de vous inscrire et nous sommes heureux<br>de pouvoir vous compter aujourd\'hui parmi nos membres.<br>';
$message1 .= 'Voici un rappel de vos identifiants, notez les précieusement : <br>';
$message1 .= 'Votre Pseudo :' . $login .'.<br>';
$message1 .= 'Votre Mot de passe:' . $passwd .'.<br><br>';
$message1 .= 'Votre Mail:' . $mail .'.<br><br>';
$message1 .= 'Votre Ville:' . $ville .'.<br><br>';
$message1 .= 'Si vous souhaitez changer vos informations, rendez-vous dans votre compte pour les mettre à jour.<br>';
$message1 .= 'Votre Clé d\'activation:<br>';
$message1 .= 'www.truk.com/confirm.php?login=' . str_replace(' ','%20',$login) . '&confirm=' . $confirm . '<br><br>';
$message1 .= 'A très bientôt sur le site!<br>L\'équipe de ' .$nom_site. '.<br><a href="/index.php">' .$nom_site. '</a>';



$verification = mysql_query("SELECT COUNT(*) FROM pdf_membre WHERE login='$login' OR mail='$mail'") or die (mysql_error());
$donnees = mysql_fetch_array($verification)or die (mysql_error());




if($donnees['COUNT(*)'] >= 1) //On verifie que le pseudo n'existe pas déjà
{
$reponse = 'Le pseudo ou l\'email est déjà utilisé, merci d\'en choisir un(e) autre. <a href="javascript:history.back(1)">Retour au formulaire</a>';
}
elseif( $passwd != $passwdc) //On verifie que les 2 pass sont identiques
{
$reponse = 'Les mots de passe ne sont pas identiques, <a href="javascript:history.back(1)">Retour au formulaire</a>';
}
else //Si tout est bon on entre les données dans la BDD et on envoye le mail
{
mysql_query("INSERT INTO pdf_membre VALUES ('','$login', '$passwd', '$mail', '$confirm', '$ville')");
$reponse2 = 'Bravo, vous êtes maintenant inscrit sur ' .$nom_site. '. <br>Vous allez recevoir un e-mail pour activer votre compte. <br><a href="/index.php">Retour à l\'Accueil</a>';
$entete = "MIME-Version: 1.0\r\n";
$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
$entete .= "From: <$email_admin>\r\n";
$entete .= "Reply-To: $email_admin\r\n";
mail($mail,'Bienvenue sur ' .$nom_site. ' ' . $login .'.' , $message1, $entete);
}
}

mysql_close($base); //On se deconnecte





?>

<html>
<body>
<?php echo $reponse2; ?> <!-- On affiche la reponse de tout le code du dessus -->
</body>
</html>

saluttt
Invité n'ayant pas de compte PHPfrance

21 oct. 2011, 16:01

et ca ma page de confirmation d'inscription:
<?
require("conf.php3"); //Comme d'ab Je ne sais pas a quoi sert cette ligne

$base = mysql_connect ('') or die('Erreur de connexion '.mysql_error());
mysql_select_db('',$base) or die('Erreur de selection '.mysql_error());

$search = 'SELECT COUNT(*) as nb FROM pdf_membre WHERE login = "'.addslashes($_GET['login']).'" AND confirm = "'.addslashes($_GET['confirm']).'"';
$req = mysql_query($search) or die(mysql_error()); //On recupère les infos qui seront dans l'url et on efface la chaine de caractère qui empeche le membre de ce connecter
$data = mysql_fetch_array($req);

if($data['nb'] == 1)
{
$login = $_GET['login'];
mysql_query("UPDATE pdf_membre SET `confirm`='' WHERE `login` ='$login'") or die('erreur : '.mysql_error());

echo '<p>Votre compte à bien été créé.</p>';
echo '<p>Pour retournez à la page d\'accueil cliquez <a href="/index.php">ici</a>.</p>';
}
else //S'il ne retrouve pas le pseudo il affichera le message suivant
{
echo '<p>Un problème est survenu, il est possible que vous ne soyez pas inscrit ou que l\'adresse est fausse ou que vous êtes déjà validé !.</p>';
}
mysql_close($base);
?>

Eléphanteau du PHP | 44 Messages

21 oct. 2011, 18:36

Tu peux utiliser les balises php du forum pour mettre en forme ton code :wink:

Il se situe à quel niveau le problème ?
Le mail est bien envoyé ?

Eléphanteau du PHP | 39 Messages

22 oct. 2011, 19:26

<?php


$mail = htmlentities($_POST['mail']);
$nom_site = "truk";

$base = mysql_connect () or die('Erreur de connexion '.mysql_error());
mysql_select_db('',$base) or die('Erreur de selection '.mysql_error());

// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['passwd']) && !empty($_POST['passwd'])) && (isset($_POST['passwdc']) && !empty($_POST['passwdc'])) && (isset($_POST['ville'])&& !empty($_POST['ville'])) && (isset($_POST['mail']) && !empty($_POST['mail'])))

{
$reponse = 'Un ou plusieurs champs ne sont pas remplis, <a href="javascript:history.back(1)">Retour au formulaire</a>';
}
elseif (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $mail)) //Verifie que l'email entrée n'est pas une fausse.
{
$chaine = "abcdefghijklmnopqrstuvwxyz0123456789";
$confirm = str_shuffle($chaine); //On créé le code de confirmation

$login = htmlentities($_POST['login']); //On recupère les infos
$passwd = htmlentities($_POST['passwd']);
$passwdc = htmlentities($_POST['passwdc']);
$ville = htmlentities($_POST['ville']);



/*On Fait la variable contenant le mail de confirmation*/

$message1 = '<html><body>Bonjour ' . $login . ' et bienvenue sur ' .$nom_site. '.</br>';
$message1 .= '</br>';
$message1 .= 'Vous venez de vous inscrire et nous sommes heureux<br>de pouvoir vous compter aujourd\'hui parmi nos membres.<br>';
$message1 .= 'Voici un rappel de vos identifiants, notez les précieusement : <br>';
$message1 .= 'Votre Pseudo :' . $login .'.<br>';
$message1 .= 'Votre Mot de passe:' . $passwd .'.<br><br>';
$message1 .= 'Votre Mail:' . $mail .'.<br><br>';
$message1 .= 'Votre Ville:' . $ville .'.<br><br>';
$message1 .= 'Si vous souhaitez changer vos informations, rendez-vous dans votre compte pour les mettre à jour.<br>';
$message1 .= 'Votre Clé d\'activation:<br>';
$message1 .= 'www.truk.com/confirm.php?login=' . str_replace(' ','%20',$login) . '&confirm=' . $confirm . '<br><br>';
$message1 .= 'A très bientôt sur le site!<br>L\'équipe de ' .$nom_site. '.<br><a href="/index.php">' .$nom_site. '</a>';



$verification = mysql_query("SELECT COUNT(*) FROM pdf_membre WHERE login='$login' OR mail='$mail'") or die (mysql_error());
$donnees = mysql_fetch_array($verification)or die (mysql_error());




if($donnees['COUNT(*)'] >= 1) //On verifie que le pseudo n'existe pas déjà
{
$reponse = 'Le pseudo ou l\'email est déjà utilisé, merci d\'en choisir un(e) autre. <a href="javascript:history.back(1)">Retour au formulaire</a>';
}
elseif( $passwd != $passwdc) //On verifie que les 2 pass sont identiques
{
$reponse = 'Les mots de passe ne sont pas identiques, <a href="javascript:history.back(1)">Retour au formulaire</a>';
}
else //Si tout est bon on entre les données dans la BDD et on envoye le mail
{
mysql_query("INSERT INTO pdf_membre VALUES ('','$login', '$passwd', '$mail', '$confirm', '$ville')");
$reponse2 = 'Bravo, vous êtes maintenant inscrit sur ' .$nom_site. '. <br>Vous allez recevoir un e-mail pour activer votre compte. <br><a href="/index.php">Retour à l\'Accueil</a>';
$entete = "MIME-Version: 1.0\r\n";
$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
$entete .= "From: <$email_admin>\r\n";
$entete .= "Reply-To: $email_admin\r\n";
mail($mail,'Bienvenue sur ' .$nom_site. ' ' . $login .'.' , $message1, $entete);
}
}

mysql_close($base); //On se deconnecte





?>
<html>
<body>
<?php echo $reponse2; ?> <!-- On affiche la reponse de tout le code du dessus -->
</body>
</html>

Eléphanteau du PHP | 39 Messages

22 oct. 2011, 19:27

et ca ma page de confirmation d'inscription:
<?
require("conf.php3"); //Comme d'ab Je ne sais pas a quoi sert cette ligne

$base = mysql_connect ('') or die('Erreur de connexion '.mysql_error());
mysql_select_db('',$base) or die('Erreur de selection '.mysql_error());

$search = 'SELECT COUNT(*) as nb FROM pdf_membre WHERE login = "'.addslashes($_GET['login']).'" AND confirm = "'.addslashes($_GET['confirm']).'"';
$req = mysql_query($search) or die(mysql_error()); //On recupère les infos qui seront dans l'url et on efface la chaine de caractère qui empeche le membre de ce connecter
$data = mysql_fetch_array($req);

if($data['nb'] == 1)
{
$login = $_GET['login'];
mysql_query("UPDATE pdf_membre SET `confirm`='' WHERE `login` ='$login'") or die('erreur : '.mysql_error());

echo '<p>Votre compte à bien été créé.</p>';
echo '<p>Pour retournez à la page d\'accueil cliquez <a href="/index.php">ici</a>.</p>';
}
else //S'il ne retrouve pas le pseudo il affichera le message suivant
{
echo '<p>Un problème est survenu, il est possible que vous ne soyez pas inscrit ou que l\'adresse est fausse ou que vous êtes déjà validé !.</p>';
}
mysql_close($base);
?>

Eléphanteau du PHP | 39 Messages

22 oct. 2011, 19:29

oui le message est bien envoyé mais il m'affiche,quand je clique sur le mail de confirmation ce qu'il y a dans le code de la page de confirmation, le pseudo n'est pas retrouvé...(vers la fin dans le script de la page confirm)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

22 oct. 2011, 19:44

S'il t'affiche le message d'erreur, c'est que $data['nb'] n'est pas égal à 1 ... affiche la requête que tu génères, et regarde si elle est correcte et ce qu'elle retourne quand tu l'exécutes directement sur mysql :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 39 Messages

22 oct. 2011, 20:04

merci ryle mais je suis débutant , donc comment je fais?:)

Eléphanteau du PHP | 39 Messages

22 oct. 2011, 20:20

en fait il ne m'affiche rien du tout quand j'ai rempli les champs et que je valide l'inscription, il devrait normalement ecrire un mail de confirmation vient de vous etre envoyer ....

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 oct. 2011, 20:22

tu ne connais pas echo ?

donc echo $search; pour afficher la requête et voir si elle correspond à ce que tu attends.

Après tu peux utiliser la console mysql ou phpmyadmin (voir sur google pour plus d'info).

Tu devrais utiliser mysql_real_escape_string pour protèger tes requetes.

Le code que tu indique n'affiche pas de message indiquant l'envoi d'un mail ...

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 39 Messages

22 oct. 2011, 20:46

j'ai bien compris tout ca, mon site est deja en ligne.......
mais il n'affiche rien car il y a une erreur quuelque part mais je ne sais pas ou

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

22 oct. 2011, 21:25

Et si tu remplaces ta balises initiale " <? " par un " <?php " ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

besoin_daidee
Invité n'ayant pas de compte PHPfrance

23 oct. 2011, 00:00

ca y est ca marche :)
juste une autre question:
en dessous du script,on m'a dit de mettre
session_start();
require("conf.php3"); je n'ai pas compris a quoi sert la 2eme ligne(ni la première dailleurs vu que l'utilisateur ne peut etre logué puisqu'il n'est pas inscrit..)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

23 oct. 2011, 14:10

Il en faut peu pour être heureux ......

besoin_daidee
Invité n'ayant pas de compte PHPfrance

23 oct. 2011, 16:47

require ok mais je vulais savoir ce qu'était conf.php3 et a quoi ca servait?