Espace admin, modo et membre (enum)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

16 févr. 2008, 17:03

Non !
Prends le temps de bien lire et comprendre mon dernier message...
Il n'y a pas de piège la réponse y est donnée :-k

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 17 Messages

16 févr. 2008, 17:16

Ben je met admin, comme je fait depuis tout a l'heure mais sa marche toujours pas :cry:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

16 févr. 2008, 17:35

Affiche les variables à tous les endroit possibles :wink:
Essaie de suive leur évolution...

Que vaut $_SESSION['admin'] avant la sortie de la fonction.... après .. etc.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 17 Messages

16 févr. 2008, 18:22

Bon dans le fichier login.php j'ai créer:
- $admin = $row['admin'];
- $_SESSION['admin'] = $admin;

Parce que sa n'y était pas. J'ai lancer sur le FTP, je me suis connecter avec l'option administrateur impeccable. Avec l'option modérateur impeccable. Et l'option membre j'arrive pas a me connecter *normal*, mais je voudrais avoir comme message 'Identifiants erronés !'.
Je pense qu'il manque quelque chose mais je ne sais quoi :?
<?php
require("../config.php");
ouverture();
if (isset($_POST['pseudo'])){$pseudo=$_POST['pseudo'];}
if (isset($_POST['pass'])){$pass=$_POST['pass'];}
if (isset($_POST['autoidentification'])) {$autoidentification=$_POST['autoidentification'];} else {$autoidentification='';}

	if($pseudo=='' || $pass=='')
	{
   	header("Location:index.php?identification=non");
	}
	else
	{
        $query = "SELECT mot_de_passe FROM phpl_membres WHERE pseudo='$pseudo'";
	$result = mysql_query($query);
	$row = mysql_fetch_array($result);
        $password_crypt = md5($pass);

	if($row['mot_de_passe'] != $password_crypt or mysql_num_rows($result)=="0")
	{
        header("Location:index.php?identification=non2");
	}
	else

	{
	$pseudo = addslashes($pseudo);

        $ip = $_SERVER["REMOTE_ADDR"];
	$time = time();
	$query = "SELECT * FROM phpl_membres WHERE pseudo='$pseudo'";
	$result = mysql_query($query) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
	$row = mysql_fetch_array($result);
	$mot_de_passe = $row['mot_de_passe'];
	$admin = $row['admin'];

	mysql_query("UPDATE phpl_membres SET ip='$ip', last_connect='$time' WHERE pseudo='$pseudo'");
        if ($autoidentification) {$expire=365*24*3600;}
        else {$expire=3600;}
	setcookie("user","$pseudo",time()+$expire,"/","");
	setcookie("mot_de_passe","$mot_de_passe",time()+$expire,"/","");
	session_start();
	session_register('user');
	session_register('mot_de_passe');
	$_SESSION['user'] = $pseudo;
	$_SESSION['mot_de_passe'] = $mot_de_passe;
    $_SESSION['admin'] = $admin;
	header("Location: index.php?page=championnat");
}
}
?>
Merci pour ton aide Truc ;)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

16 févr. 2008, 20:58

Je t'avoue que c'est un peu le *foutoir"* dans ton code :?
Tu y reviendras dessus dans 3 mois et tu vas en rire toi même :lol:
Mais ça fonctionne...

Le système de droit est à peu prêt en place.
A chaque fois que tu souhaiteras afficher des messages ou éléments pour tel ou tel niveau (membre, admin etc.) tu testeras le contenu de la variable $_SESSION["admin"].
Si elle vaut zéro alors il s'agit d'un membre normal.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 17 Messages

17 févr. 2008, 19:35

Pour te dire franchement c'est pas moi qui est fait le code.
Je l'ai télécharger et installer sur mon site, mais comme il manque quelque petite chose, j'essaye de les ajouter.
Pour le message c'est pas grave je laisse sans. Il verront bien qu'ils ont pas accès a cette partie :lol:

Bon comme je le dit c'était un exemple, je croyais y réussir sans votre aide pour le placer a l'endroit que je voulais, j'ai fait quasiment pareil mais sa ne marche pas. (je vais te mettre étape par étape)

menu.non-identifie.html
<TABLE border="1" cellpadding="0" cellspacing="0" width="100%" align="center">
       <TR>
      

        <TD  height="23"  class="prono1">

            <TABLE class="prono" width="100%">

              <TR>

                <TD width="15"><IMG border="0" src="trait-jaune.gif" width="22" height="9" alt=""></TD>

                <TD height="15"><div class="menu1"><B><?php echo PRONO_MENU_MON_COMPTE; ?></B></div></TD>
                
              </TR>
              
              </TABLE>
              
        </TD>

      </TR>

      <TR>

       <TD height="20">
       
         <FORM action="login.php" method="post">

           <TABLE cellSpacing=0 width="100%" border=0 align="center">
            <TBODY>
             <TR>
               <TD><div class="menu2"><B>&nbsp;<?php echo PRONO_MENU_LOGIN; ?></B></div></TD>
               <TD><div class="menu2"><INPUT class="log" size="10"  name="user"> </div></TD>
             </TR>
             <TR>
               <TD><div class="menu2"><B>&nbsp;<?php echo PRONO_MENU_MDP; ?></B></div></TD>
               <TD><div class="menu2"><INPUT class="log" size="10" type="password" name="pass"></div></TD>
               <TD><input type="hidden" name="autoidentification" value="1"><input type="submit" value="Ok"></TD>

             </TR>
           </TABLE>
         </FORM>
       </TD>
      </TR>
      <TR>
        <TD colspan="3"><div class="menu2">&nbsp;<a href="?page=perdu_mdp"><?php echo PRONO_MENU_OUBLIE; ?></a></div>
        </TD>
      </TR>
      </TBODY>
</TABLE>
login.php
<?php
require ("../config.php");
ouverture ();
$autoidentification = isset($_POST['autoidentification']) ? $_POST['autoidentification'] : NULL;

	if(!isset($_REQUEST['user']) or !isset($_REQUEST['pass']))
	{
   	 header("Location: index.php?page=erreur_login&t=0");
	}
	elseif ($_REQUEST['user']=='' || $_REQUEST['pass']=='')
	{
         header("Location: index.php?page=erreur_login&t=0");
        }

	else
	{
        $user = addslashes($_REQUEST['user']);
        $pass = $_REQUEST['pass'];
        $query = "SELECT mot_de_passe FROM phpl_membres WHERE pseudo='$user'";
	$result = mysql_query($query);
	$row = mysql_fetch_array($result);
        $password_crypt = md5($pass);
        $modo = $row['admin'];

	if($row['mot_de_passe'] != $password_crypt or mysql_num_rows($result)=="0")
	{
        header("Location: index.php?page=erreur_login&t=1");
	}
	else
	{
        $ip = $_SERVER["REMOTE_ADDR"];
	$time = time();
	$query = "SELECT * FROM phpl_membres WHERE pseudo='$user'";
	$result = mysql_query($query) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
	$row = mysql_fetch_array($result);
	$mot_de_passe = $row['mot_de_passe'];
    $modo = $row['admin'];

	mysql_query("UPDATE phpl_membres SET ip='$ip', last_connect='$time' WHERE pseudo='$user'");
        if ($autoidentification) {$expire=365*24*3600;}
        else {$expire=3600;}
	setcookie("user","$user",time()+$expire,"/","");
	setcookie("mot_de_passe","$mot_de_passe",time()+$expire,"/","");
	session_start();
	session_register('user');
	session_register('mot_de_passe');
	$_SESSION['user'] = $user;
	$_SESSION['mot_de_passe'] = $mot_de_passe;
	$_SESSION['modo'] = $modo;
	header("Location: index.php");
}}
il me demande d'aller sur index.php mais dedans il y a menu.inc.php
<?

if (isset($_COOKIE['user'])) {$user_pseudo=$_COOKIE['user'];} else {$user_pseudo='';}
if (isset($_COOKIE['mot_de_passe'])) {$user_mdp=$_COOKIE['mot_de_passe'];} else {$user_mdp='';}

VerifSession ($user_pseudo,$user_mdp); // appel de la fonction avec les bon paramètres

if(isset($_SESSION['modo'])) // si la variable de session à été crée donc identifié correctement
 {
    if($_SESSION["modo"] == 0)
                { 
                $requete= "SELECT pseudo, id_prono FROM phpl_membres WHERE pseudo='$user_pseudo'";
                $result = mysql_query($requete);
                $row = mysql_fetch_array($result);
                $user_pseudo=$row[0];
                $user_id=$row[1];
                $connecte="oui";
                $include="menu.identifie.htm";
                include ($include);
                }
    elseif($_SESSION["modo"] == 1 || $_SESSION["modo"] == 2)
    			{ 
                $requete= "SELECT pseudo, id_prono FROM phpl_membres WHERE pseudo='$user_pseudo'";
                $result = mysql_query($requete);
                $row = mysql_fetch_array($result);
                $user_pseudo=$row[0];
                $user_id=$row[1];
                $connecte="oui";
                $include="menu.identifie2.htm";
                include ($include);
                }
 }
else
 { 
   $include="menu.non-identifie.htm";
   include ($include);
   $connecte="non";
 }

?>
Enfin fonctions.php
function VerifSession ($user_pseudo,$user_mdp)
{

if ($user_pseudo and $user_mdp)
	{
        $requete= "SELECT mot_de_passe, id_prono FROM phpl_membres WHERE pseudo='$user_pseudo'";
        $result = mysql_query($requete);
        $row = mysql_fetch_array($result);
        
        if ($row["mot_de_passe"] == $user_mdp);
        $_SESSION['modo'] = $row['modo'];

	//session_start();
	}
else {$a=0;}
return ("$a");
}
Le problème c'est quand j'entre mon pseudo et pass, il me remet le formulaire comme j'avais dans pour mon exemple :o
Pour info, j'ai pas oublié de mettre session_start() dans ma page index.php ;)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 févr. 2008, 20:04

Toujours le même souci

tu as $row['modo']; à savoir que $row contient les données retournée par la requête donc tout ce qui se trouve entre "SELECT" et "FROM" et la il n'y a pas de "modo"

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 17 Messages

17 févr. 2008, 21:09

le $row['modo'] c'était seulement dans la fonctions, je l'ai remplacer mais sais toujours pareil :?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

18 févr. 2008, 00:51

remplacé par ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 17 Messages

20 févr. 2008, 01:53

remplacé par "admin"

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

21 févr. 2008, 21:49

Histoire d'être sûr et pour faire durer le sujet encore plus longtemps.... #-o

Elle a quelle tronche maintenant la requête ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute