Pergunta

Eu estou escrevendo uma função simples e por algum motivo (provavelmente um simples) ele não está funcionando para mim e eu queria saber se vocês poderiam me ajudar.

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";
        }
    }

Na tentativa de descobrir o que o problema era eu coloquei essa linha de eco acima da instrução if lá para se certificar de que realmente é material nas variáveis.

O meu problema é que a instrução IF não imprime.

A $postID é um 123123 número.

A seqüência de $cookie é geralmente algo como 123123.23422.234234.2342342.234234

Obrigado por sua ajuda!

Foi útil?

Solução

strpos não vai funcionar com um int, então você precisa para lançar o ID para uma string. Tente isto:

$ID = (string)$postID;

Outras dicas

Note que, se o seu cookie de cordas parece com 123123.23422.234234.2342342.234234 e você estiver procurando por um ID, digamos, 1231 ou 23, sua função seria voltar TRUE enquanto na verdade que ID não está na lista. Sua implementação atual de strpos() também vai coincidir com números parciais.

Aqui está uma simples solução que vai exigir a identificação a ser cercado por pontos.

$position = strpos('.'.$cookie.'.', '.'.$ID.'.');

sim como Brock disse strpos vai funcionar com um int então você tem que lançar o id. por isso precisa de alguma mudança no seu código.

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";
        }
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top