Ik ben wat aan het stoeien met fsockopen en posten van formulieren over een SSL verbinding.
Met m'n php script moet ik de volgende route doorlopen (alles gaat via https)
1. opvragen beginpagina: cookie afvangen
2. login-pagina opvragen (met dit cookie): nog een cookie afvangen
3. login-formulier posten: nog 3 cookies afvangen
4. ander formulier (achter de login) posten
Stap en 1 en 2 gaan dus via GET, deze stappen gaan goed. Controles leren dat ik de juiste cookies afvang en dat ik deze ook succesvol weer mee stuur.
Als ik vervolgens bij stap 3 het login-formulier post dan gaat het fout.
Dit is de code waar ik de data mee opvraag:
Dit blijft oneindig lang laden. De verbinding (fsockopen) wordt wel gemaakt, maar het blijkt dat ie fout loopt op het while-loopje. Als ik dit doe
Gaat het namelijk wel goed. Ik krijg dan echter als output:
Dat is alles
Ik ben vervolgens die while loop nog eens gaan aanpassen en heb 4096 in (uiteindelijk) 2 veranderd (kon me voorstellen dat ie zich daar in verslikte ofzo), maar nog steeds blijft ie eindeloos laden.
Ik weet dat die 302 betekent dat ik doorgerout wordt naar een andere pagina (en dit klopt ook), maar de Locatie ontbreekt dus. Ik heb voor de gein vervolgens geprobeerd via een get-request een pagina achter de login op te vragen en dan krijg ik ook zo'n 302, maar dan wel uitgebreid met locatie (van de login-pagina uiteraard
)
Ik loop nu al een paar uur te klooien en te lezen op internet, maar ik kom er niet uit wat er fout gaat.
- hoe kan het komen dat die while oneindig lang blijft laden?
- hoe komt het dat die andere constructie alleen een 302 oplevert zonder verdere informatie?
Het één zal vast met het ander te maken hebben...
p.s. alle variabelen in het voorbeeld hebben de juiste waardes, dit heb ik met echo's gecontroleerd. De hele routine heb ik ook op een eigengemaakt login-systeem getest, die niet via https verliep en daar ging het prima. Daar kan het dus niet aan liggen.
Met m'n php script moet ik de volgende route doorlopen (alles gaat via https)
1. opvragen beginpagina: cookie afvangen
2. login-pagina opvragen (met dit cookie): nog een cookie afvangen
3. login-formulier posten: nog 3 cookies afvangen
4. ander formulier (achter de login) posten
Stap en 1 en 2 gaan dus via GET, deze stappen gaan goed. Controles leren dat ik de juiste cookies afvang en dat ik deze ook succesvol weer mee stuur.
Als ik vervolgens bij stap 3 het login-formulier post dan gaat het fout.
Dit is de code waar ik de data mee opvraag:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
| if ($fp = fsockopen("ssl://".$host, 443, $errno, $errstr, 15)) { fputs($fp, $post); $data = ""; while(!feof($fp)) { $data .= fread($fp, 4096); } fclose($fp); return $data; } |
Dit blijft oneindig lang laden. De verbinding (fsockopen) wordt wel gemaakt, maar het blijkt dat ie fout loopt op het while-loopje. Als ik dit doe
PHP:
1
2
3
4
5
6
7
8
| if ($fp = fsockopen("ssl://".$host, 443, $errno, $errstr, 15)) { fputs($fp, $post); $data = fread($fp, 1000000); fclose($fp); return $data; } |
Gaat het namelijk wel goed. Ik krijg dan echter als output:
code:
1
| HTTP/1.1 302 Found |
Dat is alles
Ik ben vervolgens die while loop nog eens gaan aanpassen en heb 4096 in (uiteindelijk) 2 veranderd (kon me voorstellen dat ie zich daar in verslikte ofzo), maar nog steeds blijft ie eindeloos laden.
Ik weet dat die 302 betekent dat ik doorgerout wordt naar een andere pagina (en dit klopt ook), maar de Locatie ontbreekt dus. Ik heb voor de gein vervolgens geprobeerd via een get-request een pagina achter de login op te vragen en dan krijg ik ook zo'n 302, maar dan wel uitgebreid met locatie (van de login-pagina uiteraard
Ik loop nu al een paar uur te klooien en te lezen op internet, maar ik kom er niet uit wat er fout gaat.
- hoe kan het komen dat die while oneindig lang blijft laden?
- hoe komt het dat die andere constructie alleen een 302 oplevert zonder verdere informatie?
Het één zal vast met het ander te maken hebben...
p.s. alle variabelen in het voorbeeld hebben de juiste waardes, dit heb ik met echo's gecontroleerd. De hele routine heb ik ook op een eigengemaakt login-systeem getest, die niet via https verliep en daar ging het prima. Daar kan het dus niet aan liggen.