PHP Récupérer deux variables d'une fonction

Résolu
maverickz Messages postés 50 Statut Membre -  
maverickz Messages postés 50 Statut Membre -
Bonjour,

Second post de la journée, seconde question, promis dès que je peux je contribue aussi ;-)

Je me lance, j'ai un fichier PHP contenant des fonctions (functions.php) et j'aimerais pouvoir faire inter-agir une de ces fonctions avec un système de vérification de login (login.php).

Pour cela j'ai une base de donnée avec les identifiants du user que je récupère via la fonction loginUser avec $login et $pass passés en paramètres.

J'aimerais donc faire refaire passer ces éléments/variables après traitement sur la page login.php (via le return?)

La fonction du fichier functions.php
----------------------------------------

function loginUser($login,$pass) {
MySQLConnect(); // connexion a la DB.
$request = mysql_query('SELECT * FROM user WHERE login='.$login. 'AND pass='.$pass);
while($result = mysql_fetch_array($request)) {
$tab[$login] = $result['login'];
$tab[$pass] = $result['pass'];
}
return $tab;
mysql_close();
}


Je ne suis déjà pas tout a fait certain qu'elle soit correcte surtout au niveau du $tab[$variable] car j'ai une erreur de type.
"Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource".

Sinon, voilà le contenu du fichier login.php qui est sensé devoir récupérer "$login" et "$pass" de l'autre page et les comparer avec les $_POST['login'] et $_POST['pass'] que l'user a introduit dans le formulaire.


<html>
<head><title>User Login</title></head>

<body>

<form method="post" action="login.php"/>
Login :<input type="text" name="login"/><br/>
Pass : <input type="password" name="pass"/><br/>
<input type="submit" value="Send"/>
<input type="reset" value="Clear"/>
</form>

</body>

</html>

<?php
session_start();
require('../func/functions.php');

if (isset($_POST['login']) && isset($_POST['pass'])) {
$login = $_POST['login'];
$pass = $_POST['pass'];
loginUser($login,$pass);

if (($tab[$login]==$login) && ($tab[$pass]==$pass)) {
header('Location: main.php');
}
else {
echo "Wrong User/pass";

}
}


J'ai essayé d'être le plus clair possible, d'avance, je vous remercie pour votre coup de pouce ;-)
Configuration: Windows XP
Firefox 3.5.3

12 réponses

  1. Alain_42 Messages postés 5413 Statut Membre 904
     
    Pour l'erreur verifies tes codes connexion bdd
    function loginUser($login,$pass) {
    MySQLConnect(); // connexion a la DB.
    $request = mysql_query("SELECT * FROM user WHERE login='".$login."' AND pass='".$pass."'");
    if(mysql_num_rows($request)>0){
    //on en a trouve un
    $result = mysql_fetch_array($request);
    $tab['login'] = $result['login'];
    $tab['pass'] = $result['pass'];
    }else{
    $tab['login'] = "no_fond";
    $tab['pass'] = "no_fond";
    }
    mysql_close();
    
    return $tab;
    
    } 
    
    <?php
    session_start();
    require('../func/functions.php');
    
    if (isset($_POST['login']) && isset($_POST['pass'])) {
    $login = mysql_escape_string($_POST['login']);// on protege !
    $pass =  mysql_escape_string($_POST['pass']);
    loginUser($login,$pass);
    
    if (($tab['login']==$login) && ($tab['pass']==$pass)) {
    header('Location: main.php');
    }
    else {
    echo "Wrong User/pass";
    
    }
    } 
    
    
    
    1
  2. Alain_42 Messages postés 5413 Statut Membre 904
     
    pour $tab:

    a la place de
    loginUser($login,$pass);

    mets
    $tab=loginUser($login,$pass);
    1
  3. Alain_42 Messages postés 5413 Statut Membre 904
     
    mets

    $request = mysql_query("SELECT * FROM user WHERE login='".$login."' AND pass='".$pass."'")or die ("pb avec la requette ".mysql_error());
    
    
    1
  4. Alain_42 Messages postés 5413 Statut Membre 904
     
    elle s'appelle users et pas user
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. maverickz Messages postés 50 Statut Membre 18
     
    Bonsoir Alain,

    Merci de ta réponse ;-)

    Mon code connexion :

    // Permet de ne pas avoir à réécrire toute la procédure de connexion à une base MySQL.
    function MySQLConnect(){
    include ('db.php'); // Fichier où sont contenu les informations d'identification.
    $Connect = mysql_connect("$mysql_host","$mysql_login","$mysql_pass") or die ('Connexion impossible a la base');
    mysql_select_db("$mysql_db", $Connect) or die ('Selection impossible de la table');
    }

    ou le contenu de l'include de db.php est

    <?php
    $mysql_host="localhost";
    $mysql_login="root";
    $mysql_pass="";
    $mysql_db="db";

    Sinon j'ai toujours un warning avec le mysql_fetch_row

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Program Files\EasyPHP 2.0b1\www\prog\func\functions.php on line 39

    et une variable $tab introuvable dans login.php sur cette ligne :
    if (($tab['login']==$login) && ($tab['pass']==$pass)) {

    Notice: Undefined variable: tab in C:\Program Files\EasyPHP 2.0b1\www\prog\users\login.php on line 26
    Wrong User/pass

    apparament il ne reconnait pas les $tab[] provenant de l'autre page

    J'ai pu éradiquer la notice en fessant passer $tab=login($login,$pass);

    mais je ne suis pas sur que l'idée soit bonne ;-) en tout cas il ne veut pas faire le "header" du "if"

    Une idée ? Quoi qu'il en soit merci beaucoup pour ton aide il y a déjà moins d'erreur qu'avant :-)
    0
  7. maverickz Messages postés 50 Statut Membre 18
     
    spécial il me mets directement : pb avec la requette La table 'db.user' n'existe pas

    La il se fait un peu tard je regarderai un peu demain matin ;-)

    merci en tout cas
    0
  8. Alain_42 Messages postés 5413 Statut Membre 904
     
    Donc ca veut dire que soit ta base ne s'appelle pas db soit tu n'as pas de table qui s'appelle user

    attention majuscules minuscules !
    0
  9. maverickz Messages postés 50 Statut Membre 18
     
    Mieux vaut une image qu'un grand discours, en tout cas un grand merci de consacrer ton temps a mon problème, si je peux te le rendre dans un autre domaine informatique n'hésite pas ;-)

    http://img124.imageshack.us/img124/8757/screenphp.jpg
    0
  10. maverickz Messages postés 50 Statut Membre 18
     
    PAF *tilt* rien qu'a voir le screenshot , je me rends compte qu'il me manque un "s" a USER, ça fait gros mec foireux qui ne sait pas relire son code ;-) , désolé

    Néanmoins la redirection du header ne fonctionne toujours pas, bon on va dire que la redirection je la fait passer en excuse de l'heure tardive et qu'on verra demain pour cela ;-)
    0
  11. maverickz Messages postés 50 Statut Membre 18
     
    PAFF *tilt* rien qu'a voir le screenshot , je me rends compte qu'il me manque un "s" a USER, ça fait gros mec foireux qui ne sait pas relire son code ;-) , désolé

    Néanmoins la redirection du header ne fonctionne toujours pas, bon on va dire que la redirection je la fait passer en excuse de l'heure tardive et qu'on verra demain pour cela ;-)
    0
  12. maverickz Messages postés 50 Statut Membre 18
     
    désolé vu trop tard :-)
    0
  13. maverickz Messages postés 50 Statut Membre 18
     
    après derniers petits réglages, cela fonctionne, terrible, merci Alain, franchement tu es quelqu'un de super et de très recommandable.

    Merci pour ton savoir et ta patience

    Passe une excellente nuit et encore merci ;-)
    0