我正在尝试在一个页面中进行登录访问,但它似乎不起作用,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">
...... 我做错了什么?什么是正确的方法来做到这一点?
答案 0 :(得分:2)
答案 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();在页面的第一行