문제
나는 간단한 기능을 쓰고 있으며 어떤 이유로 든 (아마도 간단한 것) 그것은 나를 위해 작동하지 않으며 여러분이 나를 도울 수 있는지 궁금합니다.
function check_value($postID)
{
$ID = $postID;
$cookie = $_COOKIE['list_of_IDS'];
$position = strpos($cookie,$ID);
echo 'ID:'.$ID.'-Cookie:'.$cookie;
if ($position !== false)
{
echo "ID is in the cookie";
}
}
문제가 무엇인지 알아 내려고 노력하면서 그 에코 라인을 IF 문 위에 올려 놓았습니다. 실제로 변수에 물건이 있는지 확인했습니다.
내 문제는 IF 문이 결코 인쇄하지 않는다는 것입니다.
ㅏ $postID
숫자입니다 123123
.
그만큼 $cookie
문자열은 일반적으로 비슷합니다 123123.23422.234234.2342342.234234
당신의 도움을 주셔서 감사합니다!
해결책
strpos는 int와 함께 작동하지 않으므로 ID를 문자열로 캐스트해야합니다. 이 시도:
$ID = (string)$postID;
다른 팁
쿠키 스트링이 모양이있는 경우에 유의하십시오 123123.23422.234234.2342342.234234
그리고 당신은 신분증을 찾고 있습니다. 1231
또는 23
, 당신의 기능이 돌아올 것입니다 TRUE
실제로 그 ID는 목록에 없습니다. 현재의 구현 strpos()
또한 부분 번호와 일치합니다.
다음은 ID를 도트로 둘러싸는 간단한 해결 방법입니다.
$position = strpos('.'.$cookie.'.', '.'.$ID.'.');
예, Brock이 말했듯이 Strpos는 INT와 함께 작동하지 않으므로 ID를 캐스팅해야합니다. 따라서 코드를 약간 변경해야합니다.
function check_value($postID)
{
$ID = $postID;
$cookie = $_COOKIE['list_of_IDS'];
$position = strpos($cookie,$ID);
echo 'ID:'.$ID.'-Cookie:'.$cookie;
if ($position !== false)
{
echo "ID is in the cookie";
}
}
제휴하지 않습니다 StackOverflow