Re: fsockopen + fputs
| From: | Stut | Date: | Sun, 18 May 2008 20:02:57 +0000 |
| Subject: | Re: fsockopen + fputs | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-274491@lists.php.net to get a copy of this message | ||
On 16 May 2008, at 00:04, debussy007 wrote:
I use fsockopen and fputs to call a distant URL, but I have the following error : The requested URL /registration/test was not found on this server. This is my code: $req = 'username=' . $usr . '&password=' . $pass . '&date_of_birth=' . $year . "-" . $month . "-" . $day . '&email=' . $email . '&country=' . $country;You should be using urlencode on these variables, otherwise you could end up truncating the data.
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br>\n"; } else { $header = "POST /registration/test HTTP/1.0\r\n"; $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; $header .= "Content-Length: " . strlen($req) . "\r\n\r\n"; fputs ($fp, $header . $req); while (!feof($fp)) { echo fgets($fp, 1024); } fclose($fp); } However the path www.example.com/registration/test existsBy which I assume you mean "it works in a browser". If not, make sure it works in a browser first.
so why does it says it cannot find the requested url ?You probably need a Host header to direct the request to the right website. If you're going to be making manual HTTP requests I suggest you use Firebug or similar to examine the requests your browser is making. Even better read the HTTP spec, but I tend to be realistic in my expectations. Alternatively I'd recommend looking at using the Curl extension. -Stut -- http://stut.net/