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

Résolu/Fermé
maverickz Messages postés 49 Date d'inscription lundi 12 octobre 2009 Statut Membre Dernière intervention 10 août 2011 - 12 oct. 2009 à 20:58
maverickz Messages postés 49 Date d'inscription lundi 12 octobre 2009 Statut Membre Dernière intervention 10 août 2011 - 13 oct. 2009 à 01:30
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
12 oct. 2009 à 21:44
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
12 oct. 2009 à 23:30
pour $tab:

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

mets
$tab=loginUser($login,$pass);
1
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
12 oct. 2009 à 23:32
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 oct. 2009 à 01:12
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 lundi 12 octobre 2009 Statut Membre Dernière intervention 10 août 2011 18
12 oct. 2009 à 21:57
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 lundi 12 octobre 2009 Statut Membre Dernière intervention 10 août 2011 18
13 oct. 2009 à 00:47
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 oct. 2009 à 01:01
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 lundi 12 octobre 2009 Statut Membre Dernière intervention 10 août 2011 18
13 oct. 2009 à 01:08
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 lundi 12 octobre 2009 Statut Membre Dernière intervention 10 août 2011 18
13 oct. 2009 à 01:12
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 lundi 12 octobre 2009 Statut Membre Dernière intervention 10 août 2011 18
13 oct. 2009 à 01:15
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 lundi 12 octobre 2009 Statut Membre Dernière intervention 10 août 2011 18
13 oct. 2009 à 01:15
désolé vu trop tard :-)
0
maverickz Messages postés 49 Date d'inscription lundi 12 octobre 2009 Statut Membre Dernière intervention 10 août 2011 18
13 oct. 2009 à 01:30
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