2010-10-15 10 views
0

J'utilise le code suivant dans un fichier d'inclusion. Parce qu'il l'a utilisé dans deux cas dans mon code, j'ai voulu le séparer en un autre fichier d'inclusion et l'utiliser avec require_once() là où c'est nécessaire. Cependant, j'ai remarqué que si je fais cela, les cookies ne seront pas définis. Tout le reste semble fonctionner cependant. Est-ce un bug ou ce ne peut tout simplement pas être fait de cette façon.Le cookie du jeu PHP ne fonctionne pas à partir du fichier include

J'ai appris PHP seulement pendant deux semaines alors s'il vous plaît, prenez-le doucement sur moi.

Merci!

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

Pouvez-vous vérifier votre journal d'erreurs pour les avertissements concernant les en-têtes déjà envoyés ou d'autres erreurs/avertissements? –

+0

Si vous voulez réutiliser ce code, il vaudrait mieux le mettre dans une fonction. De cette façon, même si vous utilisez require_once, vous pouvez l'appeler à tout moment. –

Répondre

0

A require()/include() 'd fichier exécutera exactement le même que si son contenu avait été intégré dans le fichier faisant l'exigent/include. Un en-tête de cookie ressemble exactement de la même façon, que ce soit directement dans un fichier ou via une inclue.

Je vérifierais si vous avez réellement fait une requête mysqli avant la ligne require once, puisque vous avez enveloppé la totalité de l'include avec cette entreprise if (mysqli_num_rows(.... Peut-être devriez-vous déplacer la définition de la requête/l'activité d'exécution dans le fichier d'inclusion.