Pb php création d'un formulaire acces reservé
kacem25
-
kacemel Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
kacemel Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voilà depuis peu je me suis décidé de me mettre au php et mysql donc pour débuter je me suis acheter "PHP & MySQL pour les nuls"( livre critiquable sur bien des points), et je me suis lancé sur la réalisation d'un site web a accés réservé, et là je me suis heurté à un problème.
Mes formulaires créés, je les essais, je remplis les champs identifiant et mots de passe et valide en cliquant sur identifiez-vous j'ai le message d'erreur " Requête 1 en échec" et quand je remplis le formulaire et que je clique sur inscrivez-vous j'ai le message "Requête SELECT en échec case new" Je pense que je n'arrive pas à me connecter à la base de donner et j'ai essayé different truc que j'ai chopé dans les forum mais rien n'y fait. Mais pour être plus claire je vous poste le script. Si quelqu'un pouvait m'aider sa serait super sympa. Merci.
<?php
/* Programme :Login.php
* Description :Programme de login pour la section à accés réservé
* de l'animalerie. Il propose deux options :
* 1 - s'identifier par uin coupe de login/mot de passe
* 2 - créer un cnouveau compte
* Identificateurs et mots de passe sont conservés
* Dans une base de données MySQL.
*/
session_start();
include(chiens.inc);
switch (@$_POST['do'])
{
case "login";
$cxn = mysqli_connect($host, $user, $password, $memberdirectory)
or die("connexion impossible dans la case login");
$sql = "SELECT loginName FROM member WHERE loginName='$_POST[fusername]'";
$result = mysqli_query($cxn,$sql)
or die("Requête 1 en échec");
$num = mysqli_num_rows($result);
if($num > 0 ) // logiName non trouvé
{
$sql = "SELECT loginName FROM Member
WHERE loginName='$_POST[fusername]'
AND password=md5 ('$_POST[fpassword]')";
$result2 = mysqli_query($cxn, $sql)
or die ("Requête en échec 2.");
$num2 = mysqli_num_rows($result2);
if ($num2 > 0) // Mot de passe OK
{
$_SESSION['auth']="yes";
$logname=$_POST['fusername'];
$_SESSION['logname'] = $logname;
$today= date("Y-m-d h:i:s");
$sql= "INSERT INTO Login (loginName, loginTime)
VALUES ('$logname', '$today')";
$result = mysqli_query ($cxn, $sql)
or die ("INSERT en échec.");
header("Location: membre_page.php"); /***** *****/
}
else // mot de passe incorrect
{
$message="le nom de login '$_POST(fusername]'
existe mais le mot de passe
ne va pas ! Réessayez encore.<br>";
include("login_form.inc") ;
}
}
elseif ($num == 0 ) // Nom de logion introuvable
{
$message = "Le nom du login que vous avez saisi
n'existe pas ! Réessayez. <br>";
$include("login_form.inc");
}
break;
case "new":
/*Recherche de champs vide*/
foreach($_POST as $field => $value)
{
if ($field !="fax")
{
if ($value == "")
{
$blanks[] = $field;
}
}
}
if(isset($blanks))
{
$message_new = " Champs non saisis. Veuillez les
renseigner: ";
foreach($blanks as $value)
{
$message_new .= "$value, ";
}
extract($_POST);
include("login_form.inc");
exit();
}
/* Validation des données */
foreach($_POST as $field => $value)
{
if(!empty($value))
{
if(eregi("name",$field) and
!eregi("login",$field))
{
if (!ereg("^[A-Za-z' -]{1,50}$",$value))
{
$errors[]= "$value n'est pas un nom valide.";
}
}
if(eregi("street",$field) or
eregi("addr",$field) or eregi("city", $field))
{
if (!ereg("^[A-Za-z0-9.,' -]{1,50}$",$value))
{
$errors[]= "$value est incorrect.";
}
}
if(eregi("state",$field))
{
if (!ereg("[A-Za-z]{2}",$value))
{
$errors[]= "$value est refusé pour state.";
}
}
if(eregi("email",$field))
{
if (!ereg("^.+@.+\\..+$",$value))
{
$errors[]= "$value est refusé comme mail.";
}
}
/* if(eregi("zip",$field)
{
if (!ereg("^[0-9]{5,5}(\-[0-9){4-'))?$",$value))
{
$errors[]= "$value nest pas un code postal valide.";
}
}
if(eregi("phone",$field)
or eregi("fax",$field))
{
if (!ereg("^([0-9])(xX -]{7,20}$",$value))
{
$errors[]= "$value n'est pas un numéro de telephone";
}
}
*/
}// fin de if empty
} // fin de foreach
if(@is_array($errors))
{
$message_new = "";
foreach($errors as $value)
{
$message_new .= $value. " Réessayer<br/>";
}
extract($_POST);
include("login_form.inc");
exit();
}
/* nettoyage des données */
$cxn = mysqli_connect($host, $user, $password, $memberdirectory);
foreach($_POST as $field => $value)
{
if($field != "Button" and $field != "do")
{
if($field == "password")
{
$Password = strip_tags(trim($value));
}
else
{
$fields[]=$field;
$value = strip_tags(trim($value));
$values[] = mysqli_real_escape_string($cxn, $value);
$$field = $value;
}
}
}
/* Le nom de login existe-t-il déjà ? */
$sql = "SELECT loginName FROM Member WHERE loginName = '$loginName'";
$result = mysqli_query($cxn,$sql)
or die ("Requête SELECT en échec case new.");
$num = mysqli_num_rows($result);
if ($num > 0)
{
$message_new = "$loginName existe déjà. Choississez-en un autre.";
include("login_form.inc");
exit();
}
/*Ajout d'un nouveau membre */
else{
$today = date ("Y-m-d");
$field_str = implode(",",$fields);
$values_str = implode('","',$values);
$field_str .=",createDate";
$values_str .='"'.",".'"' .$today;
$fields_str .=",password";
$values_str .='"'.","."md5"."('".$password."')";
$sql = "INSERT INTO Member";
$sql .="(".$fields_str.")";
$sql .="VALUES ";
$sql .="(".'"'.$values_str.")";
$result = mysqli_query($cxn,$sql)
or die ("requête INSERT en échec.");
$_SESSION['auth']="yes";
$_SESSION['logname']="loginName";
/* Envoyer un email au nouveau mot de passe */
$emess = "Un nouveau compte membre vient d'être créer.";
$emess .= "votre identifiant et votre mot de passe sont : ";
$emess .= "\n\n\t$password\n\n";
$emess .= "Nous apprécions l'intérêt que vous portez à notre animalerie.\n\n";
$emess .= "Si vous avez des questions à poser, vous pouvez";
$emess .= "envoyer un e-mail à webmaster@animalerie.com";
$ehead .= "From: member-desk@animalerie.com\r\n";
$subj = "votre nouveau compte à l'animalerie";
$mailsnd =mail("$email", "$subj", "$emess", "$ehead");
header("Location: Nouveau_membre.php");
}
break;
default;
include("login_form.inc");
}
?>
Voilà depuis peu je me suis décidé de me mettre au php et mysql donc pour débuter je me suis acheter "PHP & MySQL pour les nuls"( livre critiquable sur bien des points), et je me suis lancé sur la réalisation d'un site web a accés réservé, et là je me suis heurté à un problème.
Mes formulaires créés, je les essais, je remplis les champs identifiant et mots de passe et valide en cliquant sur identifiez-vous j'ai le message d'erreur " Requête 1 en échec" et quand je remplis le formulaire et que je clique sur inscrivez-vous j'ai le message "Requête SELECT en échec case new" Je pense que je n'arrive pas à me connecter à la base de donner et j'ai essayé different truc que j'ai chopé dans les forum mais rien n'y fait. Mais pour être plus claire je vous poste le script. Si quelqu'un pouvait m'aider sa serait super sympa. Merci.
<?php
/* Programme :Login.php
* Description :Programme de login pour la section à accés réservé
* de l'animalerie. Il propose deux options :
* 1 - s'identifier par uin coupe de login/mot de passe
* 2 - créer un cnouveau compte
* Identificateurs et mots de passe sont conservés
* Dans une base de données MySQL.
*/
session_start();
include(chiens.inc);
switch (@$_POST['do'])
{
case "login";
$cxn = mysqli_connect($host, $user, $password, $memberdirectory)
or die("connexion impossible dans la case login");
$sql = "SELECT loginName FROM member WHERE loginName='$_POST[fusername]'";
$result = mysqli_query($cxn,$sql)
or die("Requête 1 en échec");
$num = mysqli_num_rows($result);
if($num > 0 ) // logiName non trouvé
{
$sql = "SELECT loginName FROM Member
WHERE loginName='$_POST[fusername]'
AND password=md5 ('$_POST[fpassword]')";
$result2 = mysqli_query($cxn, $sql)
or die ("Requête en échec 2.");
$num2 = mysqli_num_rows($result2);
if ($num2 > 0) // Mot de passe OK
{
$_SESSION['auth']="yes";
$logname=$_POST['fusername'];
$_SESSION['logname'] = $logname;
$today= date("Y-m-d h:i:s");
$sql= "INSERT INTO Login (loginName, loginTime)
VALUES ('$logname', '$today')";
$result = mysqli_query ($cxn, $sql)
or die ("INSERT en échec.");
header("Location: membre_page.php"); /***** *****/
}
else // mot de passe incorrect
{
$message="le nom de login '$_POST(fusername]'
existe mais le mot de passe
ne va pas ! Réessayez encore.<br>";
include("login_form.inc") ;
}
}
elseif ($num == 0 ) // Nom de logion introuvable
{
$message = "Le nom du login que vous avez saisi
n'existe pas ! Réessayez. <br>";
$include("login_form.inc");
}
break;
case "new":
/*Recherche de champs vide*/
foreach($_POST as $field => $value)
{
if ($field !="fax")
{
if ($value == "")
{
$blanks[] = $field;
}
}
}
if(isset($blanks))
{
$message_new = " Champs non saisis. Veuillez les
renseigner: ";
foreach($blanks as $value)
{
$message_new .= "$value, ";
}
extract($_POST);
include("login_form.inc");
exit();
}
/* Validation des données */
foreach($_POST as $field => $value)
{
if(!empty($value))
{
if(eregi("name",$field) and
!eregi("login",$field))
{
if (!ereg("^[A-Za-z' -]{1,50}$",$value))
{
$errors[]= "$value n'est pas un nom valide.";
}
}
if(eregi("street",$field) or
eregi("addr",$field) or eregi("city", $field))
{
if (!ereg("^[A-Za-z0-9.,' -]{1,50}$",$value))
{
$errors[]= "$value est incorrect.";
}
}
if(eregi("state",$field))
{
if (!ereg("[A-Za-z]{2}",$value))
{
$errors[]= "$value est refusé pour state.";
}
}
if(eregi("email",$field))
{
if (!ereg("^.+@.+\\..+$",$value))
{
$errors[]= "$value est refusé comme mail.";
}
}
/* if(eregi("zip",$field)
{
if (!ereg("^[0-9]{5,5}(\-[0-9){4-'))?$",$value))
{
$errors[]= "$value nest pas un code postal valide.";
}
}
if(eregi("phone",$field)
or eregi("fax",$field))
{
if (!ereg("^([0-9])(xX -]{7,20}$",$value))
{
$errors[]= "$value n'est pas un numéro de telephone";
}
}
*/
}// fin de if empty
} // fin de foreach
if(@is_array($errors))
{
$message_new = "";
foreach($errors as $value)
{
$message_new .= $value. " Réessayer<br/>";
}
extract($_POST);
include("login_form.inc");
exit();
}
/* nettoyage des données */
$cxn = mysqli_connect($host, $user, $password, $memberdirectory);
foreach($_POST as $field => $value)
{
if($field != "Button" and $field != "do")
{
if($field == "password")
{
$Password = strip_tags(trim($value));
}
else
{
$fields[]=$field;
$value = strip_tags(trim($value));
$values[] = mysqli_real_escape_string($cxn, $value);
$$field = $value;
}
}
}
/* Le nom de login existe-t-il déjà ? */
$sql = "SELECT loginName FROM Member WHERE loginName = '$loginName'";
$result = mysqli_query($cxn,$sql)
or die ("Requête SELECT en échec case new.");
$num = mysqli_num_rows($result);
if ($num > 0)
{
$message_new = "$loginName existe déjà. Choississez-en un autre.";
include("login_form.inc");
exit();
}
/*Ajout d'un nouveau membre */
else{
$today = date ("Y-m-d");
$field_str = implode(",",$fields);
$values_str = implode('","',$values);
$field_str .=",createDate";
$values_str .='"'.",".'"' .$today;
$fields_str .=",password";
$values_str .='"'.","."md5"."('".$password."')";
$sql = "INSERT INTO Member";
$sql .="(".$fields_str.")";
$sql .="VALUES ";
$sql .="(".'"'.$values_str.")";
$result = mysqli_query($cxn,$sql)
or die ("requête INSERT en échec.");
$_SESSION['auth']="yes";
$_SESSION['logname']="loginName";
/* Envoyer un email au nouveau mot de passe */
$emess = "Un nouveau compte membre vient d'être créer.";
$emess .= "votre identifiant et votre mot de passe sont : ";
$emess .= "\n\n\t$password\n\n";
$emess .= "Nous apprécions l'intérêt que vous portez à notre animalerie.\n\n";
$emess .= "Si vous avez des questions à poser, vous pouvez";
$emess .= "envoyer un e-mail à webmaster@animalerie.com";
$ehead .= "From: member-desk@animalerie.com\r\n";
$subj = "votre nouveau compte à l'animalerie";
$mailsnd =mail("$email", "$subj", "$emess", "$ehead");
header("Location: Nouveau_membre.php");
}
break;
default;
include("login_form.inc");
}
?>
A voir également:
- Pb php création d'un formulaire acces reservé
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Acces rapide - Guide
- Creation compte gmail - Guide
- Création site web - Guide
19 réponses
ne poste pas toutes les requetes!!!! si sa marque Requete 1 en echec , c'est pas pour rien
je te cite;
$sql = "SELECT loginName FROM member WHERE loginName='$_POST[fusername]'";
$result = mysqli_query($cxn,$sql)
or die("Requête 1 en échec");
essaye de remplacer '$_POST[fusername]''' par '$user[username]'
si sa marche pas remplace les 'blablabla' par "blablabla"
bye
PS; ton site aura plein de failles exploitables par les hackers
je te cite;
$sql = "SELECT loginName FROM member WHERE loginName='$_POST[fusername]'";
$result = mysqli_query($cxn,$sql)
or die("Requête 1 en échec");
essaye de remplacer '$_POST[fusername]''' par '$user[username]'
si sa marche pas remplace les 'blablabla' par "blablabla"
bye
PS; ton site aura plein de failles exploitables par les hackers
Merci ninjainpyjama pour ta réponse
En effectant les modification que tu m'as proposé j'ai cela en message d'erreur :
Warning: include(chiensinc) [function.include]: failed to open stream: No such file or directory in C:\wamp\www\login.php on line 11
Warning: include() [function.include]: Failed opening 'chiensinc' for inclusion (include_path='.;C:\php5\pear') in C:\wamp\www\login.php on line 11
Warning: mysqli_connect() [function.mysqli-connect]: (28000/1045): Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\login.php on line 15
connexion impossible dans la case login
PS : J'ai bien du mal à faire un simple formulaire donc je pense bien qu'il y a plein de faille
En effectant les modification que tu m'as proposé j'ai cela en message d'erreur :
Warning: include(chiensinc) [function.include]: failed to open stream: No such file or directory in C:\wamp\www\login.php on line 11
Warning: include() [function.include]: Failed opening 'chiensinc' for inclusion (include_path='.;C:\php5\pear') in C:\wamp\www\login.php on line 11
Warning: mysqli_connect() [function.mysqli-connect]: (28000/1045): Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\login.php on line 15
connexion impossible dans la case login
PS : J'ai bien du mal à faire un simple formulaire donc je pense bien qu'il y a plein de faille
ouais j'ai vu la faille union , la faille 'injection SQL", et la faille include, et peut etre la faille .htaccess et au fait met un maxlength pour tes logins et tes mot de passes sinon on peut faire crasher ton serveur :
bon sa peut se regler plus tard
Passons au code: waou!!!c'est pas facile. Attends je cherche. des que j'ai du nouveau je te le dit
bon sa peut se regler plus tard
Passons au code: waou!!!c'est pas facile. Attends je cherche. des que j'ai du nouveau je te le dit
Bonjour,
excuse moi, en faisant différentes manipulations j'avais enlever les guillemets dans include("chiens.inc") et j'ai oublié de les remettres avec ta modification le problémes reste le même toujours Requête 1 en échec.
excuse moi, en faisant différentes manipulations j'avais enlever les guillemets dans include("chiens.inc") et j'ai oublié de les remettres avec ta modification le problémes reste le même toujours Requête 1 en échec.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Alors c'est grave docteur, je t'aurais bien envoyé les pages du bouquin mais je ne sait pas si c'est autorisé dans le forum.
Alors c'est grave docteur, je t'aurais bien envoyé les pages du bouquin mais je ne sait pas si c'est autorisé dans le forum.
Re
J'ai retapé tout le code en enlevant le i dans mysqli_xxx et apporté d'autre modif (je crois que je suis passé de php5 à php4) en m'aidant d'internet cela a résolu mon probléme mais à ouvert la porte à d'autre problème. Maintenant quand je remplis le formulaire j'ai le message suivant 452 : Cannot add or update a child row: a foreign key constraint fails (`membresseuls/membre`, CONSTRAINT `membre_ibfk_1` FOREIGN KEY (`nomLogin`) REFERENCES `login` (`nomLogin`))
J'ai retapé tout le code en enlevant le i dans mysqli_xxx et apporté d'autre modif (je crois que je suis passé de php5 à php4) en m'aidant d'internet cela a résolu mon probléme mais à ouvert la porte à d'autre problème. Maintenant quand je remplis le formulaire j'ai le message suivant 452 : Cannot add or update a child row: a foreign key constraint fails (`membresseuls/membre`, CONSTRAINT `membre_ibfk_1` FOREIGN KEY (`nomLogin`) REFERENCES `login` (`nomLogin`))
ouais je voulais te dire que le "i" mysqli etait bizarre : j'ai jamais fait de requete SQL avec un i ; si c'est ton bouquin qui dit sa , c'est un peu de la merde : j'ai pas pu, j'étais ds un bon film et je me suis endormi dc j'ai pas pu t'aider
Ps;Kacemel= Kacem25 ou pas???
Edit : chui au lycée dc j'ai pas forcément le tps de toujours réflechir a ta question
@+
Ps;Kacemel= Kacem25 ou pas???
Edit : chui au lycée dc j'ai pas forcément le tps de toujours réflechir a ta question
@+
c'est simple :si tu passe de php5 a php4 faut que tu fasses tout en php4 car php4 est different de php5
"Cannot add or update etc...." veut dire que tu as encore ce bout de code en php5 et non pas en php4
Bye j'espere que j'ai pu t'aider
"Cannot add or update etc...." veut dire que tu as encore ce bout de code en php5 et non pas en php4
Bye j'espere que j'ai pu t'aider
Salut,
kacemel=kacem25
En faite i dans mysqli c'est pour php 5, je m'etais dis si je devais apprendre le php autant que cela soit le 5 soit le dernier.
kacemel=kacem25
En faite i dans mysqli c'est pour php 5, je m'etais dis si je devais apprendre le php autant que cela soit le 5 soit le dernier.
Helloo!
les plus nouveaux sont souvent les plus compliques et pas toujours les plus efficaces
Bienvenue sur comment ca marche!!!
Finalement, t'arrive a coder ou t'y arrive pas
Bye
les plus nouveaux sont souvent les plus compliques et pas toujours les plus efficaces
Bienvenue sur comment ca marche!!!
Finalement, t'arrive a coder ou t'y arrive pas
Bye
Salut,
Je te remercie de ta fidélité, je pense que mon script est bon mais la fonction mail ne fonctionne pas. Je teste ma page sur un serveur local et j'ai lu sur un site que pour la fonction email il fallait modifier : <<SMTP = localhost>> par le veritable smtp qui pour mon cas donnerais
<<SMTP= smpt.orange.fr>> mais sa ne marche pas j'ai du oublier quelque chose.
Je te remercie de ta fidélité, je pense que mon script est bon mais la fonction mail ne fonctionne pas. Je teste ma page sur un serveur local et j'ai lu sur un site que pour la fonction email il fallait modifier : <<SMTP = localhost>> par le veritable smtp qui pour mon cas donnerais
<<SMTP= smpt.orange.fr>> mais sa ne marche pas j'ai du oublier quelque chose.
Dans un premier temps j'avais laisser localhost mais sa me mettait : Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\Login.php on line 215
Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\Login.php:215) in C:\wamp\www\Login.php on line 216
et en changeant le smtp dans le dossier php et appache deWAMP5 sa me fait la meme chose. As tu une idée ?
Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\Login.php:215) in C:\wamp\www\Login.php on line 216
et en changeant le smtp dans le dossier php et appache deWAMP5 sa me fait la meme chose. As tu une idée ?
verifie ton port SMTP; <<SMTP=smtp.orange.fr>> et <<smtp_port=quelquchose>>
le qqch serait peut-etre le port 80 (port http); je sais pas du tout si sa va marcher mais bon essaye les ports 21 et 80
EDIT; peut-etre que ta valeur "$value" est pas la bonne
le qqch serait peut-etre le port 80 (port http); je sais pas du tout si sa va marcher mais bon essaye les ports 21 et 80
EDIT; peut-etre que ta valeur "$value" est pas la bonne
je te dis sa paske le port des mails est le port 25
si sa marche pas ce qui est en haut, essaye <<smtp_port = 25>> mais tu change la $value
et puis met <<SMTP = smtp.orange.fr>>
si sa marche pas ce qui est en haut, essaye <<smtp_port = 25>> mais tu change la $value
et puis met <<SMTP = smtp.orange.fr>>