Empêche l'affichage d'une page PHP

Fermé
nik029 Messages postés 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 - Modifié par nik029 le 23/09/2012 à 14:53
nik029 Messages postés 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 - 3 oct. 2012 à 11:13
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 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
26 sept. 2012 à 12:15
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 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
Modifié par nik029 le 26/09/2012 à 12:19
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 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
26 sept. 2012 à 12:36
Dans votre code plus haut la session $_SESSION['rang'] n'existe pas.
0
nik029 Messages postés 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
Modifié par nik029 le 26/09/2012 à 13:25
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 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
26 sept. 2012 à 14:43
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 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
26 sept. 2012 à 15:45
ç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 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
24 sept. 2012 à 07:43
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 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
Modifié par nik029 le 24/09/2012 à 19:01
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 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
24 sept. 2012 à 20:10
Vous êtes sure que $_SESSION['rang'] est égal à 1 lorsque vos membres se connectes?
0
nik029 Messages postés 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
25 sept. 2012 à 17:33
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 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
25 sept. 2012 à 17:41
ça donne quoi un echo de $_SESSION['rang']?
Vous pouvez poster le code de votre page d'identification?
0
nik029 Messages postés 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
Modifié par nik029 le 26/09/2012 à 11:52
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 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
26 sept. 2012 à 15:17
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 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
26 sept. 2012 à 16:32
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 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
26 sept. 2012 à 18:29
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 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
Modifié par nik029 le 26/09/2012 à 20:10
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 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
29 sept. 2012 à 10:57
Up ?
0
nik029 Messages postés 281 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 13 avril 2022 44
3 oct. 2012 à 11:13
Mon problème est réglé.
0