Espace admin, modo et membre (enum)

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 : Espace admin, modo et membre (enum)

par Truc » 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 ?

par Angerfist » 20 févr. 2008, 01:53

remplacé par "admin"

par Truc » 18 févr. 2008, 00:51

remplacé par ?

par Angerfist » 17 févr. 2008, 21:09

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

par Truc » 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"

par Angerfist » 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 ;)

par Truc » 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.

par Angerfist » 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 ;)

par Truc » 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.

par Angerfist » 16 févr. 2008, 17:16

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

par Truc » 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

par Angerfist » 16 févr. 2008, 16:13

la base qui contient c'est phpl_membres, donc je met phpl_membres ?

par Truc » 16 févr. 2008, 16:05

Je ne sais pas moi....
Dans la structure de la table je vois

Code : Tout sélectionner

`admin` enum('0','1','2') collate latin1_general_ci NOT NULL default '0',
Tu parles au début d'un champ énum pour les droit... donc je me dis qu'il s'agit du champ "admin" pourquoi tu veux récupérer "id_prono" (aucune idée à quoi correspond ce champ :? )

par Angerfist » 16 févr. 2008, 16:02

function VerifSession ($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['admin'] = $row['id_prono'];
                                            
    //session_start();
    }
else {$a=0;}
return ("$a");
}
Je dois donc récupérer "id_prono" ?

par Truc » 16 févr. 2008, 15:52

i
$_SESSION['admin'] = $row['admin']; // en récupérant par SELECT admin, ... FROM ....

...
tu ne récupères pas le champ "admin" de la base donc cqfd ...