Isset没有检测到来自$ _session的变量?

时间:2013-11-19 09:16:53

标签: php session

我正在尝试在一个页面中进行登录访问,但它似乎不起作用,isset没有检测到变量,所以它没有重定向到另一个网页。

<?php
if(isset($_SESSION['id_usuario'])){
header("Location:llistat_foto_mulimedia.html");


}
else{
 session_start();
?>

...<html>,form...

  <?php
    if (isset($_POST['sub'])){
   require_once 'conexio.php';
   $pdo = new Conexio(); 
   $pdo->exec("set names utf8");

   $dbTabla="autores";



   $consulta=$pdo->prepare("SELECT*FROM $dbTabla WHERE email=?, contrasenya=?");

   $consulta->execute(array($_POST['email'], $_POST['contra']));

   if(!$consulta) {
     echo "Error en realitzar la consulta!!";
   }
   else{
    if($consulta->rowCount() != 1){

      echo "Usuari no existeix\n";
      $_SESSION['id_usuario']=12;

    }

    else{
    session_start();
    $_SESSION['id_usuario']=$consulta->id_autor;


        }

      }


             }
}
?> 
<input type="submit" name="sub"  Value="Acces">

 ...... 我做错了什么?什么是正确的方法来做到这一点?

4 个答案:

答案 0 :(得分:2)

您无法读取会话变量:

isset($_SESSION['id_usuario'])

...直到你加载会话:

session_start()

请查看Basic Usage章节。

答案 1 :(得分:1)

你必须先做session_start之前的事情:

<?php
session_start();
if(isset($_SESSION['id_usuario'])){
    header("Location:llistat_foto_mulimedia.html");
}
else{
    ...

因为session_start不仅会创建新会话,还会恢复现有会话。在调用它之前,$_SESSION数组不存在。请参阅documentation

答案 2 :(得分:0)

您必须先运行session_start();才能访问任何类型的会话变量。

答案 3 :(得分:0)

现在提升所有答案都是正确的。 我只想说你必须在任何echo或html标签之前在你的页面中启动session(session_start();),因为它是全局变量

这很容易,你应该写session_start();在页面的第一行