page vu qui ne devrait pas

Par kornien, il y a 14 ans


bonjour,

je vous explique donc se petit soucis,

j'ai crée un espace membre, avec profil, index membre, bref uniquement si ont n'est loggé, malheureusement pour moi si je tape www.monsite.fr/profil.php même si je suis pas connecter j'arrive sur la page se qui est embêtant ^^

en haut du profil.php j'ai rajouter une redirection mais sa ne marche pas :

<?php
session_start();
if(empty($_SESSION'user']))
{
  header('Location: index.php');
}
?>

d’où peut bien venir l'erreur

cordialement

7 réponses

MrGuillou, il y a 14 ans

C'est normal le emptyempty avant le $_SESSION ?

WinuX, il y a 14 ans

Le "emptyempty" c'est un problème de ce forum ^^, quand t'ecris un empty, il t'en met deux.

Avec le peu de code là, on peut trop rien te dire malheureusement :/
Si tu fais un print_r() sur $_SESSION] et $_SESSION'user'] tu as quoi?

kornien, il y a 14 ans

bonjour:

voila mon code complet de profil.php

<?php
session_start();
if(empty($_SESSION'user']))
{
  header('Location: index.php');
}
$nom = $_SESSION'user'];
try{
$bdd = new PDO('mysql:host=name;dbname=name', 'login', 'pass') or die(print_r($bdd->errorInfo()));
$bdd->exec('SET NAMES utf8');
}
catch(Exeption $e){
die('Erreur:'.$e->getMessage());
}

$req = $bdd->prepare('SELECT * FROM user WHERE login=:login');
$req->execute(array('login'=>$_SESSION'user']));
$data = $req->fetch();
$req->closeCursor();
if(!empty($_POST))
{
  extract($_POST);
  $valid = true;

  if(empty($email))
  {
    $valid = false;
    $erreuremail = 'Indiquez une adresse email';
  }

  if(!empty($email) && filter_var($email,FILTER_VALIDATE_EMAIL)=== FALSE)
  {
    $valid = false;
    $erreuremail = 'Adresse email invalid';
  }

  if(empty($pass))
  {
    $valid = false;
    $erreurpass = 'Choisissez votre nouveau mot de passe';
  }

  if(!empty($pass) && strlen($pass)<5)
  {
    $valid = false;
    $erreurpass = '5 caractères minimum';
  }

  if(!empty($pass) && empty($passconf))
  {
    $valid = false;
    $erreurpassconf = 'Confirmez le mot de passe';
  }

  if(!empty($pass) && !empty($passconf) && $pass != $passconf)
  {
    $valid = false;
    $erreurpassconf = 'Mots de passe différents';
  }

  if($valid)
  {
    $to = $email;
    $subject = 'Votre profil';
    $message = 'Bonjour '.$nom.'!<br/><br/>
    Vous avez modifié votre profil.<br /><br/>
    Voici vos nouvelles informations:<br/>
    E-mail : '.$email.'<br/>
    Mot de passe :'.$pass.'<br/><br/>
    Cordialement www.Tonnerre-pics-up.fr';

    $headers = 'From:noreply@tonnerre-pics-up.fr'."\r\n";
    $headers.='MIME-version: 1.0'."\r\n";
    $headers.='Content-type: text/html; charset=utf-8'."\r\n";
    mail($to,$subject,$message,$headers);

    $req = $bdd->prepare('UPDATE user SET email=:email, pass=:pass WHERE login=:nom');
    $req->execute(array(
      'email'=>$email,
      'pass'=>sha1($pass),
      'nom'=>$nom
    ));
    $req->closeCursor();
    $ok = 'Modification réussie, vous allez recevoir un email avec vos identifiants';

    unset($_SESSION'user']);
    session_destroy();
  }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo LANG;?>" lang="<?php echo LANG;?>">
<head>
<meta name="generator" content="Tonnerre Pics UP <?php echo SC_VERSION;?>" /><!-- LET IT BIT! -->
<title>Profil</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="<?php echo LANG;?>" />
<link rel="stylesheet" media="screen" type="text/css" title="style" href="style.css" />
<meta name="description" content="<?php echo DESCRIPTION;?>"/>
<meta name="keywords" content="<?php echo KEYWORDS; ?>"/>
<meta name="robots" content="index,follow"/>
<link rel="shortcut icon" href="/site-img/favicon.ico" />
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("jquery", "1");</script>
</head>
<body>
<?php include 'admin/record_stat.php'; ?>
<div id="header" style="background-image:url(site-img/logo_bl.gif);">
</div>
<div class="contenucolor" style="float:left">
    <?php
        if(empty($_SESSION'user']))
        {
    ?>
        <h3>Connection à l'espace membre  </h3>

        Dèja inscrit ? cliquer <a href="login.php">ici</a> pour vous connectez. <br/><br/>
        Pas encore inscrit ? veuillez le faire <a href="inscription.php">ici.</a>
    <?php
        }
        else
        {
    ?>

        <h3>Bienvenue sur l'espace membre  </h3>

        Bonjour, <?php echo $_SESSION'user']; ?>     <a href="logout.php"><img src="site-img/deconnexion.png" alt="deco"/></a><br/><br/>
        Consultez votre <a href="index_membre.php">espace membre.</a>
    <?php
        }
    ?>
<br/><br/>
</div>
<div id="header2" style="background-image:url(site-img/header_bl.gif);"><center><br/>
<?php include 'include/res_so.php' ; ?>
<iframe src="http://www.mespubs.com/ads.php?id_zone=122&iframe=1" width="468" height="60" scrolling="no" frameborder="0"></iframe></center>
</div>
<div id="nav">
    <div style="margin-left:120px;">

<?php include 'include/menu.php'; ?>

    </div>
</div>
<div id="nav2"></div>
<div id="content" >
<div style="margin-left:122px; margin-right:122px;">
<br/><div class="contenucolor"><br/>
<?php echo 'Bonjour '.$nom.'';?>
<center><h3>Votre profil</h3><br/>

    <div id="menu"><a href="index_membre.php"><img src="site-img/acceuil.png" alt="acceuil"/></a>   <a href="profil.php"><img src="site-img/profil.png" alt="profil"/></a>   <a href="mesimages.php"><img src="site-img/mesimages.png" alt="mesimages"/></a>   <a href="logout.php"><img src="site-img/deco.png" alt="deconnexion"/></a></div><br/><br/>

    Vous pouvez modifier votre profil.<br/><br/>

    <?php if(isset($ok)) echo '<div class="ok">'.$ok.'</div>';?>
    <form action="profil.php" method="post">

      <label for="email">Email :</label><br/>
      <input type="text" name="email" value="<?php echo $data'email'];?>" /><br/>
      <div class="erreur"><?php if(isset($erreuremail)) echo $erreuremail;?></div><br/><br/>

      <label for="pass">Nouveau mot de passe: </label><br/>
      <input type="password" name="pass" /><br/>
      <div class="erreur"><?php if(isset($erreurpass)) echo $erreurpass;?></div><br/><br/>

      <label for="passconf">Confirmez le mot de passe :</label><br/>
      <input type="password" name="passconf" /><br/>
      <div class="erreur"><?php if(isset($erreurpassconf)) echo $erreurpassconf;?></div><br/><br/>

      <input type="submit" class="submit_button" value="Modifier" />

    </form>
</center>
<br/><br/>
</div></div>
<br/><center>
<table style="border: 2px dashed silver">
    <tr>
        <td>
<iframe src="http://www.mespubs.com/ads.php?id_zone=131&iframe=1" width="728" height="90" scrolling="no" frameborder="0"></iframe>
        </td>
    </tr>
</table></center>
<br/>
</div>
<!-- Début tag AdServerPub //-->
<script language="JavaScript" src="http://www2.adserverpub.com/group_slide.php?id=9423-13583&data=1"></script>
<script language="JavaScript" src="http://js.adserverpub.com/slide_adserverpub.js"></script>
<!-- Fin tag AdServerPub //-->
<div id="footer">
<div class="copy" style="padding-top:25px;" align="center"><?php include 'include/footer.php'; ?></div>
</div>
</body>
</html>
eloyas, il y a 14 ans

Bonjour :) ,

j'ai plusieurs manière, pour debuguer un code.

Je mets tout le temps en bas de mes pages, ceci :

<h3>Debugueur $_SESSION</h3><hr /> <pre><?php print_r($_SESSION); ?></pre>

<h3>Debugueur $_POST</h3><hr /> <pre><?php print_r($_POST); ?></pre>

<h3>Debugueur $_GET</h3><hr /> <pre><?php print_r($_GET); ?></pre>

Cela me permet de trouver rapidement une erreur.
Pour ton problème, je peux juste te conseiller de faire un print_r($_SESSION); pour voir si ta session est bien vide...

Cordialement Elo.

PaulB319, il y a 14 ans

J'ai moi aussi testé de mettre une redirection selon une condition. Le problème, c'est que php redirige à chaque fois. Cependant, la première condition fait ceci :

<?php
if(emptyempty($_SESSION'user'])) // Si la variable de session "user" est vide, on redirige vers index.php
{  
    header('Location: index.php');  
}  
?>

Il faudrait plutôt écrire quelque chose comme :

<?php
if(!empty($_SESSION'user'])) // Si la variable de session "user" existe, on redirige vers index.php
{  
    header('Location: index.php');  
}  
?>

En espérant vous avoir aidé, paul9.

thierrysudfr, il y a 14 ans

Bonsoir,
Pour ma part, je fais comme ceci (plus un contrôle en base de donnée, mais ce n'est pas l'objet). Ce n'est peut-être pas ce qu'il y a de mieux, mais ça fonctionne :

<?php
session_start();
if( isset($_SESSION'user'] && $_SESSION('user')!='') {
// le code de ma page
}else{
?>
    <p>Vous n'avez pas accès à cette page. Vous devez vous identifier.</p>
    <button onclick="javascript:location.href='index.php'">Retour</button>
<?php
}
?>

Mais comme le dit WinuX, as-tu vérifié le contenu de ta session avec un print_r($_SESSION'user']) ? Le problème n'est pas toujours là ou on le cherche...

SnoT, il y a 14 ans

Hum, si tu mets un echo 'TEST' dans ton if tu y passes ? Comme ça :

<?php

session_start();
if(empty($_SESSION'user']))
{
    echo 'TEST';
  header('Location: index.php');
}

Si oui, essaie de mettre un exit après ta redirection, comme ça :

<?php

session_start();
if(empty($_SESSION'user']))
{
    header('Location: index.php');
    exit;
}

Il me semble que sinon, sans exit, le code après le header (la redirection) s’exécute quand même.

En espérant t'avoir aidé.