Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & ODBC
PHP & ODBC Forum d'entraide sur ODBC avec PHP. Avant de poster -> FAQ ODBC
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/05/2011, 12h41   #1
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
Par défaut Problèlme récupération de données dans sqlserver

Bonjour,
j'ai un problème qui m'empêche d'avancer.

J'ai crée une source de donnée odbc pour sql server.
J'ai crée ma base de données

Lorsque je me connecte la connexion se fait apparemment vu que lorsque je fais le test

Code :
1
2
3
4
5
6
7
8
9
<?php 
session_start();
$connex = odbc_connect("geststockmazars","","");
	// TEST DE CONNEXION A LA TABLE (enlever les  /* */)
 
	IF(!$connex)
		echo "PROBLEME à la connexion<br />";
	else
		echo "Connexion OK"; ?>
j'ai le message connexion ok qui s'affiche donc c'est que la connexion se fait bien.

Maintenant quand j'essaie de me connecter je passe tjs dans la boucle qui me met que mon mot de passe est mauvais. :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']))
{
	extract($_POST);
	$pass=sha1($pass); // on crypte le mot de passe tapé en sha1
	$con = odbc_connect("geststockmazars","",""); // on se connecte à la base de données
	$sql = " SELECT id,statut FROM users WHERE login='$login' and pass='$pass'";
	// on effectue la requête sql
		$req = odbc_do($con, $sql);
	// on teste le nombre de résultat
		if(odbc_num_rows($req)>0)
		{	// s'il est supérieur à 0 c'est que l'utilisateur existe
			$data= odbc_fetch_array($req);
			// on créé un tableau de session où on stocke les différentes informations
			$_SESSION['Auth'] = array(
			'login' => $login,
			'pass' => $pass,
			'statut' => $data['statut']);
 
//on teste si il est admin ou non et en fonction de cela on le redirige					
			if($_SESSION['Auth']['statut'] == 'admin')
			{
				header('Location:pageprivee.php');	
			}
			else
			{
				header('Location:pagepublique.php');
			}
		}
		else
		{	// si pas de résultat c'est que les identifiants sont incorrectes
			header('location:erreurlog.php');
		}
}

mon fichier auth.php si vosu le souhaitez :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
 
 
	Class Auth{
		static function isLogged()
		{
			if(isset($_SESSION['Auth']) && isset($_SESSION['Auth']['login']) && isset($_SESSION['Auth']['pass']) )
			{	
				extract($_SESSION['Auth']);
					$con = odbc_connect("geststockmazars","","");
				$sql = " SELECT id from users where login='$login' and pass='$pass'";
				$req = odbc_do($con, $sql);
 
				if(odbc_num_rows($req)>0)
				{
					return true;
				}
				else
				{
					return false;
				}
	        }
			else
			{
				return false;
			}
		}
 
		static function isAdmin()
			{
				if(isset($_SESSION['Auth']) && isset($_SESSION['Auth']['login']) && isset($_SESSION['Auth']['pass']) )
				{
					extract($_SESSION['Auth']);
					$con = odbc_connect("geststockmazars","","");
					$sql = " SELECT statut from users where login='$login' and pass='$pass'";
					$req = odbc_do($con, $sql);
 
					if($req='admin')
					{
						return true;
					}
					else
					{
						return false;
					}
				}
				else
				{
					return false;
				}
			}
 
	}
 
?>
BIen sur ma table users existe dans sql server et les champs spécifiés dan sla requête aussi.
Si vosu avez des questions n'hésitez pas.
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 13h54   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Citation:
la boucle qui me met que mon mot de passe est mauvais
de quelle boucle s'agit- il ?

Sinon as-tu fais le debugage minimum ? afficher tes variables, afficher la requête, contrôler la requête etc. ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 15h08   #3
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
Pardon je me suis trompé quand j'ai posté une partie du code.
Pour la deuxième c'est ça le code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']))
{
	extract($_POST);
	$pass=sha1($pass); // on crypte le mot de passe tapé en sha1
	$con = odbc_connect("geststockmazars","",""); // on se connecte à la base de données
	$sql = " SELECT id,statut FROM users WHERE login='$login' and pass='$pass'";
	// on effectue la requête sql
		$req = odbc_do($con, $sql);
	// on teste le nombre de résultat
		if(odbc_num_rows($req)>0)
		{	// s'il est supérieur à 0 c'est que l'utilisateur existe
			$data= odbc_fetch_array($req);
			// on créé un tableau de session où on stocke les différentes informations
			$_SESSION['Auth'] = array(
			'login' => $login,
			'pass' => $pass,
			'statut' => $data['statut']);
 
//on teste si il est admin ou non et en fonction de cela on le redirige					
			if($_SESSION['Auth']['statut'] == 'admin')
			{
				header('Location:pageprivee.php');	
			}
			else
			{
				header('Location:pagepublique.php');
			}
		}
		else
		{	// si pas de résultat c'est que les identifiants sont incorrectes
			header('location:erreurlog.php');
		}
}
Et donc là je parle de quand je suis redirigé vers la page erreurlog.php
Euh non je n'ai aps fait les tests dont tu me parles.
Tu peux m'en dire plus ?
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 15h18   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Par exemple :
Code :
1
2
3
4
5
6
7
8
$sql = " SELECT id,statut FROM users WHERE login='$login' and pass='$pass'";
echo $sql .'<br/>';
	// on effectue la requête sql
		$req = odbc_do($con, $sql);
var_dump($req);
	// on teste le nombre de résultat
echo odbc_num_rows($req);
		if(odbc_num_rows($req)>0)
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 16h06   #5
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
Voilà le résultat :

Code :
1
2
3
4
5
Connexion OK SELECT id,statut FROM users WHERE login='didier' and pass='65d0f74bf4e86747987eb7d8353e2423639501dc'
 
resource(5, odbc result)
 
0
Donc ça veut dire qu'il ne trouve pas de résultat pour ce que j'ai tapé comme identifiant dans la base de données c'est ça ? Pourtant ce login et ce pass existe dans ma base de données...

Le ressource je ne comprends pas bien par contre.
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 16h13   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
C'est bien ça : il n'y a pas de ligne qui ait ce login et ce mot de passe.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 16h25   #7
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
Bah pourtant regarde il y est bien dans la bdd...

http://img706.imageshack.us/i/screenshot034u.jpg/

edit : je viens de tester en mettant un mot de passe et login non crypté (comme dans la photo) et j'ai enlevé le sha1 que j'utilisais et apparemment je me connectes donc ça viendrait de mon sha1.
N'existe t-il pas un autre moyen de crypter en sha1 de manière fonctionnelle ?
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 20h20   #8
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
dans ta base le login est "dider" et pas "didier"
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h55.


 
 
 
 
Partenaires

Hébergement Web