题
我在包含文件中使用以下代码。因为它在我的代码中的两个实例中使用,所以我想将其分为另一个include文件,并与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');
}
解决方案
require()/include()'d文件将执行完全相同的内容,即将其内容嵌入到执行要求/include的文件中。 cookie标头看起来完全相同,无论是直接在文件中还是通过包含条件完成。
我会看看您是否在要求一行之前是否真的完成了Mysqli查询,因为您已将整个包含在内 if (mysqli_num_rows(...
商业。也许您也应该将查询定义/执行业务移至Include文件中。
不隶属于 StackOverflow