Page 1 sur 1

[Résolu]Partie administration

Posté : 26 nov. 2011, 23:00
par Ascla
Bonsoir à tous,

Je suis codeur de mon site http://srylecraft.fr et après avoir créer un espace membre, je voudrais créer la partie administratif du site.
Je vous explique mon problème.
J'ai une base de donné avec dedans, le rang des personnes. Le rang est de 0 pour normal et 1 pour Administrateur. Je voudrais mettre une restriction sur la page administration.php que si l'utilisateur est au rang 0, il est redirigé vers la page index.php, alors que s'il est est au rang 1, il à accès à cette page.
Je pensais réutiliser mon système de session_start();
Voici le début du code que j'ai commencé à effectuer.
<?php
session_start();
if (!isset($_SESSION['login'])) {
	header ('Location: index.php');
	exit();
}
?>

<?php


$base = mysql_connect ('**.**.***.***', 'rweiawag_users', '***********');
		mysql_select_db ('rweiawag_users', $base);


    $sql = 'SELECT rang FROM users WHERE login="'.mysql_escape_string($_SESSION['login']).'"';
	$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

	
	//$data['rang'] = $rang 
	while($data = mysql_fetch_assoc($req)) 
	{
	if ($_SESSION['rang'] == 0)
	{
	header ('Location: index.php');
	exit();
	}

	}
	mysql_close(); 

?>
Ce code ne marche pas, car même une personne au rang 1 est redirigé vers index.php

Merci à vous d'avance pour l'aide que vous allez m'apporter.

Re: Partie administration

Posté : 27 nov. 2011, 00:05
par moogli
salut,

Pas besoin de while tu ne doit récupérer qu'une seule info
sans parler du fait que tu n'exploite pas la valeur issue de la requête SQL.
$sql = 'SELECT rang FROM users WHERE login="'.mysql_escape_string($_SESSION['login']).'"';
         $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_assoc($req)
if ($data['rang'] === 0) header('Location: index.php');
         }
         mysql_close();
?>
@+

Re: Partie administration

Posté : 27 nov. 2011, 00:22
par Ascla
Bonsoir, tout d'abord, merci de ta réponse rapide, je ne pensais pas que tu allais me rédigez le code. Juste un problème, tu avais oublié un " ; " après " $data = mysql_fetch_assoc($req) ". Donc je l'ai corrigé.
Sous le If, tu as mis un " } ", et je voulais savoir pourquoi l'as-tu mis ?
Donc j'ai corrigé à ma façon
<?php


$base = mysql_connect ('**.**.***.***', 'rweiawag_users', '***********');
		mysql_select_db ('rweiawag_users', $base);

$sql = 'SELECT rang FROM users WHERE login="'.mysql_escape_string($_SESSION['login']).'"';
         $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_assoc($req);
if ($data['rang'] === 0) header('Location: index.php');

         mysql_close();
?>
Mais l'utilisateur, il peux toujours avoir accès à la page, qu'il soit rang 0 ou 1.

Merci de votre aide.

Re: Partie administration

Posté : 27 nov. 2011, 00:29
par Ascla
J'ai résolue le problème. Tu as mis le signe === au lieu de ==.
Donc pour ceux qui ont le même problème que moi, voila la solution.

<?php


$base = mysql_connect ('**.**.***.***', 'rweiawag_users', '***********');
                mysql_select_db ('rweiawag_users', $base);

$sql = 'SELECT rang FROM users WHERE login="'.mysql_escape_string($_SESSION['login']).'"';
         $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_assoc($req);
if ($data['rang'] == 0) header('Location: index.php');

         mysql_close();
?>
Encore merci de ton aide, et bonne soirée.

Re: [Résolu]Partie administration

Posté : 27 nov. 2011, 01:27
par moogli
copier collé foireux :mrgreen: