les sessions

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : les sessions

par Z3lg4dis » 10 oct. 2007, 16:41

voila

[php<?php
include('connexion.inc');

if (isset($_POST['login']) && isset($_POST['pass'])) { // test des l'existances des variables
$sqlQuery = "Select COUNT(num_user)
FROM users
WHERE login_user = '".mysql_real_escape_string($_POST['login'])."'
AND pass_user = '".mysql_real_escape_string($_POST['pass'])."'";
$result = mysql_query($sqlQuery) or die('erreur '.$sqlQuery.' : '.mysql_error());
$array = mysql_fetch_row($result);
if($array[0]==0)
{
header("Location: index.php");
}
else
{
header("Location: accueil.php");
} }
?>[/php]

Donc jusque la ça fonctionne mais la le problème vient comment récupérer le num_user

par pascaltje » 10 oct. 2007, 16:41

bin même avec le bon test il vérifie quedal si je met rien dedans il rentre quand même
peut-on voir le dernier code ?

A+

Pascal

par Z3lg4dis » 10 oct. 2007, 16:39

bin même avec le bon test il vérifie quedal si je met rien dedans il rentre quand même

par Sedril » 10 oct. 2007, 16:38

Le test d'égalité se fait avec un double égal == en PHP, la tu fais une affectation avec un égal = et tu testes.

par pascaltje » 10 oct. 2007, 16:38

dans le if, tu as mis l'affectation "=" au lieu du test "==" .

A+

Pascal

par Z3lg4dis » 10 oct. 2007, 16:35

Déjà avec ça
<?php
include('connexion.inc');
 
if (isset($_POST['login']) && isset($_POST['pass'])) { // test des l'existances des variables
    $sqlQuery = "Select num_user 
        FROM users
        WHERE login_user = '".mysql_real_escape_string($_POST['login'])."'
        AND  pass_user = '".mysql_real_escape_string($_POST['pass'])."'";
    $result = mysql_query($sqlQuery) or die('erreur '.$sqlQuery.' : '.mysql_error());
    $array = mysql_fetch_row($result);
    if($array=FALSE)
	{
	header("Location: index.php");
	}
	header("Location: accueil.php");
}
?>
Je rentre sur ma page quoi que je mette il ne vérifi même pas si les identifiant sont bon
En fait d'après ce que j'ai compris avec le fetch_row si le résultat est false cela veut dire qu'il n'y a pas de ligne donc il doit revenir a index.php mais la il m'envoi vers acceuil donc déjà la ça merdouille.

par Sedril » 10 oct. 2007, 15:42

Attention, mysql_query() ne renvoie pas de donnée mais juste une référence à une requête.

Il faut ensuite utiliser une autre fonction telle que mysql_fetch_array() ou mysql_num_rows().

par heddicmi » 10 oct. 2007, 15:30

Pas tout à fait... Ici, ton test vérifie que les valeurs saisies en Login et Pass par l'utilisateur correspondent au Login et Pass du compte utilisateur dans ta base de données. Ce qui, par principe sera forcément toujours vrai vu que tu récupère dans la requête le compte correspondant à ce Login / Pass.

Mais tu noteras aussi qu'en utilisant $result['login_user'] et $result['pass_user'], tu génereras forcément une erreur. En effet, ta requête ne récupère que le champ num_user. Il ne récupère pas les champs login_user et pass_user.

Ainsi, ton test devrait plus porter sur "Est-ce que ma requête ma retourné un utilisateur ?", notament grace à la fonction mysql_num_rows().

par Z3lg4dis » 10 oct. 2007, 15:21

maintenant avec mes modif il me met une parse error
<?php
include('connexion.inc');
 
if (isset($_POST['login']) && isset($_POST['pass'])) { // test des l'existances des variables
    $sqlQuery = "Select num_user 
        FROM users
        WHERE login_user = '".mysql_real_escape_string($_POST['login'])."'
        AND  pass_user = '".mysql_real_escape_string($_POST['pass'])."'";
    $result = mysql_query($sqlQuery) or die('erreur '.$sqlQuery.' : '.mysql_error());
    if($result['login_user'] = $_POST['login']) && ($result['pass_user'] = $_POST['pass']){
		header("Location: accueil.php");
    } else {
        header("Location: index.php");
    }
}
?>

par heddicmi » 10 oct. 2007, 15:12

Pour la condition de ton if, tu mets ce que tu veux... Tu peux tester si ta requête t'as retourné un numéro d'utilisateur. Si oui, tu poursuits, si non, non ;)

par Z3lg4dis » 10 oct. 2007, 15:07

je pige pas ce ke je dois mettre comme condition

je galère à fond la

par Sedril » 10 oct. 2007, 15:01

Ben ouais ! Vas y teste ...

par Z3lg4dis » 10 oct. 2007, 14:59

en gros à la place de mon count je met num_user et je change la condition de mon if ?

par Sedril » 10 oct. 2007, 14:52

A ce moment là, fais plutôt une requête qui ramène l'identifiant de l'utilisateur, non ?

Bien sur il faut modifier le code qui est placé aprés la requête aussi non ca veut plus rien dire.

Soit le tableau qui est retourné sera vide ou avec une valeur nulle dans le cas où le couple utilisateur/mot de passe n'a pas été trouvé, soit il contiendra l'identifiant recherché.

par heddicmi » 10 oct. 2007, 14:50

Dans ce cas, il te faut chercher dans le resultat de ta requete. La requête que tu exécutes ne te retournes que le nombre d'utilisateurs avec le couple Login/pass. Il faudrait que ta requête te retourne plutôt l'id de l'utilisateur avec ce couple Login/Pass.