我最近开始学习PHP Sessions。这真的帮助我正确地登录。
我应该先给你链接:mk-appform.net16.net/login.php(feel免费使用,你想要的,这是一个测试。我可以更改通行证一旦它得到修复)用户名:admin密码:1234请测试一下
问题是,当你没有登录并直接在地址栏中输入mk-appform.net16.net/advsearch.php时,我要求事先登录的页面内容可以看到一秒钟。然后重定向到登录页面。但你知道,我不希望以任何方式展示这个。最终应该需要登录。
login.php的PHP代码
<?php
if (isset($_POST['submit']))
{
if(isset($_POST['user']) && isset($_POST['password']))
{
$user = $_POST['user'];
$password = $_POST['password'];
if(empty($user) || empty($password))
{
echo 'Please fill the form';
}
else
{
if($user == 'admin' && $password == '1234')
{ // check the infos
session_start();
$_SESSION['user'] = 'admin';
$_SESSION['password'] = '1234';
echo 'Login Succeeded.Now redirecting to panel...';
header("refresh:2; url=advsearch.php");
}
else
{
echo 'Invalid Username or Password';
}
}
}
else
{
echo 'Please use the form';
}
}
?>
,成功登录后显示的内容代码(advsearch.php)
<?php
session_start();
if(isset($_SESSION['user']) && isset($_SESSION['password']))
{
if($_SESSION['user'] == 'admin' && $_SESSION['password'] == '1234')
{
header("url=advsearch.php");
}
else
{
session_destroy();
echo 'Redirecting..';
}
}
else
{
header("refresh:0; url=login.php");
}
?>
header
重定向不是即时的。浏览器需要一些时间来关闭连接并启动新连接。这意味着在输出位置标头后,您在页面上输出的任何内容仍然可以查看。您必须在输出标题后中止脚本。例如
<?php
if (need to redirect) {
header('Location: login.php');
echo 'redirecting to login page, please wait ...';
exit(); // you need this
}
... regular page contents ...
简而言之,如果你不想让某些东西对用户可见,那么首先不要输出它。不要指望每件事都能正常工作(甚至是快速工作)。他们很少这样做。