它应该如何运作: Index.php是受保护的页面。它包括check.php,它检查你是否有一个session = good。如果还没有,您还没有登录 - >注销,删除会话。但它不起作用,它总是注销,就像我没有登录...
的index.php
include ‘check.php’;
echo "logged in";
check.php
session_start();
if($_SESSION[‘login’] != ‘good’) {
unset($_SESSION[‘login’]);
unset($_SESSION[‘name’]);
header(‘Location: login.php?logoff’);
exit();
}
的login.php
if(isset($_POST[‘login’])) {
$gb = array();
$gb[‘user1’] = ‘pass1’;
$gb[‘user2’] = ‘pass2’;
if(isset($gb[$_POST[‘username’]]) && $gb[$_POST[‘username’]] == $_POST[‘password’])
{
$_SESSION[‘login’] = ‘good’;
$_SESSION[‘name’] = $_POST[‘name’];
header("Location: index.php");
} else {
header("Location: login.php?wrongpass");
}
} else { ?>
Login Form
<?php } ?>
我希望有人可以帮助我!
答案 0 :(得分:3)
您应该验证是否已在login.php中启动会话。
答案 1 :(得分:1)
将session_start();
放在所有页面中
答案 2 :(得分:0)
你需要在所有页面的顶部都有session_start(),你没有显示登录页面的会话开始。
(感谢Danny证明我不能打字)
答案 3 :(得分:0)
检查您的php.ini
中是否有register_globals
开启
答案 4 :(得分:0)
首先检查您要使用的页面会话变量会话是否开始,如果会话不是stat,则启动它。
这是php文件中的第一行。
会话检查的代码是:
if(!session_id())
{
session_start();
}
答案 5 :(得分:0)
if($count==1){
session_start();
$_SESSION['Username'] = $UserName;
$_SESSION['Password'] = $password;
UpdateOnlineChecker($Session);
header( "Location: http://". strip_tags( $_SERVER ['HTTP_HOST'] ) ."/newHolo/" );
exit;
}
else {
echo "Wrong Username or Password";
}
看看我的代码。它检查语句是否为真(对我来说,如果有一行带有我执行的查询语句)。然后我开始一个会话,基本上我定义全局会话变量,发出一个查询到我的数据库,以更新会话,然后通过引用。
你错过了session_start();在你的if块中。
答案 6 :(得分:0)
使用一个用于行动文档,例如index.php,有代码:
session_start();
if(isset($_POST['login']) && isset($_POST['password'])){
// login
header('Location: (here is some page)');
}
if(!isset($_SESSION['user']){
// @todo some action
} else {
require_once('login.php');
}
if(isset($_GET['logout'])){
unset($_SESSION['user']);
header('Location: (here is some page)');
}
答案 7 :(得分:-1)
我认为问题是标题:
('location:------.php);
您的托管服务器无法运行此功能。 你可以用这个:
echo "<script>window.location.href='-----.php'</script>";