PHP-файл cookie не работает из включаемого файла - PullRequest
0 голосов
/ 16 октября 2010

Я использую следующий фрагмент кода во включаемом файле. Поскольку он использовался в двух экземплярах моего кода, я хотел разделить его на другой файл включения и использовать с require_once () там, где это необходимо. Однако я заметил, что если я это сделаю, куки не будут установлены. Все остальное, кажется, работает, хотя. Это ошибка или это просто невозможно сделать таким образом.

Я изучаю 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');
}

1 Ответ

0 голосов
/ 16 октября 2010

Файл require () / include () 'будет выполняться точно так же, как если бы его содержимое было внедрено в файл, выполняющий require / include.Заголовок cookie выглядит точно так же, независимо от того, находится ли он непосредственно в файле или выполняется с помощью include.

Я бы посмотрел, действительно ли вы выполнили запрос mysqli перед строкой require one, так как выобернуло все это с этим if (mysqli_num_rows(... бизнесом.Возможно, вам следует перенести бизнес определения и выполнения запроса во включаемый файл.

...