ruoyu Posté 12 Mars 2010 Posté 12 Mars 2010 Bonjour, J'ai un problème, j'ai fais un script de vérification pour une inscription, il marche impec. Mais genre si je modifie dans le lien une des valeurs, le script s'exécute quand meme et insère dans la base de donnée une ligne vide. Comment remédier à ca ? Merci d'avance Mon code source : <?phpsession_start();$titre = "Vérification de votre inscription";$description = "Vérification de votre inscription";include("includes/haut.php");include("includes/info.php");mysql_connect($adresse, $nom, $motdepasse);mysql_select_db($database); if (isset($_GET['id']) AND isset($_GET['action']) AND $_GET['action'] == "yes" AND isset($_GET['d']) AND strlen($_GET['d'] != 40)){$id = (int) $_GET['id'];$d = mysql_real_escape_string($_GET['d']);$quete = mysql_query("SELECT * FROM validation WHERE id_client='{$id}'");$connexion = mysql_fetch_array($quete); if ($d = sha1($connexion['email'])){$id = $connexion['id_client'];$civilite = $connexion['civilite'];$adresse = $connexion['adresse'];$ville = $connexion['ville'];$codepostal = $connexion['codepostal'];$email = $connexion['email'];$mdp = $connexion['mdp'];$nomprenom = $connexion['nomprenom'];$telephone = $connexion['telephone'];$telecopie = $connexion['telecopie'];$portable = $connexion['portable'];$jour = $connexion['jour_naissance'];$mois = $connexion['mois_naissance'];$annees = $connexion['annees_naissance'];$entreprise = $connexion['entreprise'];$to = $email;$array = explode(' ', $nomprenom);$nom = $array[0];$prenom = $array[1];mysql_query('INSERT INTO client(id_client, civilite, nomprenom, adresse, ville, codepostal, email, mdp, telephone, portable, telecopie, jour_naissance, mois_naissance, annees_naissance, entreprise) VALUES ("'.$id.'" , "'.$civilite.'" , "'.$nomprenom.'" , "'.$adresse.'" , "'.$ville.'" , "'.$codepostal.'", "'.$email.'" , "'.$mdp.'" , "'.$telephone.'" , "'.$portable.'" , "'.$telecopie.'", "'.$jour.'", "'.$mois.'", "'.$annees.'", "'.$entreprise.'") ') or die(mysql_error());mysql_query('INSERT INTO livraison (id_client, adr_liv_1, code_liv_1, ville_liv_1, nom_1, prenom_1, entreprise_1) VALUES ("'.$id.'", "'.$adresse.'", "'.$codepostal.'", "'.$ville.'", "'.$nom.'", "'.$prenom.'", "'.$entreprise.'" ) ') or die(mysql_error());mysql_query('INSERT INTO facturation (id_client, nom, prenom, adresse, code, ville, entreprise) VALUES ("'.$id.'", "'.$nom.'", "'.$prenom.'", "'.$adresse.'", "'.$codepostal.'", "'.$ville.'", "'.$entreprise.'" ) ') or die(mysql_error());mysql_query("DELETE FROM validation WHERE id_client='$id'"); echo ' Merci '.stripslashes(htmlspecialchars($nomprenom)).'. Votre inscription est maintenant finalisée. <br/> Vous pouvez maintenant utiliser votre compte .';}else{ echo' Vous devez d\'abord vous inscrire.';}}else{ echo' Vous avez dû vous tromper de page, <a href="./index.php">cliquez-ici pour retournez à l\'accuel</a>';}include("includes/bas.php");?>
Luan Posté 13 Mars 2010 Posté 13 Mars 2010 (modifié) Bonjour, J'ai testé ta première condition qui, comme tu l'as dit, fonctionne à merveille. J'ai essayé de mettre une autre valeur que yes dans ?action= et ça m'a bloqué le script. Que souhaites-tu vérifier au juste ? Cependant, il y a une erreur dans la seconde... Dans ton code: if($d = sha1($connexion['email'])) Le signe d'égalité n'est pas un simple = mais == (erreur courante que je fais très souvent ). Voilà le code corrigé. <?phpsession_start();$titre = "Vérification de votre inscription";$description = "Vérification de votre inscription";include("includes/haut.php");include("includes/info.php");mysql_connect($adresse, $nom, $motdepasse);mysql_select_db($database);if (isset($_GET['id']) AND isset($_GET['action']) AND $_GET['action'] == "yes" AND isset($_GET['d']) AND strlen($_GET['d'] != 40)){ $id = (int) $_GET['id']; $d = mysql_real_escape_string($_GET['d']); $quete = mysql_query("SELECT * FROM validation WHERE id_client='{$id}'"); $connexion = mysql_fetch_array($quete); if($d == sha1($connexion['email'])) { $id = $connexion['id_client']; $civilite = $connexion['civilite']; $adresse = $connexion['adresse']; $ville = $connexion['ville']; $codepostal = $connexion['codepostal']; $email = $connexion['email']; $mdp = $connexion['mdp']; $nomprenom = $connexion['nomprenom']; $telephone = $connexion['telephone']; $telecopie = $connexion['telecopie']; $portable = $connexion['portable']; $jour = $connexion['jour_naissance']; $mois = $connexion['mois_naissance']; $annees = $connexion['annees_naissance']; $entreprise = $connexion['entreprise']; $to = $email; $array = explode(' ', $nomprenom); $nom = $array[0]; $prenom = $array[1]; mysql_query('INSERT INTO client(id_client, civilite, nomprenom, adresse, ville, codepostal, email, mdp, telephone, portable, telecopie, jour_naissance, mois_naissance, annees_naissance, entreprise) VALUES ("'.$id.'" , "'.$civilite.'" , "'.$nomprenom.'" , "'.$adresse.'" , "'.$ville.'" , "'.$codepostal.'", "'.$email.'" , "'.$mdp.'" , "'.$telephone.'" , "'.$portable.'" , "'.$telecopie.'", "'.$jour.'", "'.$mois.'", "'.$annees.'", "'.$entreprise.'") ') or die(mysql_error()); mysql_query('INSERT INTO livraison (id_client, adr_liv_1, code_liv_1, ville_liv_1, nom_1, prenom_1, entreprise_1) VALUES ("'.$id.'", "'.$adresse.'", "'.$codepostal.'", "'.$ville.'", "'.$nom.'", "'.$prenom.'", "'.$entreprise.'" ) ') or die(mysql_error()); mysql_query('INSERT INTO facturation (id_client, nom, prenom, adresse, code, ville, entreprise) VALUES ("'.$id.'", "'.$nom.'", "'.$prenom.'", "'.$adresse.'", "'.$codepostal.'", "'.$ville.'", "'.$entreprise.'" ) ') or die(mysql_error()); mysql_query("DELETE FROM validation WHERE id_client='$id'"); echo ' Merci '.stripslashes(htmlspecialchars($nomprenom)).'. Votre inscription est maintenant finalisée. <br/> Vous pouvez maintenant utiliser votre compte .'; } else { echo' Vous devez d\'abord vous inscrire.'; }}else{ echo 'Vous avez dû vous tromper de page, <a href="./index.php">cliquez-ici pour retournez à l\'accuel</a>';}include("includes/bas.php");?> J'espère n'avoir rien raté d'autre... Luan. PS: Pense à indenter ton code... ça aide. Modifié 13 Mars 2010 par Luan
ruoyu Posté 13 Mars 2010 Auteur Posté 13 Mars 2010 (modifié) Alors pour l'indentation c'est quel bouton qu'il faut utiliser, c'est bien lui ["code] Alors je souhaite vérifier le $d, le $d c'est en faite le sha1 de l'email. Ok merci beaucoup pour l'aide. Modifié 13 Mars 2010 par damienmou
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant