首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在_SESSION[usr]内调用函数$->logout()

问如何在_SESSION[usr]内调用函数$->logout()
EN

Stack Overflow用户
提问于 2016-03-15 05:25:12
回答 3查看 1.6K关注 0票数 0

我有一个名为User的类,它有一个名为logout()的函数。我在index.php中创建了该类的一个实例,并在调用memberspage.php之前将其值传递给$_SESSION[usr]。在memberspage.php中,我有一个名为logout的链接,单击该链接时,我希望运行logout()函数,并将用户发送到index.php。为此,我做了这样的事。

代码语言:javascript
复制
<a href="index.php" onclick= "$_SESSION[usr]->logout()">Log out</a>

我知道->造成了这个问题,但我不知道如何解决它。为了你的时间。

下面的代码适用于我

代码语言:javascript
复制
<a href="index.php" onclick ="alert('<?php echo $_SESSION["user"]->logOut(); ?>')">Log out</a>

但有个问题。如果我转到上面的代码所在的页面(memberspage.php),然后按下后箭头(不是注销链接),logOut()函数仍将被使用(会话被销毁,我将不得不再次登录以访问memberpage.php)。我不明白,因为我认为调用logOut()函数的唯一方法是单击logOut链接。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-15 05:45:31

如果$_SESSION[usr]->logout()像你在评论中所说的那样为你工作。我不知道是怎么回事。

但是这里只用于在锚标记中调用php函数,这完全取决于您的函数响应。

代码语言:javascript
复制
    <?php
        function usr(){
            return "abc";
        }

    ?>

    <a href="index.php" onclick ="alert('<?php echo usr(); ?>')">Log out</a>
票数 1
EN

Stack Overflow用户

发布于 2016-03-15 05:36:56

首先,我建议您更改对会话的使用--您可以创建一个页面,例如,在session.php中,您的所有会话都位于其中,它也可以是登录页面的重新目录页。

就像这个叫login.php的

在表单中创建使操作重定向到session.php

我还建议您所有的php登录代码都在session.php中,然后编写此代码。

代码语言:javascript
复制
   <?php

session_start();

$host = "localhost";
$uname = "root";
$pass = "";
$db = "mydb;

//database connection
$conn = mysqli_connect($host, $uname, $pass, $db);
mysqli_select_db($conn, $db);

if(!$conn){
    die("Connection failed: " . mysqli_connect_error());
}


if(isset($_POST['username'])){
    $username = $_POST['username'];
    $password = $_POST['password'];

    $username = stripslashes($username);
    $password = stripslashes($password);
    //$username = mysqli_real_escape_string($username);
    //$password = mysqli_real_escape_string($password);

    $sql = "SELECT * FROM table WHERE username = '" .$username. "' AND password = '".$password."' LIMIT 1";
    $res = mysqli_query($conn, $sql);
    if(mysqli_num_rows($res) > 0){
        if($data = mysqli_fetch_assoc($res))
            {
                $_SESSION['type'] = $data['type'];


          if(isset($_SESSION["login_user"]))
 {

                    if($data['type'] == 'admin'){
                        header('location: admin.php');
                    }

                  else  if($data['type'] == 'customer'){
                        header('location: customerhome.php');
                    }//header('location: uservalidation.php');




 }

            }
        }
    else{
//header('location: #');



        echo '<script>';
        echo 'alert("Invalid no?")';

        echo '</script>';

          header('location: logind.php');

    }

}


?>

然后创建另一个页面,即logout.php

将此代码放入:

代码语言:javascript
复制
  <?php

session_start();
header('location: index.php');
session_destroy();


?>

然后保存,把你的页面链接到logout.php

票数 1
EN

Stack Overflow用户

发布于 2016-03-15 06:24:09

添加文件logout.php并将您的注销实现放入其中:

代码语言:javascript
复制
<?php

header('Content-Type: application/json');

$_SESSION[usr]->logout();

echo json_encode(['message' => 'ok']);

并使用AJAX调用该文件:

代码语言:javascript
复制
<script>
function logout() {
    $.ajax({
        url: '/logout.php'
    }).then(function (res) {
        window.location.href = '/';
    });
}
</script>

<a href="#" onclick= "logout();">Log out</a>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36003269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档