【问题标题】:Session is create and print in backend but not work in frontend会话在后端创建和打印,但在前端不起作用
【发布时间】:2017-01-10 02:27:05
【问题描述】:

我遇到了一些奇怪的问题。

此问题发生在服务器上。自过去 5-6 天以来,我一直面临着这个问题。直到去年,它一直为我工作。

当我调用登录 api 时,如果用户凭据正确,那么我会创建一个会话。

这是我的代码:

if ($user){
    if ($user['is_active'] == 1){
        global $user_data;
        $user_data = $user;
        $response["error"] = false;
        $_SESSION['user_data'] = $user; // -- session is create
        print_r($_SESSION); // session is print.

        $_SESSION['is_login'] = 'No';
        unset($_SESSION['sessionX']);
        $response['user_id'] = $user['user_id'];
        $response['name'] = $user['name'];
        $response['email'] = $user['email'];
        $response['apiKey'] = $user['api_key'];
        $response['createdAt'] = $user['created_date'];

    } else {
        $response['error'] = true;
        $response['message'] = 'Your Account is Not Active';
    }
} else {
// user credentials are wrong
    $response['error'] = true;
    $response['message'] = 'Login failed. Incorrect credentials';
}

这部分的print_r:

Array
(
    [slim.flash] => Array
        (
        )

    [db_name] => arcade_intecigar
    [user_data] => Array
        (
            [user_id] => 1
            [name] => zzz
            [email] => zzz@abc.com
            [api_key] => 3fef39209b3d03039cdb81d39566eb66
            [lang_id] => en_US
            [created_date] => 0000-00-00 00:00:00
            [profile_pic] => ""
            [img] => 1461269872mk-ok.png
            [subscription_id] => 20
            [is_active] => 1
            [role_id] => 1
            [delete_permission] => 1
            [phone_number] => +14507013
            [country_code] => 1
            [total_usage_funds] => 0.0024999999441206
            [total_available_funds] => 0.99750000238419
            [paid] => trial
            [currency] => USD
        )

)

登录后,我将我的应用程序重定向到仪表板页面并检查会话是否可用,但奇怪的是会话不可用。它总是将我重定向到登录页面。

看下面的代码。

print_r($_SESSION); // it is display a blank
if (!isset($_SESSION['is_login']) && !isset($_SESSION['is_lock'])) {
    echo "<script>window.location='" . SITE_URL . "login.php?redirect=" . $_SERVER['REQUEST_URI'] . "';</script>";
}
if (isset($_SESSION['is_login']) && $_SESSION['is_login'] == 'NO' || $_SESSION['is_login']== 'No') {
    echo "<script>window.location='" . SITE_URL . "login.php?redirect=" . $_SERVER['REQUEST_URI'] . "';</script>";
}   

这部分的print_r:

Array ( [db_name] => arcade_intecigar ) 

【问题讨论】:

  • 你的session_start()在哪里?
  • 另外,您可能应该散列您的 API 密钥,而不是以纯文本形式存储它们。试试password_hash()
  • 我的会话在 config.php 文件中开始
  • 是在第二个代码块执行之前还是之后调用?
  • @Mike 第二块代码在仪表板页面中,登录后重定向。

标签: php jquery session session-variables


【解决方案1】:

发生此问题的原因是,在服务器上没有可用于创建更多会话的 inode 内存,据我所知,当在 php 中创建会话时,也会创建会话文件,因此没有可用内存,这就是为什么会话未创建。

使用df -i 命令了解服务器上的inode 内存。

查看此链接了解更多说明:https://www.ivankuznetsov.com/2010/02/no-space-left-on-device-running-out-of-inodes.html

【讨论】:

    猜你喜欢
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 2020-09-17
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多