>백엔드 개발 >PHP 튜토리얼 >PHP에서 setcookie()를 사용하여 설정했는데도 'username2' 쿠키가 비어 있는 이유는 무엇입니까?

PHP에서 setcookie()를 사용하여 설정했는데도 'username2' 쿠키가 비어 있는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-22 00:15:11503검색

Why is my 'username2' cookie blank despite setting it using setcookie() in PHP?

세션 처리로 빈 쿠키 문제 해결

제시된 PHP 함수에서 사용자 확인 프로세스에는 '사용자 이름'과 '사용자 이름' 모두에 대한 쿠키 설정이 포함됩니다. username2'는 setcookie()를 사용합니다. 그러나 'username2' 쿠키를 검색하면 해당 쿠키는 비어 있습니다. 이 문제는 다양한 이유로 발생할 수 있습니다.

불완전한 쿠키 구성

전체 setcookie() 구성에 필수 매개변수가 포함되어 있는지 확인하세요.

  • 만료 매개변수: 유효한 형식으로 만료 시간을 지정합니다. 제공된 코드는 만료를 365일로 설정하지만 권장 형식은 time() n입니다. 여기서 n은 초 수입니다.
  • 경로 매개 변수: 솔루션에서 제안한 대로 설정 path = /는 쿠키가 현재 디렉터리뿐만 아니라 전체 사이트에 적용되도록 합니다.

출력 수정

PHP 매뉴얼의 경고에 주의하세요: "쿠키는 스크립트의 출력 전에 전송되어야 합니다." 헤더가 이미 전송되는 것을 방지하려면 쿠키를 설정하기 전에 에코를 피하세요. 주어진 코드에서 echo $_COOKIE['username2']; 출구(); header("Location: ../new.php") 앞에 위치해야 합니다. line.

함수 최적화 검증

validateUser() 함수는 논리나 데이터베이스 쿼리 없이 세션을 설정하고 리디렉션만 수행하는 데 사용해야 합니다. 사용자 확인을 위한 별도의 함수와 쿠키 설정을 위한 함수를 만드는 것을 고려해보세요.

validateUser() 함수 및 쿠키 설정의 최적화된 버전:

// User validation function
function validateUser($username) {
    session_regenerate_id ();
    $_SESSION['valid'] = 1;
    $_SESSION['username'] = $username;
}

// Cookie setting function
function setCookies($username, $password) {
    setcookie('username', $username, time() + 60 * 60 * 24 * 365, '/');
    setcookie('password', $password, time() + 60 * 60 * 24 * 365, '/');
}

// Function call
if(mysql_num_rows($queryreg) != 0){
    $row = mysql_fetch_array($queryreg,MYSQL_ASSOC);
    $hash = hash('sha256', $row['salt'] . hash('sha256', $password));
    if($hash == $row['password']) {
        if($row['confirm'] == 1){
            setCookies($username, $password);
            validateUser($username);
        }
    }
}

위 내용은 PHP에서 setcookie()를 사용하여 설정했는데도 'username2' 쿠키가 비어 있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.