Empêche l'affichage d'une page PHP
nik029
Messages postés
315
Statut
Membre
-
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) :
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 ! ;-)
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 ! ;-)
13 réponses
-
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..?
-
ç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.
-
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+
-
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 ! ;-) -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Vous êtes sure que $_SESSION['rang'] est égal à 1 lorsque vos membres se connectes?
-
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).
-
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 ! ;-) -
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.
-
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.
-
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; } } -
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 ! ;-) -
-