2010-04-01 8 views
0

J'essayais d'accéder à une page en utilisant curl. Je pouvais accéder parfaitement à l'aide du navigateur et en utilisant des chaînes « statiques » comme l'URL, comme:Pourquoi ai-je reçu une 400 Bad Request lors de l'obtention d'une page avec PHP Curl?

$url = "http://www.example.com/?q=1234" 

Mais quand j'ai essayé d'accéder à la page en utilisant une variable dans la chaîne d'URL comme:

$url = "http://www.example.com/?q=$param" 

J'ai un code d'erreur 400. J'ai vérifié sur le web et trouvé quelques commentaires ici en fil this stackoverflow:

Alors, par curiosité, je l'ai fait ce qui suit:

$url = "http://www.example.com/?q=" . trim($param); 

et cela a fonctionné! Et non, $param ne contient AUCUN espace. Pour moi, il semble qu'il puisse y avoir une erreur d'encodage, mais je ne peux vraiment pas trouver d'explication pour cela. Est-ce que quelqu'un ici dans stackoverflow sait ce que cela peut éventuellement être?

Merci à l'avance :)

Répondre

3

Eh bien, si vous êtes 100% sûr qu'il ne contenait pas d'un espace, $param contenait probablement l'un des autres personnages trim()cuts away with:

  • "\ t" (ASCII 9 (0x09)), un onglet.
  • "\ n" (ASCII 10 (0x0A)), une nouvelle ligne (saut de ligne).
  • "\ r" (ASCII 13 (0x0D)), un retour chariot.
  • "\ 0" (ASCII 0 (0x00)), l'octet NUL.
  • "\ x0B" (ASCII 11 (0x0B)), une tabulation verticale.

Vous pouvez savoir à coup sûr à l'aide ord():

$string = "\nTEST\r"; 
for ($i = 0; $i <= strlen($string)-1; $i++) 
echo "(".ord($string[$i]).")"; 

cet extrait va afficher toutes les valeurs de caractères dans la chaîne, y compris celles des caractères invisibles:

(10)(84)(69)(83)(84)(13) 

la 10 étant le caractère de nouvelle ligne au début de la chaîne.

0

Peut-être que le site de rejeter les demandes externes, donc peut-être essayer d'ajouter une valeur Référenceur que le site et une valeur de navigateur client comme Firefox. peut-être que cela peut tromper et accepter la demande.

0

La meilleure solution consiste à renvoyer la variable $ url après l'affectation. De cette façon, vous pouvez voir exactement ce qu'il y a dedans.

Questions connexes