문제

나는 간단한 기능을 쓰고 있으며 어떤 이유로 든 (아마도 간단한 것) 그것은 나를 위해 작동하지 않으며 여러분이 나를 도울 수 있는지 궁금합니다.

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";
        }
    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top