2009-06-24 7 views
2

J'écris une fonction simple et pour une raison quelconque (probablement une simple) ça ne marche pas pour moi et je me demandais si vous pouviez m'aider.Problème avec Strpos En PHP

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

En essayant de comprendre quel était le problème que je mets cette ligne d'écho au-dessus de la déclaration Si pour vous assurer qu'il est en fait des choses dans les variables.

Mon problème est que l'instruction IF ne s'imprime jamais.

Un $postID est un nombre 123123.

La chaîne $cookie est généralement quelque chose comme 123123.23422.234234.2342342.234234

Merci pour votre aide!

Répondre

11

Strpos ne fonctionnera pas avec un int, vous devez donc convertir l'ID en chaîne. Essayez ceci:

$ID = (string)$postID; 
+0

Merci pour la réponse rapide! Savait que ça allait être quelque chose de stupidement évident ... –

-2

oui comme Brock a dit Strpos ne travaillera pas avec un int de sorte que vous devez lancer l'id. donc besoin d'un changement dans votre 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"; 
     } 
    } 
2

Notez que si votre chaîne de cookie ressemble 123123.23422.234234.2342342.234234 et vous êtes à la recherche d'une carte d'identité, par exemple, 1231 ou 23, votre fonction retournerait TRUE en fait qu'une pièce d'identité est pas dans la liste. Votre implémentation actuelle de strpos() correspondra également à des nombres partiels.

Voici une solution de contournement simple qui nécessitera que l'ID soit entouré de points.

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