Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP$\u会话进行身份验证_Php_Html_Session - Fatal编程技术网

使用PHP$\u会话进行身份验证

使用PHP$\u会话进行身份验证,php,html,session,Php,Html,Session,我有一个代码,可以登录到数据库系统并执行一些简单的任务,如查看用户详细信息、编辑用户详细信息之类的任务。登录后,用户应该能够注销。我的问题出现在这里。我需要重定向到一个显示一些文本的页面(logoff.php页面),然后重定向到索引页面。但一旦我点击了注销链接,它就会直接进入索引页面,即登录页面 用户从页面重定向到注销页面,我的logoff.php代码如下 <?php session_start(); if (isset($_SESSION["uname"])) { unset($

我有一个代码,可以登录到数据库系统并执行一些简单的任务,如查看用户详细信息、编辑用户详细信息之类的任务。登录后,用户应该能够注销。我的问题出现在这里。我需要重定向到一个显示一些文本的页面(logoff.php页面),然后重定向到索引页面。但一旦我点击了注销链接,它就会直接进入索引页面,即登录页面

用户从页面重定向到注销页面,我的logoff.php代码如下

<?php
session_start();
if (isset($_SESSION["uname"])) {
    unset($_SESSION["uname"]);
}
header("Location:../index.php");
exit;
?>

<html>
    <head>
        <title>Logged Off</title>
    </head>
    <body>
        <br><br>
        <div align="">
            <h2>You are now logged off</h2>
            &nbsp;&nbsp;&nbsp;
            <a href="../index.php">home</a></div>
    </body> 
</html>
在这种情况下,我是否需要将index.php页面包括在logoff.php页面中,因为会话变量是在index.php页面中创建的?这是原因还是其他原因? 谢谢

你可以这样做

<?php
    session_start();
    if (isset($_SESSION["uname"])) {
        unset($_SESSION["uname"]);
    }
    ?>

    <html>
        <head>
            <title>Logged Off</title>
        </head>
        <body>
            <br><br>
            <div align="">
                <h2>You are now logged off</h2>
                &nbsp;&nbsp;&nbsp;
                <a href="../index.php">home</a></div>
        </body> 
    </html>

注销


您现在已注销
答案就在那一行,是一个功能,而不是一个bug:

header("Location:../index.php");
这会在重定向服务器端执行,这样您的用户就永远看不到页面正文,因为他只收到这个标题,告诉浏览器转到那个URL

与其这样做,不如使用带有
setTimeout()
的javascript重定向函数,或者使用元刷新,我想在本例中确实指出了这一点:

<meta http-equiv="refresh" content="10;URL=yourindexpage.php" />


注意上面这一行中的
10
,它表示重定向发生前的延迟(秒)。

希望有一个出口,也有一个重定向?是这样吗?只要脚本点击
标题(“Location:../index.php”),浏览器将直接转到定向页面。一旦脚本点击
退出,它将退出。如果你想显示你的“注销”页面,然后重定向,考虑使用元刷新或一些JavaScript做重定向。@ LIFHHACKER,一旦我点击一个不在这里的页面上的注销链接,它应该出现在这里给出的注销页面。一旦脚本看到重定向,它就会发生,而该脚本的其余部分不会执行。@BrettSantore不正确,浏览器没有义务执行头重定向。您必须添加一个
exit()以保证代码不会超过某一点执行。确实如此。这个
header()
函数只将信息发送回浏览器,就像PHP透视图中的任何其他指令一样,它根本不会停止脚本执行,至少就我所知是这样。最好的证明是,如果你在那之后尝试执行
回显
,你会得到一个错误,这意味着线路确实被击中。会话的用户身份验证没有问题吗?@buddhiweerasinghe>如果你想让数据保持活动状态,我认为没有比会话更好的解决方案了…我在用户身份验证方面没有任何错误吗?
<meta http-equiv="refresh" content="10;URL=yourindexpage.php" />