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


C'est normal le emptyempty avant le $_SESSION ?

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
Auteur

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>

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.

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.

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...

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é.