使用javascript注销php会话

时间:2013-07-23 04:30:52

标签: php javascript logout

我正在尝试使用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');
        ?>
        } 
    }

4 个答案:

答案 0 :(得分:2)

你可以这样做:

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

答案 1 :(得分:2)

根据我的理论和http://pastebin.com/439xPdJN

上的Pastebin.com文件

这是一个包含2个文件的工作演示,以及一个示例,以向您展示它可以完成。

修改以适应。

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

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

然后,一旦确认退出按钮,您将注意到页面视图计数将返回ZERO。

为他的JS示例提供信用证felipsmartins

代码:

我们称之为 session1.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");

?>

答案 2 :(得分:1)

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

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

有关how to kill session from javascript

的更多信息

答案 3 :(得分:0)

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文件(除非此脚本还包含转发到另一个脚本)