使用javascript注销php会话


logout php session using javascript

我正试图使用javascript注销php会话。它不起作用——javascript函数被调用,if语句也起作用,但php脚本没有被调用。有更好的方法吗?我使用的是一个.php页面。

function logoutck() 
    {
    var r = confirm("Do you really want to log out?");
    if (r==true)
        {
        <?php
        session_start();
        session_destroy();
        header('Location: login.php');
        ?>
        } 
    }

根据我的理论和Pastebin.com上的文件http://pastebin.com/439xPdJN

下面是一个包含2个文件的工作演示,以及一个示例,以向您展示它是可以做到的。

修改以适应

首先,关于如何使用它的一些说明:

您需要重新加载页面(session1.php)几次才能获得数字。

然后,您会注意到,一旦您确认注销按钮,页面浏览次数将返回零。

他的JS例子值得称赞:(felipsmartins)

代码:

让我们将此会话1.php文件称为

<?php
session_start();  
if(isset($_SESSION['views']))
    $_SESSION['views'] = $_SESSION['views']+ 1;
else
    $_SESSION['views'] = 1;
echo "views = ". $_SESSION['views'];
?>
<!doctype html>
<head>
</head>
<body>
<script type="text/javascript">
function logoutck() {
    var r = confirm("Do you really want to log out?");
    if (r) {
       window.location.href = 'logout.php'
    }
}
</script>
<input id="button1" type='button' onclick='logoutck();' value='LOGOUT'/>
</body>
</html>

让我们称之为logout.php文件

<?php
session_start();
if(isset($_SESSION['views']))
    unset($_SESSION['views']);
header("Location: session1.php");
?>

您可以这样做:

function logoutck() {
    var r = confirm("Do you really want to log out?");
    if (r) {
       window.location.href = 'http://site.com/logout.php'
    } 
}

它将不起作用,因为javascript在客户端运行,PHP在服务器端运行。

您可以使用AJAX调用销毁会话。

有关如何从javascript 终止会话的更多信息

javascript、html和php的工作原理:

服务器首先从上到下执行php脚本。它执行脚本中的所有语句,并构建一个html页面,使<?php echo '<h1>hello world<h1/>'; ?>变成<h1>hello world<h1/>。当服务器执行完所有内容后,它将返回创建的html页面。

这个页面然后被浏览器加载,然后当浏览器看到javascript命令时,它会尝试执行它。因此,当javascript命令被执行时,就没有更多的php命令了,因为php服务器已经执行了它们,并从中生成了html视图。

以下语句对于php服务器是相同的

<?php echo '<h1>hello world<h1/>'; ?>
<?= '<h1>hello world</h1>';
<h1>hello world</h1>

请注意,当执行php脚本时,您将转到login.php,因为在html视图返回到客户端之前,服务器header('Location: login.php');会执行此命令。这意味着当您加载此php脚本时,客户端将收到login.php创建的html文件(除非此脚本还包含转发到另一个脚本)