Reputation: 7831
I'm writing a simple function and for some reason(probably a simple one) it's not working for me.
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";
}
}
In trying to figure out what the problem was I put that echo line above the if
statement there to make sure there actually is stuff in the variables.
My problem is that the if
statement never prints out, despite the $cookie
value containing the sequence of digits in the $ID
value.
A $postID
is a number 123123
.
The $cookie
string is usually something like 123123.23422.234234.2342342.234234
Upvotes: 4
Views: 6928
Reputation: 1804
Note that if your cookie string looks like 123123.23422.234234.2342342.234234
and you are looking for an ID, say, 1231
or 23
, your function would return TRUE
while actually that ID is not in the list. Your current implementation of strpos()
will also match partial numbers.
Here is a simple workaround that will require the ID to be surrounded by dots.
$position = strpos('.'.$cookie.'.', '.'.$ID.'.');
Upvotes: 2
Reputation: 16730
Strpos won't work with an int, so you need to cast the ID to a string. Try this:
$ID = (string)$postID;
Upvotes: 15