2013-06-27 3 views
0

그래서 몇 가지 다른 페이지에서 사용되는 PHP 함수가 있습니다. 코드를 줄이기 위해 functions.php 페이지를 호출했습니다.함수는 인덱스가 실행될 때까지 쿠키를 설정하지 않습니다.

그래서 내 인덱스는 functionX를 호출하며,이 함수는 쿠키를 설정합니다. 하지만 IF 문에 함수가 있습니다. 쿠키를 설정하는 것처럼 보이지만 인덱스의 모든 코드가 실행될 때까지는 아닙니다. ...

여기에 예제 코드가 나와 있습니다. 코드는 "무엇"을 반환해야하지만 대신이

index.php를 null를 돌려 :

require_once('functions.php'); 
$cookie = ''; //just doing this to assume the cookie is always null. 

if ($cookie == '') { 
    functionX(); 
$cookie = $_COOKIE['cookie']['random']; 
} 

echo ''.$cookie; //returns null....... 

functions.php :

function functionX() { 
$randomvar = 'whatever'; 
setcookie("cookie[random]", $randomvar, time()+60*60*24*30, "/", "www.myweburl.com", 0, true); 
} 

지금 나는 그것이 전체 기능을 통해 실행됩니다 생각 계속하기 전에, 그런 식으로 보이지 않습니다 ...

답변

0

$_COOKIE $ _POST 및 $ _GET처럼 코드가 처리되기 전에 만들어집니다. 페이지를로드 한 후 쿠키를 시작하면 쿠키는 비어있게됩니다. 당신이 할 수있는 일은 이것이다 : 당신이 보면

$cookie = functionX('random'); 

function functionX($key) { 
    if(isset($_COOKIE['cookie'][$key]) { 
     return $_COOKIE['cookie'][$key]; 
    } else { 
     $randomvar = 'whatever'; 
     setcookie("cookie[$key]", $randomvar, time()+60*60*24*30, "/", "www.myweburl.com", 0, true); 
     return $randomvar; 
    } 
} 
0

그 기능이하고자하는 setcookie() docu 당신이 문장 Once the cookies have been set, they can be accessed on the next page loadsetcookie() defines a cookie to be sent along with the rest of the HTTP headers이 당신의 세트 쿠키의 결과 것은 이미 현재 세션에서 설정되지 않습니다주의 할 것이다.

쿠키를 보유하고있는 전역 배열을 수정하여 현재 세션에있는 것처럼 보입니다. 기본적으로 다음과 같은 방법 :

function functionX() { 
    $randomvar = 'whatever'; 
    setcookie("cookie[random]", $randomvar, time()+60*60*24*30, "/", "www.myweburl.com", 0, true); 
    $_COOKIE['cookie']['random'] = $randomvar; 
} 
관련 문제