2012-10-07 6 views
0

소량의 정보는 유감이지만 그 밖의 정보는 많지 않습니다. 문제는 로그인 기능을 확장하여 로그인 상태 유지 옵션을 추가하려고 할 때 쿠키가 설정되지 않는다는 것입니다. 세션 자체가 작동하므로 (공백 문자가 없거나 무언가가 없습니다). 오류 메시지가 나타나지 않고 쿠키가 설정되지 않습니다 (오페라/파이어 폭스로 테스트 됨). 1 시간 이상 의아해 당하고 난 후에, 나는 여기에서 그것에게 묻기로 결정했다. 아래는 로그인 기능입니다. 아래쪽으로 가면 어떻게 불리는 지 알 수 있습니다. 쿠키의 암호는 걱정하지 마십시오. 해쉬입니다. 나는 코드가 실제로 실행되는지 테스트했다. (setcookie 앞에 echo 'abc'를 놓았다.) 그런 경우이다.쿠키가 설정되지 않습니다. 세션이 작동합니다.

public function login($password,$stayloggedin) { 
if (is_null($this->id)) trigger_error ("user::login(): Attempt to login an user object that does not have its ID property set.", E_USER_ERROR); 

if ($this->compare_password($password)) 
{ 

    if ($stayloggedin) 
    { 
     setcookie("userid", $this->id, time()+3600); 
     setcookie("userid", $this->password, time()+3600); 
    } 

    session_start(); 
    $_SESSION['user_id'] = $this->id; 
    $_SESSION['user_name'] = $this->name; 
    $_SESSION['user_nummer'] = $this->user_nummer; 
    return true; 
} 
else 
{ 
    return false; //wrong password 
} 

} 

위의 함수가 호출되는 방식입니다.

<?php 
header('Content-type: text/html; charset=UTF-8'); 
require_once 'required_script.php'; 
if (isset($_GET['login'])) 
{ 

    require_once CLASS_PATH.'user.class.php'; 

    $user_logging_in=new user(); 
    $user_logging_in->load_from_name($_POST['user_name']); 
    if (isset($user_logging_in->id)) 
    { 
     if ($user_logging_in->login($_POST['user_pass'],$_POST['remember_me']=='true')) 
     { 
      echo '1'; 
     } 
     else 
     { 
      echo '0'; 
     } 
    } 
    else 
    { 
     echo '2'; 
    } 
die; 
} 

고마워요.

+1

'setcookie'에 다음 두 매개 변수를 사용하려고합니다. – thewebguy

+0

감사합니다. 실제로이 문제가 해결되었습니다. 이유를 설명해 주시겠습니까? 그리고 적절한 답변을 드릴 수 있도록 답변을 다시 보내주십시오. – Boelensman1

+0

이제 나는 그 이유를 이해합니다. 로그인은/backend에서 일어나고 쿠키 검사는 일반 디렉토리에서 일어납니다. 따라서 쿠키는/backend 용으로 만 설정되었습니다. 고마워요 :) – Boelensman1

답변

1

로그인/쿠키 설정 기능이 발생하기 전에 HTML 헤더를 출력하기 때문에 쿠키가 설정되지 않습니다.

쿠키를 만들기 전에 브라우저에 헤더를 전달할 수 없습니다.

관련 문제