Pb php création d'un formulaire acces reservé

Fermé
kacem25 - 18 nov. 2007 à 17:17
kacemel Messages postés 6 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 - 20 nov. 2007 à 19:51
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");
}
?>
A voir également:

19 réponses

ninjainpyjama Messages postés 89 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 22 novembre 2007 1
18 nov. 2007 à 17:25
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
0
kacemel Messages postés 6 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007
18 nov. 2007 à 17:51
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
0
ninjainpyjama Messages postés 89 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 22 novembre 2007 1
18 nov. 2007 à 17:56
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
0
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ninjainpyjama Messages postés 89 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 22 novembre 2007 1
18 nov. 2007 à 18:14
excuse j'avais pas vu ton erreur bon plu ka repartir chercher
0
ninjainpyjama Messages postés 89 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 22 novembre 2007 1
18 nov. 2007 à 18:18
Nooooon!! j'ai regarde de plus pres ton code=>toutes tes requetes sont en echec
0
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.
0
kacemel Messages postés 6 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007
18 nov. 2007 à 20:39
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`))
0
ninjainpyjama Messages postés 89 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 22 novembre 2007 1
19 nov. 2007 à 11:11
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
@+
0
ninjainpyjama Messages postés 89 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 22 novembre 2007 1
19 nov. 2007 à 11:18
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
0
kacemel Messages postés 6 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007
19 nov. 2007 à 15:21
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.
0
ninjainpyjama Messages postés 89 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 22 novembre 2007 1
19 nov. 2007 à 19:01
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
0
kacemel Messages postés 6 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007
19 nov. 2007 à 19:32
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.
0
ninjainpyjama Messages postés 89 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 22 novembre 2007 1
19 nov. 2007 à 19:51
sur un serveur local ;mmmhh.. essaye de laisser localhost
0
kacemel Messages postés 6 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007
19 nov. 2007 à 19:57
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 ?
0
ninjainpyjama Messages postés 89 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 22 novembre 2007 1
19 nov. 2007 à 22:30
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
0
ninjainpyjama Messages postés 89 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 22 novembre 2007 1
20 nov. 2007 à 09:33
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>>
0
ninjainpyjama Messages postés 89 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 22 novembre 2007 1
20 nov. 2007 à 12:27
bah alors ,tu dors? lol
0
kacemel Messages postés 6 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007
20 nov. 2007 à 19:51
Salut,

Hé oui, je suis démasqué le soir je dort lol.

Je ne trouve pas le smtp_port le fichier php.ini et quand je fais la recherche le seule smtp qu'il me trouve c'est celle que j'ai déja modifier.
0