1

我正在尝试使用 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

4 回答 4

2

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

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

修改以适应。

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

您需要重新加载页面 (session1.php) 几次以获取数量。

然后,您会注意到,一旦您确认注销按钮,页面浏览量将恢复为零。

归功于:( felipsmartins )他的JS 示例。

编码:

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

?>
于 2013-07-23T05:42:50.837 回答
2

你可以这样做:

function logoutck() {
    var r = confirm("Do you really want to log out?");
    if (r) {
       window.location.href = 'http://site.com/logout.php'
    } 
}
于 2013-07-23T04:35:17.870 回答
1

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

您可以使用AJAXcall 来销毁会话。

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

于 2013-07-23T04:33:06.540 回答
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因为此命令header('Location: login.php');在 html 视图返回给客户端之前由服务器执行。这意味着当您加载此 php 脚本时,客户端将收到由创建的 html 文件login.php(除非此脚本还包含转发到另一个脚本)

于 2013-07-23T05:51:08.273 回答