Я пишу простую функцию, и по какой-то причине (возможно, простой) она не работает для меня, и мне было интересно, могли бы вы, ребята, помочь мне.
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 никогда не распечатывается.
A $postID
– это номер 123123
.
Строка $cookie
обычно похожа на 123123.23422.234234.2342342.234234
Спасибо за вашу помощь!
Strpos не будет работать с int, поэтому вам нужно указать идентификатор в строку. Попробуй это:
$ID = (string)$postID;
Обратите внимание, что если ваша строка cookie выглядит как 123123.23422.234234.2342342.234234
и вы ищете идентификатор, скажем, 1231
или 23
, ваша функция вернет TRUE
хотя на самом деле этого ID нет в списке. Ваша текущая реализация strpos()
также будет соответствовать частичным номерам.
Вот простой способ обхода, который потребует, чтобы ID был окружен точками.
$position = strpos('.'.$cookie.'.', '.'.$ID.'.');
да, поскольку Брок сказал, что 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"; } }