Frage
Ich schreibe eine einfache Funktion und aus irgendeinem Grund (wahrscheinlich ein einfaches) es ist nicht für mich arbeiten, und ich habe mich gefragt, ob ihr mir helfen könnte.
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";
}
}
Bei dem Versuch, herauszufinden, was das Problem war ich setze, dass Echozeile über die If-Anweisung dort sicherzustellen, dass es wirklich Sachen in den Variablen ist.
Mein Problem ist, dass die IF-Anweisung nie gedruckt wird.
A $postID
eine Zahl 123123
.
Die $cookie
Zeichenfolge ist in der Regel so etwas wie 123123.23422.234234.2342342.234234
Vielen Dank für Ihre Hilfe!
Lösung
strpos wird nicht mit einem int arbeiten, so müssen Sie die ID in einen String werfen. Versuchen Sie folgendes:
$ID = (string)$postID;
Andere Tipps
Beachten Sie, wenn Sie Ihre Cookie-String wie 123123.23422.234234.2342342.234234
aussieht und Sie suchen nach einer ID, sagen wir, 1231
oder 23
, Ihre Funktion TRUE
zurückkehren würde, während tatsächlich die ID nicht in der Liste enthalten ist. Ihre aktuelle Implementierung von strpos()
auch Teilnummern entsprechen.
Hier ist eine einfache Abhilfe, die die ID erfordert durch Punkte umgeben sein.
$position = strpos('.'.$cookie.'.', '.'.$ID.'.');
ja, wie Brock sagte strpos gewohnt mit einem int arbeiten, so dass Sie die ID zu werfen haben. so müssen einige Änderungen in Ihrem Code.
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";
}
}