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

Résolu
maverickz Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   -  
maverickz Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   -
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 ;-)
A voir également:

12 réponses

Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
pour $tab:

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

mets
$tab=loginUser($login,$pass);
1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
mets

$request = mysql_query("SELECT * FROM user WHERE login='".$login."' AND pass='".$pass."'")or die ("pb avec la requette ".mysql_error());

1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
elle s'appelle users et pas user
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
maverickz Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   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
maverickz Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   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
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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
maverickz Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   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
maverickz Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   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
maverickz Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   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
maverickz Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   18
 
désolé vu trop tard :-)
0
maverickz Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   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