0

我在包含文件中使用以下代码。因为它在我的代码中的两个实例中使用,所以我想将它分离到另一个包含文件中,并在需要的地方与 require_once() 一起使用。但是,我注意到如果我这样做,cookie 将不会设置。其他一切似乎都有效。这是一个错误还是不能以这种方式完成。

我学习 PHP 才两周,所以请放轻松。

谢谢!

if(mysqli_num_rows($checklogin) == 1)  
{  
    // set variables  
    $row = mysqli_fetch_array($checklogin);  
    $email = $row['Email'];  

    // create login sessions
    $_SESSION['UserName'] = $username;
    $_SESSION['Email'] = $email;
    $_SESSION['LoggedIn'] = 1;

    $cbxRememberMe = $_POST['cbxRememberMe'];

    // if remember me is checked
    if(isset($cbxRememberMe) && $cbxRememberMe == '1')
    {
     $row = mysqli_fetch_array($checklogin);

     // create cookies for autologin
     $expire = time() + AUTO_LOGIN_DURATION;
     $cookie_un = sha1(sha1($row['UserName']));
     $cookie_pass = sha1(sha1($row['Password']));

     setcookie('user', $cookie_un, $expire);
     setcookie('pass', $cookie_pass, $expire);
    }

    // get user's IP address
    $lastloginip = $_SERVER['REMOTE_ADDR'];

    // DB QUERY: update database activity
    // ------------------------------------------------------------------
    $updateactivity = mysqli_query($conn,"UPDATE users SET LastLoginDate = NOW(), LastActivityDate = NOW(), LastLoginIP = '$lastloginip' WHERE UserName = '$username'") 
    or die($updateactivity_error);
    // ------------------------------------------------------------------

    // redirect back to login to refresh
    header('Location: login.php');
}
4

1 回答 1

0

一个 require()/include()'d 文件的执行与它的内容被嵌入到执行 require/include 的文件中完全相同。无论是直接在文件中,还是通过包含完成,cookie 标头看起来都完全相同。

我会看看您是否真的在 require once 行之前完成了 mysqli 查询,因为您已经将整个包含包含在该if (mysqli_num_rows(...业务中。也许您也应该将查询定义/执行业务移动到包含文件中。

于 2010-10-15T22:00:27.840 回答