2012-10-13 1 views
3
<?php 
$url ="http://absolutesms.com/Sendsms.aspx?userid=userid&password=password&clientid=clientid&senderid=absolute&mobilenumber=919000024365&smsmessage=SingleMessage".$request; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
$curl_scraped_page = curl_exec($ch); 
curl_close($ch); 
echo $curl_scraped_page; 
?> 

이 코드를 실행하면 HTTP Error 400. The request is badly formed이 표시됩니다. 어떻게해야합니까? 다른 URL을 사용해 보았는데 문제가 해결되었습니다. 브라우저에서이 URL을 복사하면 작동하지만 잘못 놓았을 때 오류 400이 표시됩니다.HTTP 400 잘못된 요청 오류가 발생하는 이유는 무엇입니까?

+1

무엇이 요청입니까? –

답변

0

할당 끝에 $request$url에 추가하고 있지만 $request에 포함 된 것을 표시하지 않습니다.

마지막으로 $request의 값이 URL에 유효하지 않게 될 가능성이 있습니다.

난 당신이 @ MichaelKrelin - 해커가 지적 하듯이이 특정의 원천이 될 가능성이 있지만 (그런 $request을 추가하려는 경우 적어도 하드 코딩 된 URL 문자열의 끝에서 &을보고 기대

오류).

$url = 'http://absolutesms.com/Sendsms.aspx?' . http_build_query(array(
    'userid' => $userid, 
    'clientid' => $clientid, 
///... continue 
)); 

문제 아래와 같이 http_build_query와

+0

'&'가 없기 때문에 다음 매개 변수를 마지막 매개 변수에 붙이더라도 URL을 무효로 만들지 않습니다. 잘못된 URL을 만들 가능성이 가장 큰 것은 크기 또는 너무 무효 인 문자입니다. –

+0

@ MichaelKrelin-hacker 좋은 지적입니다. 답변을 수정했습니다. – Trott

0

보십시오 건물의 URL은 아마 unescaped characters that have special meanings in URLs 때문이다.

http_build_query 안전하게 탈출합니다.

2

나는 이것을 많이 봅니다. 보통 urlencode()를 통해 요청을 실행하여 수정되었습니다.