質問
私は単純な関数を書いていますが、何らかの理由(おそらく単純な関数)で機能していません。皆さんが私を助けてくれるかどうか疑問に思っていました。
function check_value($postID)
{
$ID = $postID;
$cookie = 私は単純な関数を書いていますが、何らかの理由(おそらく単純な関数)で機能していません。皆さんが私を助けてくれるかどうか疑問に思っていました。
<*>
問題が何であったかを把握しようとして、変数内に実際のものがあることを確認するために、そのエコー行をIfステートメントの上に配置しました。
私の問題は、IFステートメントが出力されないことです。
$ postID
は数字 123123
です。
$ cookie
文字列は通常、 123123.23422.234234.2342342.234234
のようなものです
ご協力ありがとうございます!
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;
他のヒント
Cookie文字列が 123123.23422.234234.2342342.234234
のように見え、IDを探している場合、たとえば 1231
または 23
、関数は TRUE
を返しますが、実際にはそのIDはリストにありません。現在の strpos()
の実装も、部分的な数字と一致します。
IDをドットで囲む必要がある簡単な回避策があります。
$position = strpos('.'.$cookie.'.', '.'.$ID.'.');
はい、BrockがStrposはintで動作しないと言ったので、idをキャストする必要があります。 コードを変更する必要があります。
function check_value($postID)
{
$ID = $postID;
$cookie = はい、BrockがStrposはintで動作しないと言ったので、idをキャストする必要があります。
コードを変更する必要があります。
<*>COOKIE['list_of_IDS'];
$position = strpos($cookie,$ID);
echo 'ID:'.$ID.'-Cookie:'.$cookie;
if ($position !== false)
{
echo "ID is in the cookie";
}
}