Ik wil mijn PHP script automatisch laten inloggen op een andere website. Daarvoor gebruik ik CURL.
Ik heb met de "Live HTTP headers" extension voor firefox bekeken wat er wordt overgestuurd, dat ziet er zo uit:

Klik!
Dat ben ik dus gaan nabootsen in PHP, mijn eerste poging zag er zo uit:
Ik heb de niet relevante code weg gelaten.
Met bovenstaande code gebeurt er helemaal niks. Geen errors, geen output, geen cookie, geen headers.
Toen ben ik het op de volgende manier gaan proberen:
Met deze code krijg ik de volgende error terug:
"Empty reply from server"
Hoe moet het wel?
Ik heb met de "Live HTTP headers" extension voor firefox bekeken wat er wordt overgestuurd, dat ziet er zo uit:

Klik!
Dat ben ik dus gaan nabootsen in PHP, mijn eerste poging zag er zo uit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| $e_mail = urlencode($e_mail); $ch = curl_init(); $request = 'email=' . $e_mail . '&password=' . $password . '&send=Verstuur&type=&send_password=0'; curl_setopt($ch, CURLOPT_URL, '$url'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7'); curl_setopt($ch, CURLOPT_REFERER, $referer); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEJAR, dir(__FILE__) . '/cookie.txt'); curl_setopt($ch, CURLOPT_POSTFIELDS, $request); curl_exec($ch); |
Ik heb de niet relevante code weg gelaten.
Met bovenstaande code gebeurt er helemaal niks. Geen errors, geen output, geen cookie, geen headers.
Toen ben ik het op de volgende manier gaan proberen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| $e_mail = urlencode($e_mail); $ch = curl_init(); $request = 'email=' . $e_mail . '&password=' . $password . '&send=Verstuur&type=&send_password=0'; $header[] = 'Host: $host'; $header[] = 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7'; $header[] = 'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png;q=0.5'; $header[] = 'Referer: $url'; $header[] = 'Content-Type: application/x-www-form-urlencoded'; $header[] = 'Content-Length: ' . strlen($request); $header[] = "Connection: close \r\n"; $header[] = $request; curl_setopt($ch, CURLOPT_URL,'$url'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_COOKIEJAR , dir(__FILE__) . '/cookie.txt'); curl_exec($ch); |
Met deze code krijg ik de volgende error terug:
"Empty reply from server"
Hoe moet het wel?
Specialist in:
Soldeerstations
Oscilloscoop