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

Résolu/Fermé
Signaler
Messages postés
49
Date d'inscription
lundi 12 octobre 2009
Statut
Membre
Dernière intervention
10 août 2011
-
Messages postés
49
Date d'inscription
lundi 12 octobre 2009
Statut
Membre
Dernière intervention
10 août 2011
-
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 ;-)

12 réponses

Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
895
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
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
895
pour $tab:

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

mets
$tab=loginUser($login,$pass);
1
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
895
mets

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

1
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
895
elle s'appelle users et pas user
1
Messages postés
49
Date d'inscription
lundi 12 octobre 2009
Statut
Membre
Dernière intervention
10 août 2011
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
Messages postés
49
Date d'inscription
lundi 12 octobre 2009
Statut
Membre
Dernière intervention
10 août 2011
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
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
895
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
Messages postés
49
Date d'inscription
lundi 12 octobre 2009
Statut
Membre
Dernière intervention
10 août 2011
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
Messages postés
49
Date d'inscription
lundi 12 octobre 2009
Statut
Membre
Dernière intervention
10 août 2011
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
Messages postés
49
Date d'inscription
lundi 12 octobre 2009
Statut
Membre
Dernière intervention
10 août 2011
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
Messages postés
49
Date d'inscription
lundi 12 octobre 2009
Statut
Membre
Dernière intervention
10 août 2011
18
désolé vu trop tard :-)
0
Messages postés
49
Date d'inscription
lundi 12 octobre 2009
Statut
Membre
Dernière intervention
10 août 2011
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