【问题标题】:Session Destroyed on page refresh页面刷新时会话被破坏
【发布时间】:2015-08-23 18:20:13
【问题描述】:

我的 php 文件在第一次加载时工作正常,但在刷新页面后会话被破坏。在刷新 php 页面时,我收到警告:session_regenerate_id(): Session object destroy failed

<?php
    /** functions.php **/
    function startSession() {
        $session_name = 'sec_session_id';   // Set a custom session name
        session_name($session_name);
        session_start();                    // Start the PHP session 
        session_regenerate_id(true);        // regenerated the session
    }
?>

<!-- controller.js -->
function LoadFriend() {
        var listFriend = $('#list_member_friend');
        var UrlToPass = 'action=load';
        listFriend.html('loading..');
        $.ajax({
            url : 'ajax.php',
            type : 'POST',
            data : UrlToPass,
            success: function(responseText) {
                listFriend.html(responseText);
            }
        });
    }
loadFriend();
<!-- end controller.js -->

<?php
    /** ajax.php **/
    $action = $_GET['action']
    switch($action) {
       case "load": 
           /** PRINT LIST FRIEND **/
       ...
    }
?>

<?php
    /** index.php **/
    include('functions.php');
    startSession();
    $userid = 'HENRY';
    if(!isset($_SESSION['user_id'])) {
        $_SESSION['user_id'] = $userid;
    } 
?>
<html>
   <head>
       <title>Load List</title>
       <script src="controller.js" type="text/javascript"/>
   </head>
   <body>
       <div id="list_container">
           <div id="list_member_friend" class="list_member_friend">
           <!-- this is where it generates session error -->
           <!-- load list of members friend with ajax script controller.js from member.php -->
           </div>
       </div>
   </body>
</html>

在 member.php 中 我也开始会话

<?php 
    /** member.php **/
    include('functions.php');
    startSession()
    $db = new MySQLi('localhost','root','abcdefg','social');
    $query = "SELECT fid, fname, fage, fgender FROM memberFriends";
    $query .= " WHERE memberid = '" . $_SESSION['user_id'] . "'"; <!-- this is the problem -->
    $db->prepareQuery($query);
    $db->execute();
    ..... (Load List);
?>

问题:

  1. 为什么刷新页面后member.php中没有传入session值?

  2. 将会话值传递给的最佳方法是什么 member.php?

【问题讨论】:

    标签: php ajax session


    【解决方案1】:

    有一个语法error。应该是——

    if(!isset($_SESSION['userid'])) {
    

    isset 是一个函数。它应该由isset() 而不是isset[] 调用。

    【讨论】:

    • 感谢您的快速回复。对上面的代码感到抱歉。它是一个错误的类型。 :) 我实际上尝试从我的代码中复制粘贴,但它变得非常混乱,所以我只是用上面的代码简化了它
    • 你在哪里使用 - session_regenerate_id
    • 我存储了另一个文件来调用会话开始。对不起,不好的问题
    • 欢迎。很高兴为您提供帮助。
    【解决方案2】:
    <?php
        session_start();
        $userid = 'HENRY';
        if(!isset($_SESSION['user_id'])) {
            $_SESSION['user_id'] = $userid;
        } 
    ?>
    

    您的代码有错误在第三行中,您使用了带有 isset 的方括号[],而不是圆括号()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      • 2017-08-30
      • 2014-08-15
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多