Controle d'accés à une base de données

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Controle d'accés à une base de données

par AB » 05 mai 2009, 17:34

Il y a un tuto d'inscription et de connexion dans un espace membre ici http://www.phpfrance.com/forums/voir_sujet-242539.php (avec le code html).
Il te suffira de peu de modifications pour inclure le champ admin et de faire une redirection avec un header suivant les cas.

EDIT : Ah oui le mode italique c'est pénible à lire à l'écran... d'où les remarques. Pour mieux pouvoir t'aider c'est mieux de mettre toutes les chances de ton côté. Au passage, cela vaut aussi pour les corrections de copies...

par dunbar » 05 mai 2009, 16:27

Il doit y avoir un sérieux soucis c'est pas normal que l'on voit le code php avec ton message d'erreur

par Freddo31 » 05 mai 2009, 14:20

marche pas non plus...voila les erreurs...
'.$sql.'
'.mysql_error()); $data = mysql_fetch_assoc($req); if($data['pwd'] != $password) { echo '

Mauvais login / password. Merci de recommencer
'; include('connexion.php'); // On inclut le formulaire d'identification exit; }else { session_start(); $_SESSION['login'] = $login; echo 'Vous etes bien logué'; // ici vous pouvez afficher un lien pour renvoyer // vers la page d'accueil de votre espace membres header("Location: ./accueil.html"); } }else { echo '

Vous avez oublié de remplir un champ.
'; include('login.htm'); // On inclut le formulaire d'identification exit; }*/ $login = $_POST['login']; $password = $_POST['password']; $trouve = FALSE; if (isset ($login)) { mysql_connect ("localhost", "root", "") or die ("Erreur de connexion à MySql"); //connexion à la base mysql_select_db ("BOMB") or die ("Impossible de sélectionner cette base de donnée");//sélection de la base } $resultat = mysql_query ("SELECT * FROM pilotes WHERE login = '".$login."'"); while ($data = mysql_fetch_array($resultat) && ($trouve == FALSE)) { if (($data['login'] == $login) && ($data['mdp'] == $password)) { $redirection = ($data['Admin'] == 'o') ? './indexadmin.php' : './index.php' ; include ($redirection); } } if ($trouve == FALSE) { echo ''; echo ''; echo''; echo ''; echo''; echo''; echo''; echo '

Erreur de login ou de mot de passe

'; echo''; echo''; } ?>

par dunbar » 05 mai 2009, 07:31

$login = $_POST['login'];
$password = $_POST['password'];
$trouve = FALSE;

    if (isset ($login))
	    {
	        mysql_connect ("localhost", "root", "") or die ("Erreur de connexion à MySql"); //connexion à la base
	        mysql_select_db ("BOMB") or die ("Impossible de sélectionner cette base de donnée");//sélection de la base
	    }

    $resultat = mysql_query ("SELECT * FROM pilotes WHERE login = '".$login."'");
    while ($data = mysql_fetch_array($resultat) && ($trouve == FALSE))
	    {
	        if (($data['login'] == $login) && ($data['mdp'] == $password))
	         {
	            $redirection = ($data['Admin'] == 'o') ? './indexadmin.php' : './index.php' ;
	            include ($redirection);
	         }

	    }

    if ($trouve == FALSE)
    {
        echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
            echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >';
                echo'<head>';
                    echo '<title>Erreur de connexion</title>';
                    echo'<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />';
                echo'</head>';
                echo'<body>';
                    echo '<p>Erreur de login ou de mot de passe<p>';
                echo'</body>';
            echo'</html>';
    }

par Freddo31 » 05 mai 2009, 00:06

non plus...mais je dois remplacer tout mon ancien code?
car si il faut ton code marche, mais c'est moi qui l'exploite mal...

par dunbar » 04 mai 2009, 23:59

Et comme ceci :?:
$resultat = mysql_query ("SELECT * FROM pilotes WHERE login = '".$login."'");
    while ($data = mysql_fetch_array($resultat) && ($trouve == FALSE))
    {
        if (($data['login'] == $login) && ($data['mdp'] == $password))
        {
            $redirection = ($data['Admin'] == 'o') ? './indexadmin.php' : './index.php' ;
            include ($redirection);
         }   

    }

par Freddo31 » 04 mai 2009, 23:51

non, ça ne fonctionne pas... :(

je comprend pas...je me prends la tête depuis cet aprem dessus...

par dunbar » 04 mai 2009, 23:45

Et comme ceci ça ne fonctionne pas mieux :?:
$resultat = mysql_query ("SELECT * FROM pilotes WHERE login = '".$login."'");
    while ($data = mysql_fetch_array($resultat) && ($trouve == FALSE))
    {
        if (($data['login'] == $login) && ($data['mdp'] == $password))
        {
            $redirection = ($data['Admin'] == 'o') ? './indexadmin.php' : 'autre.php' ;
            include ($redirection);
            $trouve = TRUE;
        }else
        {
            if (($data['login'] == $login) && ($data['mdp'] == $password))
            {
                include ("./accueil.html");
                $trouve = TRUE;
            }
        }

    }
J'ai pas tester :!:

par Freddo31 » 04 mai 2009, 23:32

c'est la lettre 'o'.
après le include fonctionne bien...disons que quand j'ai qu'un utilisateur enregistré...les redirections fonctionnent mais quand j'en ai plusieurs enregistrés dans la base (1 en tant qu'admin avec le lettre o donc, et un autre sans être admin) et bien la ça marche plus!

par dunbar » 04 mai 2009, 23:28

Une bête question mais ton test concernant l'admin il doit être quoi o ou 0
La lettre o ou le chiffre zéro ?

De plus pour une redirection un
header("Location: ./indexadmin.php");
Ne serais pas mieux :?:

Et pourquoi ne pas faire
$resultat = mysql_query ("SELECT * FROM pilotes WHERE login = '" . $login . "'");
De plus il y a une erreur dans cette partie
$resultat = mysql_query ("SELECT * FROM pilotes");
    while ($data = mysql_fetch_array($resultat) && ($trouve == FALSE))
    {
        if (($data['login'] == $login) && ($data['mdp'] == $password) && ($data['Admin'] == 'o'))
        {
            include ("./indexadmin.php");
            $trouve = TRUE;
        }else
        {
            if (($data['login'] == $login) && ($data['mdp'] == $password))
            {
                include ("./accueil.html");
                $trouve = TRUE;
            }
        }
        } <--- a quoi sert celle-ci ?
    }

par Freddo31 » 04 mai 2009, 23:22

sans déconné, c'est un forum d'aide ou un forum de critique la?
à quoi ça sert de répondre comme ça? tu peux pas tout simplement dire que t'as mal compris mon problème?
...entre le 1er qui est un VIPhp et toi...je commence à me demander si le forum vaut vraiment le coup...je galère comme c'est pas possible, on vous me répondez des choses qui n'ont aucun intérêt...

en gros, le problèmes, c'est que j'arrive pas à rediriger correctement l'utilisateur selon si il est admin ou non, ou tout simplement si le logs ou le pass existent ou sont erronées...

c'est plus clair la?

par dunbar » 04 mai 2009, 23:18

C'est accepter ceci (ça merdouille) dans BTS :?:
Parce comme détail d'erreur j'ai déjà vue mieux :?

par Freddo31 » 04 mai 2009, 23:09

????
il est ou le rapport?...
c'est un sujet important pour moi...c'est pour mon BTS...alors je demande un peu d'aide...un coup de pouce.

merci d'avance.

par Berzemus » 04 mai 2009, 22:47

Que ça ne sert à rien d'écrire en italique.

Controle d'accés à une base de données

par Freddo31 » 04 mai 2009, 22:25

Bonjour tout le monde!!
j'ai un petit soucis avec un controle!!
j'explique.
j'utilise Wampp server.j'ai créer une BD directement en dur.j'ai une table pilote ou des nouveaux pilote peuvent s'enregistrer...avec login MdP ...etc...et après moi directement dans le dur, j'ai le choix de rentrée une valeur d'un attribut pour dire si oi ou non le pilote est "admin" ou non.
tout cela dans le but de ne pas rediriger vers la même page après connexion...
si pas admin, on va vers une page ou on a pas accès au panneau d'admin...si on est admin, on a la même page, mais avec un lien vers une page d'administration, ou on peu créer des tables...etc...

donc sur la page de connexion, on tape login et MdP puis on valide avec le bouton valider, et ça me redirige vers une page validation.php qui redirige ensuite vers l'une ou l'autre page suivant si on est admin ou non...le problème c'est qu'au niveau du contrôle...ça merdouille...je vous mets donc le code de ma page validation.php.


<?php
	$login = $_POST['login'];
	$password = $_POST['password'];
	$trouve = FALSE;
	if (isset ($login))
	{
		mysql_connect ("localhost", "root", "") or die ("Erreur de connexion à MySql"); //connexion à la base
		mysql_select_db ("BOMB") or die ("Impossible de sélectionner cette base de donnée");//sélection de la base
	}
	
	$resultat = mysql_query ("SELECT * FROM pilotes");
	while ($data = mysql_fetch_array($resultat) && ($trouve == FALSE))
	{
		if (($data['login'] == $login) && ($data['mdp'] == $password) && ($data['Admin'] == 'o'))
		{
			include ("./indexadmin.php");
			$trouve = TRUE;
		}else
		{
			if (($data['login'] == $login) && ($data['mdp'] == $password))
			{
				include ("./accueil.html");
				$trouve = TRUE;
			}
		}
		}
	}
	if ($trouve == FALSE)
	{
		echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
			echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >';
				echo'<head>';
					echo '<title>Erreur de connexion</title>';
					echo'<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />';
				echo'</head>';
				echo'<body>';
					echo '<p>Erreur de login ou de mot de passe<p>';
				echo'</body>';
			echo'</html>';
	}
?>

voila, vous en pensez quoi?