Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 09/01/2012, 02h19   #1
Membre du Club
 
" "
Inscription : janvier 2008
Messages : 204
Détails du profil
Informations professionnelles :
Activité : " "

Informations forums :
Inscription : janvier 2008
Messages : 204
Points : 59
Points : 59
Par défaut verifier des login depuis une table

Bonjour,
j'ai une base contenant des login et des mot de pass,
je vouvrais que si une met son login et son mot de pass le le programme verifie si ces parametres se trouve dans la base et la paersonne pourra ainsi se connecter
merci de m'aider de voir mon erreur sur la partie non commentée

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
 
 
<?php 
		$login = 'ambodj';
		$mp = 'ambodj';
		$conex = mysql_connect('localhost',$login,$mp); # connexion au serveur
		#$bdd = mysql_db('gid12') or die ('erreur d\'ouverture'); # on selectionne la base gid12
		$req = ('select login,mot_pass from auteur'); # requete sur la table auteur 
		$reqresult = mysql_query ($req,$conex);
 
		$mdp_admin=$_POST['mdp_admin'];
		$login_admin=$_POST['login_admin'];
		$tuple_admin=array($login_admin,$mdp_admin);
 
		#if (isset($_POST['Connexion'])){
			while ($tuple = mysql_fetch_row($reqresult)) {
				if($tuple==$tuple_admin)
					{
						$condition=1;
						break;	
 
						/*echo 'connection réussie !!!'.'</br>';
						echo '<ul>';
						echo '<li>'.'<a href="ajouter.php"> Ajouter un document ou un ouvrage </a> '.'</br>';
						echo '<li>'.'<a href="supprimer.php"> Supprimer un document ou un ouvrage </a> '.'</br>'; 
						echo '<li>'.'<a href="modifier.php"> Modifier un document ou un ouvrage </a> '.'</br>'; 
						echo '</ul>'; */
					}
 
				/*else {
				echo 'Login ou mot de passe erroné !!!'.'</br>';
				echo 'Pour retourner Accueil : '.'<a href="index.html"> Cliquer ici </a>'; 
				}*/
			}
		#}
 
?>
arm3366 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 06h31   #2
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 728
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 728
Points : 3 295
Points : 3 295
Salut

Tu prévois de récupérer dans la Bdd tous les auteurs pour ensuite parcourir en boucle chaque résultat pour tenter de trouver l'auteur en question.
Je dirais que c'est un peu contre productif, quand bien même il y ait peu d'auteurs.

En SQL il est possible de faire ça en 1 requête, de vérifier l'existence (ou non) d'un auteur.
Exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Connexion à la Bdd effectué ici
 
if (isset($_POST['mdp_admin'], $_POST['login_admin'])) {
    $mdp_admin = mysql_real_escape_string($_POST['mdp_admin']);
    $login_admin = mysql_real_escape_string($_POST['login_admin']);
    //
    $sql = "SELECT COUNT(*) AS total, id_auteur
    FROM auteur
    WHERE mdp_admin = '".$mdp_admin."'
    AND login_admin = '".$login_admin."'";
    $auteur_rs = mysql_query($sql, $conex);
    $auteur_tot = mysql_fetch_assoc($auteur_rs);
    //
    if ((int)$auteur_tot['total'] === 1) {
        // Ok. Cet auteur existe.
    }
}
J'ai entre autre rajouter une vérification des données reçues en POST, de même des mysql_real_escape_string pour protéger les chaines et éviter une SQL injection.

Par ailleurs, je remarque que tu prévois de créer des liens comme ajouter, modifier, supprimer suite à cette connexion.
Or, lors du clic sur un de ces liens il faudra à nouveau s'identifier car il manque un mécanisme de mémorisation de l'auteur pour le permettre de naviguer sur le site sans devoir se ré-identifier à chaque fois.

Fais des recherches concernant les SESSIONS et un système d'identification à part, c'est le principe le plus couramment utilisé.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/01/2012, 08h20   #3
Membre du Club
 
" "
Inscription : janvier 2008
Messages : 204
Détails du profil
Informations professionnelles :
Activité : " "

Informations forums :
Inscription : janvier 2008
Messages : 204
Points : 59
Points : 59
Bonjour
Merci Runcodephp pour votre correction et orientation.
je suis debutant en developpemene web et j'ai un peu du mal à voir pourquoi le programme ne marche pas quant je met mon login et mon mot de pass et que je click ensuite sur Connexion:
j'ai mis en piece-jointe ma page 'accueil (index.php) et mon fichier css (bdd.css)

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
 
 
<?php 
		$login = 'ambodj';
		$mp = 'ambodj';
		$conex = mysql_connect('localhost',$login,$mp); # connexion au serveur
 
		if (isset($_POST['mdp_admin'], $_POST['login_admin'])) {
			$mdp_admin = mysql_real_escape_string($_POST['mdp_admin']);
			$login_admin = mysql_real_escape_string($_POST['login_admin']);
			$sql = "SELECT COUNT(*) AS total, id
			FROM auteur
			WHERE mdp_admin = '".$mdp_admin."'
			AND login_admin = '".$login_admin."'";
			$auteur_rs = mysql_query($sql, $conex);
			$auteur_tot = mysql_fetch_assoc($auteur_rs);
			if ((int)$auteur_tot['total'] === 1) {
				echo 'connection réussie !!!'.'</br>';
				 echo '<ul>';
				 echo '<li>'.'<a href="ajouter.php"> Ajouter un document ou un ouvrage </a> '.'</br>';
				 echo '<li>'.'<a href="supprimer.php"> Supprimer un document ou un ouvrage </a> '.'</br>'; 
				 echo '<li>'.'<a href="modifier.php"> Modifier un document ou un ouvrage </a> '.'</br>'; 
				 echo '</ul>'; 
				// Ok. Cet auteur existe.
			}
 
			else {
				echo 'Login ou mot de passe erroné !!!'.'</br>';
				echo 'Pour retourner Accueil : '.'<a href="index.php"> Cliquer ici </a>'; 
			}
		}		
 
 
	?>
Fichiers attachés
Type de fichier : php index.php (2,5 Ko, 1 affichages)
Type de fichier : css bdd.css (2,0 Ko, 0 affichages)
arm3366 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 09h41   #4
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 728
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 728
Points : 3 295
Points : 3 295
Ce index.php contient un formulaire contenant un champ "auteur", un champ "textfield2" puis un champ "type_doc".

Pour le moment ça me semble pas utile car nulle part on voir un système d'identification.
Il aurait fallut cette partie (le formulaire) qui s'occupe à saisir le login/pass en question.


Puis dire que "ça ne marche pas" n'est malheureusement pas une information pertinente, ça ne dit rien d'ailleurs.
Il faut expliquer qu'est-ce que tu obtiens, comme :
Obtient tu une erreur type 404 (page inconnue) ?
Une page blanche ?
Le message "connection réussie !!!" ou "Login ou mot de passe erroné !!!"
Ou autre ...


Rajoute provisoirement ceci dans ton code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
    $sql = "SELECT COUNT(*) AS total, id
    FROM auteur
    WHERE mdp_admin = '".$mdp_admin."'
    AND login_admin = '".$login_admin."'";
    $auteur_rs = mysql_query($sql, $conex);
    $auteur_tot = mysql_fetch_assoc($auteur_rs);
 
print_r($_POST);
echo $sql.'<br />';
echo 'Nombre de résultat : '.$auteur_tot['total'].'<br />';
 
    //
    if ((int)$auteur_tot['total'] === 1) {
        // Ok. Cet auteur existe.
    }
Histoire de constater visuellement ce que contient POST et la chaine de requête et le nombre de résultat.

Mais penche toi sur les sessions en Php, il te manque un système de persistence, car encore une fois, pour mettre en place un espace "Admin" il faut quelque chose qui mémorise QUI s'est identifié.
-> Les sessions


Au passage, et si cela n'est pas fait, active l'affichage des erreurs en Php et MySQL.
Dans le php.ini : display_errors à On, et mysql.trace_mode à On

Aussi, un saut de ligne en HTML c'est <br /> (et non </br>)
De même qu'il n'est pas correcte de mettre des <br /> entre les <li>. Si on souhaite que chaque <li> soient des lignes, on définie coté CSS un display : block; (que ces LI soient des éléments de types blocs).
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/01/2012, 09h55   #5
Membre du Club
 
" "
Inscription : janvier 2008
Messages : 204
Détails du profil
Informations professionnelles :
Activité : " "

Informations forums :
Inscription : janvier 2008
Messages : 204
Points : 59
Points : 59
merci pour tout.
En fait c'est je suis loin d'etre un programmeur et c'est la premiere fois que je m'essaie à des choses similaires.
c'est pourquoi des erreurs bizar, bref,

sinon dans ma page index.php j'ai une formulaire qui contient auteur, typr de document et theme et si tout se passe bien, a chaque fois que je remplie une de ces cases et je click envoie , ça doit me renvoyer vers une page php qui permettrai de faire une recherche dans ma table auteur par exemple ou theme...

Encore une fois merci de votre AIDE
arm3366 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 11h38   #6
Membre du Club
 
" "
Inscription : janvier 2008
Messages : 204
Détails du profil
Informations professionnelles :
Activité : " "

Informations forums :
Inscription : janvier 2008
Messages : 204
Points : 59
Points : 59
une derniere chose,
si je veux que lorseque je click sur "connexion" ça me redirige vers la page admin.php parce que pour le moment j'arrive à verifier si les login et mot de passe sont dans la base

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
if ((int)$auteur_tot['total']==1) {
 
					 echo 'connection réussie !!!'.'<br/>';
					 echo '<ul>';
					 echo '<li>'.'<a href="ajouter.php"> Ajouter un document ou un ouvrage </a> ';
					 echo '<li>'.'<a href="supprimer.php"> Supprimer un document ou un ouvrage </a>'; 
					 echo '<li>'.'<a href="modifier.php"> Modifier un document ou un ouvrage </a> '; 
					 echo '</ul>'; 
 
			}
			else {
				echo 'Login ou mot de passe erroné !!!'.'<br/>';
				echo 'Pour retourner Accueil : '.'<a href="index.php"> Cliquer ici </a>'; 
			}
je veux qu'une fois que je trouve (int)$auteur_tot['total']==1 à la ligne 2, je fais en sorte que si je click sur "connexion " je me redirige vers une page où j'aurais les liens supprimer, ajouter ,....

ma question est comment gerer le boton "connexion" pour que ça declanche cela?
merci par avance
arm3366 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 13h13   #7
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 728
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 728
Points : 3 295
Points : 3 295
Citation:
si je veux que lorseque je click sur "connexion" ça me redirige vers la page admin.php
Ca se fait avec la fonction header.
La doc -> header()
Bien prendre note qu'un header() doit se faire avant que le moindre contenu soit renvoyé (comme du HTML, et même un espace, qui est une erreur très fréquente).

Ce qui donne quelque chose comme :
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
<?php
// DEBUT TRAITEMENTS
// Connexion à la Bdd effectuée ici
 
$retour_msg = array();
//
if (isset($_POST['mdp_admin'], $_POST['login_admin'])) {
    $mdp_admin = mysql_real_escape_string($_POST['mdp_admin']);
    $login_admin = mysql_real_escape_string($_POST['login_admin']);
    //
    $sql = "SELECT COUNT(*) AS total, id_auteur
    FROM auteur
    WHERE mdp_admin = '".$mdp_admin."'
    AND login_admin = '".$login_admin."'";
    $auteur_rs = mysql_query($sql, $conex);
    $auteur_tot = mysql_fetch_assoc($auteur_rs);
    //
    if ((int)$auteur_tot['total'] === 1) {
        // Ok. Cet auteur existe.
        header('Location: admin.php');
        exit(); // Point d'arrêt nécessaire
    }
    else {
        // Erreur d'identification
        $retour_msg[] = 'Login ou mot de passe erroné !!!';
    }
}
// FIN TRAITEMENTS
 
?>
<html>
<head>
    <title>Identification</title>
<head>
<body>
 
<?php
if (!empty($retour_msg)) {
    foreach ($retour_msg as $msg) {
        echo $msg.'<br />';
    }
    //
    echo 'Pour retourner Accueil : <a href="index.php">Cliquer ici</a>';
}
?>
 
<!--  FORMULAIRE D'IDENTIFICATION -->
<form action="identification.php" method="post">
... etc (login + pass + submit) ...
</form>
 
</body>
</html>
En partant du principe que cette page soit faite pour une identification (genre identification.php)

Donc ici le header() (la redirection) se fait uniquement si l'identification est réussi.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/01/2012, 13h22   #8
Membre du Club
 
" "
Inscription : janvier 2008
Messages : 204
Détails du profil
Informations professionnelles :
Activité : " "

Informations forums :
Inscription : janvier 2008
Messages : 204
Points : 59
Points : 59
mille merci je m'y mets
arm3366 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h02.


 
 
 
 
Partenaires

Hébergement Web