pinkpooky88
-
11 juin 2010 à 15:15
avion-f16
Messages postés19249Date d'inscriptiondimanche 17 février 2008StatutContributeurDernière intervention15 juin 2024
-
11 juin 2010 à 17:28
Bonjour,
j'ai vraiment besoin de votre aide.
j'ai un souci avec mon code pour s'inscrire
<?php
/*Programme: Login.php
Description: Programme de login pour la section à accès réservé de la boutique.
Il propose 2 options: s'identifier
créer un nouveau compte.*/
session_start();
include("inf.php");//on définit la base de données, identifiant
switch (@$_POST['do'])
{
case "login":
$cxn=mysql_connect(SERVER,LOGIN,MDP) or die ('Erreur : '.mysql_error());
mysql_select_db(BDD,$cxn) or die ('Erreur : '.mysql_error());
$sql="SELECT loginName FROM member WHERE loginName='".mysql_real_escape_string($_POST[fusername])."'
AND password='".mysql_real_escape_string($_POST[fpassword])."'";
$result=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error());
$num=mysql_num_rows($result);
if($num>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=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error());
header("Location: Nouveau_membre.php");
}
else // mot de passe incorrect
{
$message="Le nom de Login '$_POST[fusername]' existe, mais le mot de passe ne correspond pas! Réessayez.<br>";
include("login_form.inc");
}
if($num==0)//Nom de longin introuvable
{
$message="Le nom de Login que vous avez saisi n'existe pas. Essayez une nouvelle fois.<br>";
include("login_form.inc");
}
mysql_close();
break;
case"news":
/*Recherche de champs vides.*/
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(ereg("name",$field) and !ereg("login",$field))
{
if(!ereg("^[A-Za-z' -] {1,50} $",$value))
{
$errors[]="$value. n'est pas un nom valide.";
}
}
if(ereg("street",$field) or ereg("addr",$field) or ereg("city",$field))
{
if(!ereg("^[A-Za-z0-9., '-]{1,50}$",$value))
{
$errors[]="$value est incorrect.";
}
}
if(ereg("state",$field))
{
if(!ereg("[A-Za-z]{2}",$value))
{
$errors[]="$value est refusée pour state.";
}
}
if(ereg("email",$field))
{
if(!ereg("^.+@.+\\..+$" ,$value))
{
$errors[]="$value est refusé comme email.";
}
}
if(ereg("zip",$field))
{
if(!ereg("^[0-9]{5,5}(\-[0-9]{4,4})?$",$value))
{
$errors[]="$value n'est pas un zipcode autorisé.";
}
}
}//fin de if empty
}//fin de foreach
if(@is_array($errors))
{
$message_new="";
foreach($errors as $value)
{
$message_new.=$value."Réessayez.<br/>";
}
extract($_POST);
include("login_form.inc");
exit();
}
/*Nettoyage des données*/
$cxn=mysql_connect(SERVER,LOGIN,MDP);
mysql_select_db(BDD,$cxn) or die ('Erreur : '.mysql_error());
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[]=mysql_real_escape_string($value,$cxn);
$field=$value;
}
}
}
/*Le nom de login existe-t-il déjà?*/
$sql="SELECT loginName FROM member WHERE loginName";
$result=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error()."<br /> Requête : $sql");
$num=mysql_num_rows($result);
if($num>0)
{
$message_new="$loginName existe déjà. Choisissez-en un autre.";
include("login_form.inc");
exit();
}
/*Ajout du nouveau membre dans la base.*/
else
{
$today=date("Y-m-d");
$fields_str=implode(",",$fields);
$values_str=implode(",",$values);
$fields_str .=",createDate";
$values_str .='"'.",".'"'.$today;
$fields_str .=",password";
$values_str .='"'.","."md5"."(".$password.")";
$sql="INSERT INTO member ";
$sql .="(".$fields_str .")";
$sql .="VALUES";
$sql .="(".'"'.$value_str . ")";
$result=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error());
$_SESSION['auth']="yes";
$_SESSION['logname']=$loginName;
/*Envoyer un emai au nouveau membre*/
$emess="Un nouveau compte de membre vient d'être créé.";
$emess .="Votre identifiant et votre mot de passe sont:";
$emess .="\n\n\t$loginName\n\t$password\n\n";
$emess .="Nous apprécions l'intérêt que vous portez à notre librairie.\n\n";
$emess .="Si vous avez des questions à poser, vous pouvez envoyer,";
$emess .="un e-mail à contact@honyamanga.fr";//adresse a changer ou modifier
$ehead="From: member-desk@honyamanga.fr\r\n";// adresse a changer
$subj="Votre nouveau compte à la librairie.";
$mailsnd=mail("$email","$subj","$emess","$ehead");
header("Location: Nouveau_membre.php");
}
break;
default:
include("login_form.inc");
}
?>
aucun problème pour s'identifier, mais quand je veux tester la partie s'enregistrer, j'ai cette ligne de code:
Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '" )' at line 1
j'ai vraiment besoin d'aide, car la je craque, je vois vraiment pas ou est la faute
avion-f16
Messages postés19249Date d'inscriptiondimanche 17 février 2008StatutContributeurDernière intervention15 juin 20244 505 Modifié par avion-f16 le 11/06/2010 à 15:26
$sql="SELECT loginName FROM member WHERE loginName";
Ta requête n'est pas complète.
$sql .="(".'"'.$value_str . ")";
Tu oublies de fermer le guillemet double qui contient $value_str.
$sql .='("'.$value_str.'")';
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
Pour le
$sql="SELECT loginName FROM member WHERE loginName";
j'avais effectivement oublié le ='$loginName'
Je n'ai plus l'erreur de synthax maintenant
mais celle ci
Erreur : Column count doesn't match value count at row 1
c'est une erreur de de nombre de variable, non?
avion-f16
Messages postés19249Date d'inscriptiondimanche 17 février 2008StatutContributeurDernière intervention15 juin 20244 505 11 juin 2010 à 15:55
J'ai remodifié le code.
En effet, j'avais oublié un s à $values_str.
revoici le code
<?php
$today=date("Y-m-d");
$fields_str=implode(",",$fields);
$values_str=implode('","',$values);
$fields_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=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error());
$_SESSION['auth']="yes";
$_SESSION['logname']=$loginName;
/*Envoyer un emai au nouveau membre*/
$emess="Un nouveau compte de membre vient d'être créé.";
$emess .="Votre identifiant et votre mot de passe sont:";
$emess .="\n\n\t$loginName\n\t$password\n\n";
$emess .="Nous apprécions l'intérêt que vous portez à notre librairie.\n\n";
$emess .="Si vous avez des questions à poser, vous pouvez envoyer,";
$emess .="un e-mail à contact@honyamanga.fr";//adresse a changer ou modifier
$ehead="From: member-desk@honyamanga.fr\r\n";// adresse a changer
$subj="Votre nouveau compte à la librairie.";
$mailsnd=mail("$email","$subj","$emess","$ehead");
header("Location: Nouveau_membre.php"); ?>
et cette fois, j'ai cette erreur
Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"loginName,firstName,lastName,street,city,zip,phone,fax,email,createDate,passwor' at line 1
avion-f16
Messages postés19249Date d'inscriptiondimanche 17 février 2008StatutContributeurDernière intervention15 juin 20244 505 11 juin 2010 à 17:28
Utilise la variable spéciale __LINE__ dans tes "or die" pour afficher le numéro de ligne réel dans le script.
11 juin 2010 à 15:45
Pour le
$sql="SELECT loginName FROM member WHERE loginName";
j'avais effectivement oublié le ='$loginName'
Je n'ai plus l'erreur de synthax maintenant
mais celle ci
Erreur : Column count doesn't match value count at row 1
c'est une erreur de de nombre de variable, non?
11 juin 2010 à 15:55
11 juin 2010 à 16:02
En effet, j'avais oublié un s à $values_str.
revoici le code
et cette fois, j'ai cette erreur
Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"loginName,firstName,lastName,street,city,zip,phone,fax,email,createDate,passwor' at line 1
11 juin 2010 à 17:28