PHP Curl ile bir sayfa alıyorum Neden ben bir 400 Bad Request aldın?

3 Cevap

Ben kıvırmak kullanarak bir sayfaya erişmeye çalışıyordu. Ben gibi, tarayıcı kullanarak ve URL olarak "statik" dizelerini kullanarak mükemmel şekilde erişebilir:

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

Ama ben gibi URL dizesinde bir değişken kullanarak sayfaya erişmeye çalıştığımızda:

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

Ben bir 400 hata kodu var. Ben web üzerinde kontrol ve burada this stackoverflow parçacığı bazı açıklamalarda bulundu:

Sonra, sadece merak için ben şu ki:

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

ve işe yaradı! Ve hayır, $param boşluk içermiyordu.

Benim için, bazı kodlama hatası olabilir gibi görünüyor, ama gerçekten bunun için bir açıklama bulamıyorum. Burada stackoverflow herkes muhtemelen ne olabilir biliyor mu?

Şimdiden teşekkürler :)

3 Cevap

Eğer bir boşluk içermiyordu% 100 emin iseniz Peki, o $param muhtemelen diğer karakterlerden birini ihtiva trim() cuts away with:

  • "\ T" (ASCII 9 (0x09)), bir sekme.
  • "\ N" (ASCII 10 (0x0A)), yeni bir satır (satır besleme).
  • "\ R" (ASCII 13 (0x0D)), bir satırbaşı.
  • "\ 0" (ASCII 0 (0x00)), NUL bayt.
  • "\ X0B" (ASCII 11 (0x0B)), dikey sekme.

Sen kullanarak emin öğrenmek ord() olabilir:

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

görünmez karakterleri de dahil olmak üzere dizesinde bu pasajı çıktısı tüm karakter değerleri:

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

10 dizenin başında satır karakteri beingh.

Belki web sitesi dış isteklerini reddetmek, belki firefox olarak web sitesi ve bir istemci tarayıcı değer olarak bir yönlendirme değer eklemeyi deneyin. belki de onu kandırmak ve isteğini kabul edebilir.

Sen iyi bahis sonra atama $ url değişkeni echo için konum. Tam olarak ne görebilirsiniz bu şekilde içinde olduğunu.