Empêche l'affichage d'une page PHP

nik029 Messages postés 315 Statut Membre -  
nik029 Messages postés 315 Statut Membre -
Bonjour,

J'ai développer pour mon site un espace membre. J'aimerais que cette espace ne soit pas visible tant que l'on n'est pas connecté. J'ai pris donc ce petit code que j'ai intégré à toute mes pages (la page index.php était la page de connexion) :

<?php session_start(); 
include("require/connect.php"); 

if($_SESSION['rang'] != 1){  
header('location: index.php'); 
} 
?> 
  

Le soucis, c'est que, certes les pages n'apparaissent plus lorsqu'on est connecté, mais lorsqu'on veut ce connecter, la connexion devient impossible car on est à chaque fois ramené sur la page index.php (les membres ayant tous un rang = 1).

Comment faire ?

Merci d'avance.



Une fois un problème résolu, mettez un +1 sur la réponse qui vous à aidez et mettez Problème Résolu ! ;-)
A voir également:

13 réponses

tryan44 Messages postés 1381 Statut Membre 220
 
Pour le teste, l'erreur est normal car il ne faut pas de guillemet
 echo $_SESSION['rang'];

Par ailleurs, votre code ne fait pas référence à cette session..?
1
nik029 Messages postés 315 Statut Membre 44
 
C'est à dire "ne fait pas référence à cette session" ?

Edit : lorsque je fais le test, rien ne s'affiche. Page blanche.
0
tryan44 Messages postés 1381 Statut Membre 220
 
Dans votre code plus haut la session $_SESSION['rang'] n'existe pas.
0
nik029 Messages postés 315 Statut Membre 44
 
Je croyais qu'il fallait pas le mettre sur la page de connexion..

Du coup je dois mettre cela avant le code php de connexion ? :

if($_SESSION['rang'] != 1){	
header('location: index.php');
}
0
tryan44 Messages postés 1381 Statut Membre 220
 
On ne sait pas comprit :).

Dans votre code actuel (celui qui est plus haut) vous déclarez qu'une seule session soit $_SESSION['username']=$username;
Vous dites faire appel à la session $_SESSION['rang'] mais pour que cette session soit utilisable, il faut bien qu'elle soit déclaré quelque part!
0
tryan44 Messages postés 1381 Statut Membre 220
 
ça ne serait pas plus simple de déclarer la session "rang" en même temps que la session "username" dans votre code?
$_SESSION['username']=$username;
$_SESSION['rang']=$rang;

Bien-sur il faut adapter votre code pour que la variable $rang soit sortie de votre table.
1
mpmp93 Messages postés 7217 Statut Membre 1 340
 
Bonjour

Vous dites: "...que j'ai intégré à toute mes pages"

Vous avez la réponse: ne pas mettre ce bout de code dans les pages de connexion...

A+
0
nik029 Messages postés 315 Statut Membre 44
 
Oui, j'ai mis a toutes mes pages, sauf à la page de connexion. Ma formulation n'était pas bonne en effet.

Une fois un problème résolu, mettez un +1 sur la réponse qui vous à aidez et mettez Problème Résolu ! ;-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tryan44 Messages postés 1381 Statut Membre 220
 
Vous êtes sure que $_SESSION['rang'] est égal à 1 lorsque vos membres se connectes?
0
nik029 Messages postés 315 Statut Membre 44
 
Si l'utilisateur est au rang admin, alors son rang est égal à 1.
Si l'utilisateur est au rang modérateur, alors son rang est égal à 2.
Il n'y a pas d'autres rangs possibles et j'ai essayé de me connecter en tant qu'admin (donc avec un rang égal à 1).
0
tryan44 Messages postés 1381 Statut Membre 220
 
ça donne quoi un echo de $_SESSION['rang']?
Vous pouvez poster le code de votre page d'identification?
0
nik029 Messages postés 315 Statut Membre 44
 
Voici le code de la page index.php :


<?php session_start(); ?>   

<form method="post" action="index.php" style="margin:0">   
               <div class="modal-body">   
               <fieldset><?php   

if(isset($_POST['submit']))   
{   
$username = htmlspecialchars(trim($_POST['username']));   
$password = htmlspecialchars(trim($_POST['password']));   

 if($username&&$password)   
 {   
 $password=md5($password);   
 $connect = mysql_connect('localhost', 'nomutilisateur', 'motdepasse');   
 mysql_select_db('nombdd');   
    
 $log=mysql_query("SELECT * FROM users WHERE username='$username' and password='$password'");   
 $rows=mysql_num_rows($log);   
 if($rows==1)   
 {   
    
 $_SESSION['username']=$username;   
 echo '<script language="Javascript">document.location.replace("accueil.php");</script>';   

    
 }else echo "<div class='alert-message error'><a class='close' href='#' onClick='$(this).parent().slideUp();'>x</a><p>   
 <strong>Attention !</strong> Nom d'utilisateur ou mot de passe incorrect.</p></div>";   
    
 }else echo "<div class='alert-message error'><a class='close' href='#' onClick='$(this).parent().slideUp();'>x</a><p>   
 <strong>Attention !</strong> Veuillez saisir tous les champs.</p></div>";   
}   
?>   
                  <div class="clearfix">   
                  <label>Identifiant</label>   
                  <div class="input">   
                    <input name="username" type="text" placeholder="Identifiant"  style="height:28px" value="<?php if (isset($_POST['username'])) echo htmlentities(trim($_POST['username'])); ?>"  required/>   
                  </div>   
                 </div>   
                 <div class="clearfix">   
                  <label>Mot de passe</label>   
                  <div class="input">   
                    <input type="password" name="password" placeholder="Mot de passe" style="height:28px" value="<?php if (isset($_POST['password'])) echo htmlentities(trim($_POST['password'])); ?>" required>   
                  </div>   
                 </div>   
                 </fieldset>   
               </div>   
              <div class="modal-footer">   
                <input type="submit" name="submit" value="Connexion" class="btn primary">   
                   
              </div>   
              </form> 



Et pour le petit test, cela :

<?php session_start(); 
include("require/connect.php"); 

echo "$_SESSION['rang']" ; 
?>


donne ça :


Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/locasudf/public_html/admin/require/essais.php on line 4



Une fois un problème résolu, mettez un +1 sur la réponse qui vous à aidez et mettez Problème Résolu ! ;-)
0
nik029 Messages postés 315 Statut Membre 44
 
Du coup, qu'est-ce que je devrais faire ?

Car je viens d'essayer de faire cela :

<?php session_start();
include("connect.php");

if($_SESSION['username'] != $username){
	echo '<script language="Javascript">document.location.replace("index.php");</script>';
}
?>
  



Et mon problème persiste.
0
nik029 Messages postés 315 Statut Membre 44
 
Je viens d'essayer en ajoutant ce que tu m'a donné à ma page index.php
et en mettant ceci sur toutes les pages :

 <?php session_start();
include("connect.php");

if($_SESSION['rang'] != $rang){
	echo '<script language="Javascript">document.location.replace("index.php");</script>';
}
?>


Cette fois, la connexion est possible mais les utilisateurs non connectés peuvent accéder aux pages.
0
tryan44 Messages postés 1381 Statut Membre 220
 
Houlaaa ... vous l'avez codé vous même le code ou vous l'avez récupérer sur le net???

J'ai bien dit : "Bien-sur il faut adapter votre code pour que la variable $rang soit sortie de votre table. "
Ma question est donc : Est ce que lors de la vérification en BD le rang de l'utilisateur est sortit et attribué à une session?

Exemple à l'arrache :
		//On selectionne les données
		$index = mysql_query("SELECT ******");
		//si pas de résultat
		if(mysql_num_rows($index) == 0)
		{
			echo '<div id="erreur">Aucunes données ne correspond à votre saisie!</div>';
		}
		else{		
			while($result = mysql_fetch_array($index)){
					//on créer les session
					$_SESSION['username']=$username;
					$_SESSION['rang']=$rang;
				}
			}
0
nik029 Messages postés 315 Statut Membre 44
 
Voici le résultat affiché suite à la requête :

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/locasudf/public_html/admin/require/essais.php on line 10 
Aucunes données ne correspond à votre saisie!  
 

Une fois un problème résolu, mettez un +1 sur la réponse qui vous à aidez et mettez Problème Résolu ! ;-)
0
nik029 Messages postés 315 Statut Membre 44
 
Up ?
0
nik029 Messages postés 315 Statut Membre 44
 
Mon problème est réglé.
0