session

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 : session

par x@v » 03 mars 2007, 08:51

je me suis aperçu que tous les noms s'accroche.
donc j'ai tout refais mais toujours avec le même problème, ce qui est pas normal puisque logique je défie quiconque peux me dire pourquoi ?
function login($nom,$mot_de_passe)
{
  include('connexion.php');
  connexion();
  $result = mysql_query("SELECT * FROM utilisateur WHERE user_name='$nom' and mot_de_passe='$mot_de_passe'");
  //echo mysql_num_rows($result).'<br />';
  if (!$result)
  echo 'Vous ne pouvez pas vous connectez';
  
  if (mysql_num_rows($result)>0)
     return true;
  else 
     echo 'Connexion impossible.';
}
session_start();
include('fonction_client.php');

    $nom=$_POST['pseudo'];
    $mot_de_passe=$_POST['mot_de_passe'];

    // on teste si le mot de passe est valide
    if(login($mot_de_passe, $nom) == true) {
        $_SESSION['nom']= $nom;
    header ('location:index.php');
} 
else 
{
  echo 'vous ne pouvez pas voue logger';
}

par x@v » 03 mars 2007, 04:04

La solution de trux ne fonctionne pas non plus, j'ai essayer
ce qui fait fonctionner le tout c'est cela :
mysql_num_rows($result)!=0
et rien que ça
et en faisant differant de sa je retune true;
qui est la seul valeur possible ;)
je ne me l'explique pas, d'ailleurs ?
les autres solutions ont un sens en théorie ?
PS : ma table est autocrémenté par l'index, peut être que php attrape ce champ :
0, 1, 2
Je suis dérouté, parce qu'en principe, je ne fait pas appel à un objet.
j'aurrai du d'ailleurs essayer
$row=mysql_fetch_object($result);
echo $row->$result;
Mais c'est une affaire classée

par Ultim4T0m » 03 mars 2007, 04:01

Cependant, tu n'as pas suivi le conseil de Truc concernant le return ;)

Et à quoi sert ta première condition ? Puisque tu refais la vérification dans ton second if

par x@v » 03 mars 2007, 04:00

j'ai enfin trouvé, à force de faire la part des choses :
  $result = mysql_query("SELECT * FROM utilisateur WHERE user_name='$nom' AND mot_de_passe='$mot_de_passe'");
   if (!$result || mysql_num_rows($result)!=0)
     return false;
   else
	return true;
La solution est assez simple finalement.

par x@v » 03 mars 2007, 03:39

En faite il me renvois vrai seulement quand les deux champs tester sont identique
===
"SELECT * FROM utilisateur WHERE user_name='$nom' AND mot_de_passe='$mot_de_passe'"
Cette requete renvoi false si user_name et mot_de_ passe sont different. Alors à partir de là je me pose la question, sa ne serai pas au niveau de la requette ?
et donc comment tester ces deux champs ?
  $result = mysql_query("SELECT * FROM utilisateur WHERE user_name='$nom' AND mot_de_passe='$mot_de_passe'");
  if (!$result)
     return 0;
  
  if ($result=mysql_num_rows($result)>0)
  {
  echo 'rrrrrrrrrrrrrrrrr';
	$result=true;
  } else {
  //echo 'rrrrrrrrrrrrrrrrr';
	$result =false;
  }
  return $result;
}
<?php
session_start();
include('fonction_client.php');

    $nom=$_POST['pseudo'];
    $mot_de_passe=$_POST['mot_de_passe'];
if(isset($nom) && isset($mot_de_passe)) {
    // on teste si le mot de passe est valide
    if(verification($mot_de_passe, $nom)==true) {
    $_SESSION['nom']= $nom;
    header ('location:index.php');
    }
     else 
	{
	  $message='<p>Mauvais mot de passe</p><br />';
	  $message.='<p><a href="creation_compte.php">Vous pouvez créer un compte pour ajouter un article et commander</a></p>';
  	}
} 
else 
{
echo '';
 $message="<p>Le login ou le mot de pass est vide, réessayer</p>";
   $message.="<p><a href=\"#.php\">Vous pouvez créer un compte pour ajouter un article et commander</a></p>";
}
?>

Re: session

par Truc » 03 mars 2007, 00:00

cette requete me renvoie false à partir de la deuxième ligne ?
C'est une question ?

C'est quoi la ligne 2 pour toi ?

Vu ce que tu nous montres il ne se passera rien, en cas de retour négatif, à par l'affectation d'une variable $message d'un message d'erreur qui n'est plus utilisé par la suite... donc page blanche certainement.

Pour coder correctement une fonction ne comporte qu'un seul return en fin de fonction. Affecte une variable de la valeur à retourner :
function f($toto)
{
   if($toto == "toto")
      $retour = true;
   else 
      $retour = false;

   return $retour;
}

par x@v » 02 mars 2007, 22:26

je me demande si sa ne vient pas de la table :
CREATE TABLE `utilisateur` (
  `customerid` int(11) unsigned NOT NULL auto_increment,
  `user_name` varchar(40) NOT NULL default '',
  `prenom` varchar(250) NOT NULL default '',
  `mot_de_passe` varchar(40) NOT NULL default '',
  `email` varchar(200) NOT NULL default '',
  `civilite` varchar(10) NOT NULL default '',
  `adresse` text NOT NULL,
  `code_postal` varchar(8) NOT NULL default '',
  `ville` text NOT NULL,
  `tel` varchar(15) NOT NULL default '',
  `fax` varchar(15) NOT NULL default '',
  PRIMARY KEY  (`customerid`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;
INSERT INTO `utilisateur` VALUES (1, 'xaviou', '', 'xav', '[email protected]', '', '', '0', '', '0', '');
INSERT INTO `utilisateur` VALUES (2, 'xav', 'xav', 'xav', '[email protected]', 'mr', 'sddsdsds', '75009', 'paris', '0175487525', '');
la page en question
http://courant-alternatif.org/test_conn ... e/auth.php

par x@v » 02 mars 2007, 22:13

pouquoi changé le retour en 2, c'est booléens ?
1 == TRUE;
0 == FALSE;
j'ai essayer avec trus et false sans résultat.

par mere-teresa » 02 mars 2007, 18:39

Ta fonction retourne 0 dans deux cas : pb de requête ou bien pas d'utilisateur trouvé. Change un des retours en 2, ou bien dis nous ce qui arrive vraiment.

par x@v » 02 mars 2007, 18:34

il ny'a pas de message d'ereur.

par zeus » 02 mars 2007, 09:19

Quel est le message d'erreur ?

par x@v » 02 mars 2007, 05:07

en faite sa ne fonctionne que quand le nom et le mot de passe sont identique, pourtant la requète ne dit pas ça ?
  $result = mysql_query("SELECT * FROM utilisateur WHERE user_name='$nom' AND mot_de_passe='$mot_de_passe'");

session

par x@v » 02 mars 2007, 05:04

Bonjour,
je dois récupérer un résultat d'une base mais cette requete me renvoie false à partir de la deuxième ligne ?
la fonction avec la requete qui déconne
function verification($nom,$mot_de_passe)
{
  include('connexion.php');
  connexion();
      echo $mot_de_passe;
    echo $nom;
  // Création de la requête SQL

  $result = mysql_query("SELECT * FROM utilisateur WHERE user_name='$nom' AND mot_de_passe='$mot_de_passe'");
  if (!$result)
     return 0;
  
  if (mysql_num_rows($result)>0)
  {
     return 1;
	echo 'vrai';
  }else{
  	echo 'faux';
    return 0;
  }
}
La récupération du formulaire
session_start();
include('fonction_client.php');
if(isset($_POST['pseudo']) && isset($_POST['mot_de_passe'])) {
    $nom=$_POST['pseudo'];
    $mot_de_passe=$_POST['mot_de_passe'];

    // on teste si le mot de passe est valide
    if(verification($mot_de_passe, $nom)!= false) {
    $_SESSION['nom']= $nom;
    header ('location:index.php');
    }
     else 
	{
	  $message='<p>Mauvais mot de passe</p><br />';
	  $message.='<p><a href="creation_compte.php">Vous pouvez créer un compte pour ajouter un article et commander</a></p>';
  	}
} 
else 
{
echo 'xcvvcxvxcxvc';
/*   $message="<p>Le login ou le mot de pass est vide, réessayer</p>";
   $message.="<p><a href=\"#.php\">Vous pouvez créer un compte pour ajouter un article et commander</a></p>";*/
}
Je ne comprend pas, sa n'a pas de sens ?