Besoin de vos yeux expert

Signaler
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010
-
Anthotill
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010
-
Bonjour à tous

J'ai un probleme avec une page que je suis en train de créer, une page d'authentification.

Je récupère les informations de deux formulaire (formulaire d'inscription ou de connexion)
Si les infos viennent du formulaire d'inscription, je vérifie si le pseudo n'existe pas et je créé le membre le cas échéant.

A l'heure acutelle, seul la connexion de l'utilisateur avec des identifiants correct fonctionne sinon:

_ lorsqu'un


utilisateur se connecte avec ces login et mot de passe correct, c'est OK il est redirigé vers la page d'ou il se connecte



_ lorsqu'un utilisateur se connecte avec ces login et mot de passe incorrect,  il n'est pas connecté mais il ne se passe rien (alors que normalement je le redirige vers erreur.php)
_ lorsqu'un utilisateur créé un compte avec un pseudo qui existe il n'est pas créé mais rien ne se passe non plus (alors que normalement je le redirige vers erreur.php)
_ lorsqu'un utilisateur créé un compte avec un pseudo qui n'existe pas il n'est pas créé alors que normalement si ...


Voici mon code, peut être que vos yeux expert trouverons le probleme moi j'ai beau essayé dès que je change quelque chose c'est un autre truc qui ne va pas etc ...





<?php session_start();
/// CONFIGURATION DE LA BASE DE DONNEE
define('SQL_SERVER','XX');
define('SQL_USER','XX');
define('SQL_PASS','XX');
define('SQL_BDD','XX');
$db_link =  @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASS);
mysql_select_db(SQL_BDD);
##########################################################################################
###################### RECUPERATION DES DONNEES DU FORMULAIRE ######################
##########################################################################################
$ip = $_POST['ip'] ; 
$prenom = $_POST['prenom'] ; 
$login = $_POST['login'] ; 
$pass_crypt = md5($_POST['pass']); 
$email = $_POST['email'] ; 
##########################################################################################
####################### CONTROLES EXISTANCE OU NON DU PSEUDO ########################
##########################################################################################
if(isset($_POST['inscription']) == 'oui')
{
$sql = "SELECT login FROM site_va_user WHERE login='".$_POST['login']."'"; 
$req = mysql_query($sql) or die($sql.' '.mysql_error()); 
if(mysql_num_rows($req) != '1') 
{ 
header("location: erreur.php");
} 
}
##########################################################################################
######################### SI PSEUDO INEXISTANT CREATION SQL #############################
##########################################################################################
elseif(isset($_GET['ajout']) and strlen($_GET['ajout']) and is_numeric($_GET['ajout'])) {
if(isset($_POST['login']) and isset($_POST['pass']) and isset($_POST['email']) and isset($_POST['ip']) and isset($_POST['prenom'])) {
$sql = "INSERT INTO site_va_user (prenom,login,pass,email,ip,date_inscription) values ('".$prenom."','".$login."','".$pass_crypt."','".$email."','".$ip."',NOW())";
mysql_query($sql);   header("location: ". $_SERVER['HTTP_REFERER']);   
}  else  { die(' Erreur ');  }   }
##########################################################################################
##################### ENVOIS DES INFOS A LA VARIABLE DE SESSION ########################
################ CREATION DE LA REQUETTE POUR SELECTIONNER LE LOGIN ##################
##########################################################################################$sql  'SELECT userid,login,prenom FROM site_va_user WHERE login "'.mysql_escape_string($login).'" and pass = "'.$pass_crypt.'" LIMIT 1' ;
$rc = mysql_query($sql);
while($data=mysql_fetch_assoc($rc)) { if(mysql_result($rc,0) == '0') {
// REDIRECTION VERS LA PAGE D'ERREUR SI UN DES IDENTIFIANTS EST FAUX
header("location: erreur.php"); }
// CREATION DES VARIABLES DE SESSION
$_SESSION['log'] = true ;
$_SESSION['pseudo'] = $data['login'] ;
$_SESSION['userid'] = $data['userid'] ;
$_SESSION['prenom'] = $data['prenom'] ;
}
// REDIRECTION VERS LA PAGE CONCERNEE SI LES LOGIN ET MOT DE PASSE SONT OK
header("location: ". $_SERVER['HTTP_REFERER']);
##########################################################################################
################################### DECONNEXION #########################################
##########################################################################################
if(isset($_GET['logout']) and strlen($_GET['logout']) and is_numeric($_GET['logout'])) { 
$_SESSION['log'] = false ; header("location: index.php"); }
?>



Merci beaucoup :)
Antho

12 réponses

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

if(isset($_POST['inscription']) == 'oui')

c'est if(isset($_POST['inscription'])) qu'il faut mettre, mais il faudrait que tu penses à mettre des isset() pour tes autres champs de formulaire que tu récupères ($_POST['ip'], etc ...) avant tout traitement, pour éviter les erreurs d'undefined variable.

a +
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010

salut antho

j'avais mis if(isset($_POST['inscription']) == 'oui') parce que inscription est un champ hidden qui a pour valeur oui je savais pas qu'on pouvait ne rien mettre.

Mon probleme n'est toujours pas résolu pour autant je comprend vraiement pas pourquoi il me redirige pas vers la page erreur.php ...

Tu ne vois pas pourquoi ça fonctionne pas ??

Antho
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
while($data=mysql_fetch_assoc($rc)) { if(mysql_result($rc,0) == '0') {
// REDIRECTION VERS LA PAGE D'ERREUR SI UN DES IDENTIFIANTS EST FAUX
header("location: erreur.php"); }


==>


if(mysql_num_rows($rc) === 0)
{
header('location:erreur.php');
exit;
}

$data=mysql_fetch_assoc($rc);

$_SESSION['log'] = TRUE;
$_SESSION['pseudo'] = $data['login'];
$_SESSION['userid'] = $data['userid'];
$_SESSION['prenom'] = $data['prenom'];

ça devrait aller mieux.
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010

Re antho merci pour ton aide


Alors enfait maintenant ca fonctionne pour ceci:

Utilisateur se connectant avec login et mot de passe correct (redirection vers $_SERVER['HTTP_REFERER'])
Utilisateur se connectant avec login et mot de passe incorrect (redirection vers la page d'erreur)

Par contre, pour ce qui est de la création de compte, (if(isset($_POST['inscription'])) normalement si l'utilisateur créé un compte et que le pseudo existe déjà on le redirige sur erreur.php mais la il est redirigé même si le pseudo qu'il choisit n'est pas inscrit dans la base de donnée

Est ce que tu vois d'ou ca peux venir ?

Antho
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
if(mysql_num_rows($req) === 1)
{
header('location: erreur.php');
}
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010

Salut

Ca ne fonctionne toujours pas désolé de t'emmer.... avec ca

Grace à ton aide, mon code est devenu ceci :

<?php session_start();
/// CONFIGURATION DE LA BASE DE DONNEE
define('SQL_SERVER','XX');
define('SQL_USER','XX');
define('SQL_PASS','XX');
define('SQL_BDD','XX');
$db_link = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASS);
mysql_select_db(SQL_BDD);
##########################################################################################
###################### RECUPERATION DES DONNEES DU FORMULAIRE ######################
##########################################################################################
$ip = $_POST['ip'] ;
$prenom = $_POST['prenom'] ;
$login = $_POST['login'] ;
$pass_crypt = md5($_POST['pass']);
$email = $_POST['email'] ;
##########################################################################################
####################### CONTROLES EXISTANCE OU NON DU PSEUDO ########################
##########################################################################################
if(isset($_POST['inscription']))
{
$sql = "SELECT login FROM site_va_user WHERE login='".$_POST['login']."'";
$req = mysql_query($sql) or die($sql.' '.mysql_error());
if(mysql_num_rows($req) == 1)
{
header('location: erreur.php');
exit;
}
}
##########################################################################################
######################### SI PSEUDO INEXISTANT CREATION SQL #############################
##########################################################################################
elseif(isset($_GET['ajout']) and strlen($_GET['ajout']) and is_numeric($_GET['ajout']))
{
if(isset($_POST['login']) and isset($_POST['pass']) and isset($_POST['email']) and isset($_POST['ip']) and isset($_POST['prenom']))
{
$sql = "INSERT INTO site_va_user (prenom,login,pass,email,ip,date_inscription) values ('".$prenom."','".$login."','".$pass_crypt."','".$email."','".$ip."',NOW())";
mysql_query($sql);  
}
}
header("location: ". $_SERVER['HTTP_REFERER']);
 
##########################################################################################
##################### ENVOIS DES INFOS A LA VARIABLE DE SESSION ########################
##########################################################################################$sql 'SELECT userid,login,prenom FROM site_va_user WHERE login "'.mysql_escape_string($login).'" and pass = "'.$pass_crypt.'" LIMIT 1' ;
$rc = mysql_query($sql);
################################### DECONNEXION #########################################
if(isset($_GET['logout']) and strlen($_GET['logout']) and is_numeric($_GET['logout']))
{
$_SESSION['log'] = false ;
header("location: index.php");
exit;
}
################################## FIN DECONNEXION #######################################

if(mysql_num_rows($rc) == 0)
{
header('location:erreur.php');
exit;
}

$data=mysql_fetch_assoc($rc);

$_SESSION['log'] = true;
$_SESSION['pseudo'] = $data['login'];
$_SESSION['userid'] = $data['userid'];
$_SESSION['prenom'] = $data['prenom'];
header("location: ". $_SERVER['HTTP_REFERER']);  
exit;
?>

Toujours le meme probleme, la création d'utilisateur ne fonctionne pas que le login existe ou non je suis quand meme redirigé vers la page d'erreur arf

Merci
Antho
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010

pti up

Antho
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
if(isset($_GET['logout']) and strlen($_GET['logout']) and is_numeric($_GET['logout']))

> strlen renvoie un int donc ça c'est pas bon ...

if(isset($_GET['logout']) AND is_numeric($_GET['logout']))

mais ça c'est pareil :

$ip = $_POST['ip'] ;
$prenom = $_POST['prenom'] ;
$login = $_POST['login'] ;
$pass_crypt = md5($_POST['pass']);
$email $_POST['email'] ;
>

if(isset($_POST['ip'], $_POST['prenom'], $_POST['login'], $_POST['pass'], $_POST['email']))
{
$ip = $_POST['ip'] ;
$prenom = $_POST['prenom'] ;
$login = $_POST['login'] ;
$pass_crypt = md5($_POST['pass']);
$email = $_POST['email'] ;
}
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010

Salut antho (c'est toi qui gère mon dossier ? lol :))

Merci pour ton aide ...

Les solutions que tu donne ci-dessus ne sont pas les bonnes parce que mes problemes ne viennent pas de là il viennent de l'inscription uniquement.

Enfait, si un membre créé un compte, qu'il choisit un login qui n'existe pas dans la base il est quand même redirigé vers erreur.php alors que normalement si le pseudo n'existe pas le membre doit être créé et redirigé vers la page concerné.

Ton aide ma aidé a résoudre les autres problèmes mais celui là semble corriace et j'ai tout essayé sans succès

Antho
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Corrige quand même, je verrai ça ce soir plus en détails, y'a pas mal de code
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010

Ok je fais les modifs merci pour tout

Antho
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010

a demlain soir du coup ;)

Antho