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 ! ;-)
A voir également:
- Empêche l'affichage d'une page PHP
- Supprimer une page word - Guide
- Imprimer tableau excel sur une page - Guide
- Affichage double ecran - Guide
- Créer une page facebook - Guide
- Comment traduire une page - Guide
13 réponses
Pour le teste, l'erreur est normal car il ne faut pas de guillemet
Par ailleurs, votre code ne fait pas référence à cette session..?
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?
Bien-sur il faut adapter votre code pour que la variable $rang soit sortie de votre table.
$_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+
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 ! ;-)
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
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).
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 :
Et pour le petit test, cela :
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 ! ;-)
<?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 :
Et mon problème persiste.
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 :
Cette fois, la connexion est possible mais les utilisateurs non connectés peuvent accéder aux pages.
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 :
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 :
Une fois un problème résolu, mettez un +1 sur la réponse qui vous à aidez et mettez Problème Résolu ! ;-)
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 ! ;-)
Edit : lorsque je fais le test, rien ne s'affiche. Page blanche.
Du coup je dois mettre cela avant le code php de connexion ? :
if($_SESSION['rang'] != 1){ header('location: index.php'); }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!