8797 sujets

Développement web côté serveur, CMS

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>

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);
?>
Salut,

j'ai regardé ton code. voila mes remarques:

ton code pourrait marcher si ta condition qui vérifie les champs saisie n'était pas à l'envers.
tu mets un message d'erreur si les gens ont bien saisie les données. tu peux l'inverser avec un ! autour du tout.

sauf que le message d'erreur ne s'affichera pas car tu n'affiches que $message2 à la fin.

utilises jusque une variable pour tes messages c'est + simple.

-mysql_connect () sans argument?
mysql_select_db('',$base) '' comme nom de base?

erreur de ta part ou confidentialité vis a vis du post?

enfin tu utilises htmlentities et addslashes a donf. a mes débuts je le faisais aussi mais finalement bof bof.

pour la sécurité ce n'est pas adapté. regardes plutôt des fonctions comme mysql_real_escape_string.

le htmlenties sur le mail ne servira a rien vu que ton preg_match vérifie qu'il ne contient aucun caractères qui sortent des clous.

et puis un htmlentities sur un password???
ton utilisateur va-t-il deviner que son é dans son mot de passe doit se taper &eacute; pour se connecter?

voila bon courage,
Pascal
Modifié par CPascal (22 Oct 2011 - 00:41)
oui confidentialité. Smiley cligne
j'ai pas trop compris a quoi sert addslashes n me l'a conseilllé,a part ca il n' y a pas d'autre erreur dans le code?
ca y est ca marche Smiley smile
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