Formulaire d'inscription de membre auteur Krozone [Résolu]

Signaler
Messages postés
56
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
3 avril 2006
-
Messages postés
56
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
3 avril 2006
-
Bonjour,

J'ai téléchargé et mis sur mon site le formulaire d'inscription de Krozone.

L'installation s'est bien déroulée. mais j'ai le probléme suivant::

Lorsque j'ouvre la page sécurisée, il faut que je mette mon login et mot de passe ou bien que je m'inscrive jusque là OK, je m'inscrit OK, je recois l'email de confirmation OK.
Mais lorsque je clique sur le lien de confirmation ce message apparait:
Ce code n'existe pas, est expiré ou à déjà été validé, veuillez remplir à nouveau le formulaire : ICI.
Et la table "users" de la bd est vide.

D'où vient le problème.
Merci pour votre aide.

12 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
$query = "INSERT INTO boutique_users VALUES
('$nom',$prenom,$n_adherent,$adresse,$ville,$cp,$fixe,$portable,'$pass','$uniqueid','en_attente','$email','$heure','$IP')";

la ville est une chaîne non ? de même que le prenom et l'adresse donc essaie ça :

$query = "INSERT INTO boutique_users VALUES
('$nom','$prenom',$n_adherent,'$adresse',$ville,$cp,$fixe,$portable,'$pass','$uniqueid','en_attente','$email','$heure','$IP')";

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
66
Date d'inscription
jeudi 4 août 2005
Statut
Membre
Dernière intervention
16 décembre 2009

Bonsoir,



Alors déjà que la table 'users' qoit vide, je pense que ça peut
s'expliquer par le fait que l'enregistrement se fait après la
confirmation, or si elle marche pas pas d'enregistrement.



Par contre pourquoi ça marche pas. Je sais pas :(



Mizuka
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut,

sans code et sans structure de table on va avoir du mal à t'aider...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
56
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
3 avril 2006

Re bonjour et merci pour vos réponse.

Pour répondre à Misuka effectivement l'enregistrement se fait à la validation par le mail.

la table est structureé comme ceci:
<?
require "../connect.inc";
$query ="CREATE TABLE `users` (
`userid` varchar(20) NOT NULL default '',
`prenom` varchar(20) NOT NULL default '',
`n_adherent` varchar(20) NOT NULL default '',
`adresse` varchar(20) NOT NULL default '',
`ville` varchar(20) NOT NULL default '',
`cp` varchar(20) NOT NULL default '',
`fixe` varchar(20) NOT NULL default '',
`portable` varchar(20) NOT NULL default '',
`password` varchar(20) NOT NULL default '',
`uniqueid` varchar(100) NOT NULL default '',
`level` varchar(20) NOT NULL default '',
`email` varchar(100) NOT NULL default '',
`heure` int(100) NOT NULL default '0',
`IP` varchar(15) NOT NULL default '',
PRIMARY KEY (`userid`)
) TYPE=MyISAM;";


mysql_query($query);

?>

et le formulaire de validation:
<html>
<head>
<title>Enregistrement</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="identification.css" />

</head>

<?php
require "inscription.php";
if (isset($_POST["email"]))
{
// Verification et envoi du mail de confirmation
inscription();
}
else if(isset($_GET["code"]))
{
// Verification du code et blacklistage si besoin
code_check($_GET["code"],$_GET["BL"]);
}
else
{
// Formaulaire d'enregistrement
show_form();
}
?>

</html>

avec le formulaire d'incription:
//------------------------------------------------------
// Fonction Inscription
// - Attribution d'une id unique
// - Tous les champs doivent être remplis
// - Les deux champs passwords doivent être identiques
// - Les champs ne doivent pas contenir d'apostrophe
// - Le login ne doit pas déjà exister
// - Le mail ne doit pas être dans la blackliste
// - Envoi d'un mail avec une adresse de confirmation
//------------------------------------------------------
function inscription()
{
require "connect.inc";
$page=$serveur.$_SERVER["PHP_SELF"];
$nom=$_POST["nom"];
$prenom=$_POST["prenom"];
$n_adherent=$_POST["n_adherent"];
$adresse=$_POST["adresse"];
$ville=$_POST["ville"];
$cp=$_POST["cp"];
$fixe=$_POST["fixe"];
$portable=$_POST["portable"];
$pass=$_POST["pass"];
$pass2=$_POST["pass2"];
$email=$_POST["email"];
$IP=$_SERVER['REMOTE_ADDR'];
$heure=time();


// Attendre qu'il n'y ait pas d'autres user avec le même numéro de session.
do
{
$uniqueid=md5(time());
$resultat = mysql_query("SELECT * FROM boutique_users WHERE uniqueid='$uniqueid'");
}
while(false!=($ligne = mysql_fetch_array($resultat)));


// Vérification diverses et variées.
if($nom=="" || $prenom=="" || $n_adherent=="" || $adresse=="" || $ville=="" || $cp=="" || $fixe=="" || $portable=="" || $pass=="" || $pass2=="" || $email==""){show_form($nom,$prenom,$n_adherent,$adresse,$ville,$cp,$fixe,$portable,$pass,$pass2,$email,'Certains champs ne sont pas remplis !');die();} // Tous les champs doivent être remplis
if($pass!=$pass2){show_form($nom,$prenom,$n_adherent,$adresse,$ville,$cp,$fixe,$portable,$pass,$pass2,$email,'Le mot de passe et la confirmation sont différents.');die();} // Le mot de passe et la confirmation doivent être identiques
if(!(!strrpos($_POST["nom"], "'") && !strrpos($_POST["pass"], "'") && !strrpos($_POST["email"], "'"))){show_form($nom,$pass,$pass2,$email,'Ne pas utiliser de caractères spéciaux');die();} // Eviter les failles SQL
$resultat = mysql_query("SELECT * FROM boutique_users WHERE userid='$nom'");
if(false!=($ligne = mysql_fetch_array ($resultat))){show_form($nom,$prenom,$n_adherent,$adresse,$ville,$cp,$fixe,$portable,$pass,$pass2,$email,"Le membre (".$nom.") existe déjà");die();} // Si le login est déjà pris
$resultat = mysql_query("SELECT * FROM boutique_users WHERE email='$email' AND level='blacklist'");
if(false!=($ligne = mysql_fetch_array ($resultat))){show_form($nom,$prenom,$n_adherent,$adresse,$ville,$cp,$fixe,$portable,$pass,$pass2,$email,"L'adresse e-mail (".$email.") est blacklistée. Utilisez une autre adresse mail.");die();} // Si l'e-mail est dans la blacklist


$subject = "Veuillez confirmer votre inscription";
$headers = "From: [mailto:ne_pas_repondre@adgcp-63.com\n ne_pas_repondre@adgcp-63.com\n]";
$message = "Veuillez confirmer votre inscription\n";
$message .= "Bonjour ".$nom."\n\n";
$message .= "Vous avez reçu ce mail parce que vous ou quelqu'un d'autre utilisant votre adresse mail s'est enregistré sur le site ".$site_name.".\n";
$message .= "Pour valider cet inscription, cliquez sur ce lien :\n ".$page."?code=".$uniqueid."&BL=0 \n";
$message .= "Si vous vous n'êtes pas inscrit sur ".$site_name.", veuillez ignorer ce message et accepter nos excuses.\n";
$message .= "Vous pouvez aussi choisir d'ajouter votre mail à notre blacklist pour ne plus recevoir de mail d'inscription de notre part en cliquant sur ce lien :\n ".$page."?code=".$uniqueid."&BL=1 \n";
$message .= "Votre e-mail a été envoyé de l'IP ".$IP.".\n\n";
$message .= "Cordialement,\n";
$message .= "Le Webmaster";


// Envoi du mail
if(@mail($email, $subject, $message, $headers))
{
$query = "INSERT INTO boutique_users VALUES ('$nom',$prenom,$n_adherent,$adresse,$ville,$cp,$fixe,$portable,'$pass','$uniqueid','en_attente','$email','$heure','$IP')"; // On ajoute le membre à la liste avec le status en attente
mysql_query($query);
mysql_close();


$page_confirmation = "Merci !

Vous devriez recevoir un e-mail à l'adresse suivante : ".$email.".

";
$page_confirmation .= "Veuillez confirmer l'inscription en cliquant sur le lien se trouvant sur le mail.

";
echo $page_confirmation;
}
else
{
show_form($nom,$prenom,$n_adherent,$adresse,$ville,$cp,$fixe,$portable,$pass,$pass2,$email,"Le mail de confirmation n'a pu être envoyé. Peut-être que l'adresse n'est pas valide. Veuillez contacter le webmaster s'il vous plait.");
}
}


//------------------------------------------------------
// Fonction Formulaire
// - Retourne le formulaire avec les messages d'erreurs
//------------------------------------------------------
function show_form($nom="",$pass="",$pass2="",$email="",$error="")
{
$page_inscription = "<form action="".$_SERVER["PHP_SELF"]."" method="post">";
$page_inscription .= "Merci de remplir le formulaire ci-dessous :

";
$page_inscription .= "Nom :

";
$page_inscription .= "Prénom :

";
$page_inscription .= "N° Adhérent :

";
$page_inscription .= "Adresse :

";
$page_inscription .= "Ville :

";
$page_inscription .= "Code Postal :

";
$page_inscription .= "Téléphone Fixe :

";
$page_inscription .= "Téléphone Portable :

";
$page_inscription .= "Mot de passe :

";
$page_inscription .= "Confirmation du mot de passe :</td><td>

";
$page_inscription .= "E-mail :

";
$page_inscription .= "

";
$page_inscription .= "".$error."

";
$page_inscription .= "</form>";
echo $page_inscription;
}


//-------------------------------------------------------------------------------
// Fonction de vérification de l'adresse de confirmation
// - Suppression des utilisateurs n'ayant pas confirmer avant la durée impartie
// - Extraction de la personne concernée
// - Validation de son enregistrement
// - Si l'on veut être blacklisté, après confirmation on effectue le blacklistage
// - Le webmaster recoit un mail lorsque l'inscription est validé
//-------------------------------------------------------------------------------
function code_check($code="",$BL="")
{
require "connect.inc";



$heure=time();


// On profite de l'occasion pour supprimer les users n'ayant pas confirmé dans la durée impartie
$heure2=$heure-$validite;
mysql_query("DELETE FROM boutique_users WHERE heure<$heure2 AND level='en_attente'");


// On extrait la personne qui souhaite valider son inscription
$uniqueid=$code;$resultat mysql_query("SELECT * FROM boutique_users WHERE uniqueid'$uniqueid' AND level='en_attente'");
if(false==($ligne = mysql_fetch_array ($resultat)))
{
mysql_close();
$page_validation = "Ce code n'existe pas, est expiré ou à déjà été validé, veuillez remplir à nouveau le formulaire : [mailto:ne_pas_repondre@adgcp-63.com\n ne_pas_repondre@adgcp-63.com\n]";
@mail($adresse_webmaster, $subject, $message, $headers);
}
}
// Si l'utilisateur vient pour être blacklisté, on passe son level de "en_attente" à "blacklist"
// Mais avant une petite confirmation
if($BL==1)
{
$page_validation = "Vous souhaitez ajouter votre adresse mail à notre blackliste. Cliquez ici pour que vous puissiez confirmer.";
}
// Si l'utilisateur a confirmé qu'il veut être dans la liste noire, on l'y met
if($BL==2)
{
mysql_query("UPDATE boutique_users SET level='blacklist' WHERE uniqueid ='$uniqueid' AND level='en_attente'");
$page_validation = 'Votre e-mail a été blacklisté. Vous ne receverez plus aucun e-mail de notre part.';
}
mysql_close();
}
echo "".$page_validation."

";
}

Exusez si le code est long et merci pour votre aide.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
pfiou..... que c'est long. Tu peux nous le condenser un peu stp ? merci

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
56
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
3 avril 2006

Condensé ce code n'est pas facile car tout se tient. Si j'en enlève un bout cela ne voudra rien dire.

Et c'est bien à la vallidation que cela ne marche pas et je ne trouve pas ou est l'erreur.

Merci de votre aide et de votre patience.
Messages postés
66
Date d'inscription
jeudi 4 août 2005
Statut
Membre
Dernière intervention
16 décembre 2009

En même temps, pour toutes les variables mets des '. C'est plus sûr.

Par contre le script est pas structuré y a des gros tas, donc la flemme de décortiquer ^^
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
c'est plus sûr mais pas indispensable si t'as des types numériques, m'enfin ouais de toute façon je pense pas que ça ralentisse quoi que çe soit ;-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
56
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
3 avril 2006

Bonjour à tous,

La solution a été donné par Anthomicro Effectivement j'avais ouoblié de mettre les quotes au bon endroi maintenant ça marche. Je vous en remercie beaucoup.
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Tu aurais rajouter ' or die( mysql_error() );' et tu aurais eu une erreur de parse :)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
DC02 > en général on valide la ou les réponses qui t'ont aidé à résoudre ton problème, pas ta réponse...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
56
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
3 avril 2006

Milles excuses je recommence et encore merci pour votre aide.