pb identification

Répondre
aquievreux
le 15/04/2010 à 15:13
aquievreux
Bonjour, j'ai encore un pb avec mon code mais ce n'est plus le même, voici mon code :

<?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 un couple nom de login/mot de passe
* 2 - Créer un nouveau compte Identificateurs et mots de passe sont conservés dans une base de données MySQL
*
*/

session_start();
include("chiens.inc"); // modifier le nom
switch(@$_POST['do'])
{
case "login":
$cxn = mysqli_connect($host, $user, $password, $database) or die ("Connexion impossible au serveur dans case login");

$sql = "SELECT loginName FROM member WHERE loginName='$_POST[fusername]'";
$result = mysqli_query($cxn,$sql) or die ("Requête en échec 1.");
$num = mysqli_num_rows($result);

if ($num > 0) // loginname 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 échec2.");
$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: bienvenue.php"); /***** *****/
}
else // mot de passe incorrect
{
$message = "Le nom de Login '$POST[fusername]' existe, mais le mot de passe ne va pas ! Réessayez.<br>";
include("login_form.inc");
}
}
elseif ($num == 0) // Nom de login introuvable
{
$message = "Le nom de login que vous avez saisi n existe pas. Essayez encore.<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 (preg_match("/name/i", $field) and !preg_match("/login/i", $field))
//if (stristr($field, "name") and !stristr($field, "login"))
{
//if (!ereg("^[A-Za-z' -]{1,50}$", $value))
if (!preg_match("/^[A-Za-z' -]{1,50}$/i", $value))
//if (!strstr("^[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 (preg_match("/street/i", $field) or preg_match("/addr/i",$field) or preg_match("/city/i", $field))
//if (stristr($field, "street") or stristr($field, "addr") or stristr($field, "city"))
{
//if(!ereg("^[A-Za-z0-9.,' -]{1,50}$",$value))
if(!preg_match("/^[A-Za-z0-9.,' -]{1,50}$/i",$value))
//if(!strstr($value, "^[A-Za-z0-9.,' -]{1,50}$"))
{
$errors[] = "$value est incorrect.";
}
}
//if (eregi("state", $field))
//if (stristr($field,'state'))
//{
//if(!ereg("A-Za-z]{2}", $value))
// if(!strstr($value, "A-Za-z]{2}"))
// {
// $errors[] = "$value est refusé pour state.";
// }
//}
//if (eregi("email", $field))
if (preg_match("/email/i", $field))
//if (stristr($field, 'email'))
{
//if (!ereg("^.+@.+\\..+$",$value))
if (!preg_match("/^.+@.+\\..+$/i",$value))
//if (!strstr($value, "^.+@.+\\..+$"))
{
$errors[] = "$value est refusé comme email.";
}
}

/* if (eregi("zip", $field))
{
if (!ereg("^[0-9]{5,5}(\-[0-9]{4,4})?$", $value))
{
$errors[] = "$value n est pas un zipcode autorisé.";
}
}
if (eregi("phone", $fiel) or (eregi("fax", $field)
{
if (!ereg("^[0-9)(xX -](7,20)$", $value))
{
$errors[] = "$value n est pas un numero de telephone.";
}
}
*/
} // Fin de if empty
} // Fin de foreach
if (@is_array($errors))
{
$message_new = "";
foreach($errors as $value)
{
$message_new .= $value. " Reessayez<br />";
}
extract($_POST);
include("login_form.inc");
exit();
}

/* Nettoyage des données */
$cxn = mysqli_connect($host, $user, $password, $database);

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 deja ? */
$sql = "SELECT loginName FROM Member WHERE loginName = '$loginName'";
$result = mysqli_query($cxn, $sql) or die ("Requete SELECT en echec dans case new");
$num = mysqli_num_rows($result);

if ('num' > 0)
{
$message_new = "$loginName existe deja. Choisissez en un autre.";
include("login_form.inc");
exit();
}

/* Ajout d un 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 .="(".'"'.$values_str.")" or die ("erreur");
$result = mysqli_query($cxn, $sql) or die ("Requete INSERT en echec.");
$_SESSION['auth']="yes";
$_SESSION['logname'] = $loginName;
header('Location: Nouveau_membre.php');

/* Envoyer un email au nouveau membre */
/*
$emess = "Un nouveau compte de membre vient d'être créé.";
$emess .= " Votre identificateur et votre mot de passe sont : ";
$emess .= "\n\n\t$loginName\n\t$password\n\n";
$emess .= "Nous apprecions l interet que vous portez a notre magasin. \n\n";
$subj = Votre nouveau compte :
$mailsnd = mail("$email","$subj","$emess");
header("Location: Nouveau_membre.php");
*/

}
break;

default:
include("login_form.inc");
}
?>



Le problème que j'ai est le suivant : Lorsque je crée un nouveau membre aucun pb, il s'ajoute bien à ma base de donnée, et me redirige vers la bonne page.
Cependant, lorsque je souhaite m'identifier là rien ne se passe, il ne me charge aucune page, ni même ne m'affiche de message d'erreur.
En fait il me recharge la même page (cad login.php).
Pouvez vous m'aider svp?????????????????????????????????
Keika
le 17/04/2010 à 10:43
Keika
SAlut,

je pense que ca vient du faite que tu as mal concatene certaines lignes:

<?php

$sql = "SELECT loginName FROM member WHERE loginName='$_POST[fusername]'"; //ligne 17
$sql = "SELECT loginName FROM member WHERE loginName='.$_POST[fusername].'"; //Correct

?>


Pareil pour les lignes 23, 33, 39.
Le PHP --> C'est dur !
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours