[PHP] waarden via Post naar ander php-bestand verzenden.

Pagina: 1
Acties:
  • 343 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
Zoals de titel al zegt wil ik waarden via Post naar een ander php-bestand verzenden. Het probleem is echter dat het bestand zich op een andere server bevind, ook is het versturen via GET geen optie. Nu was mijn idee dat het wel via een html formulier te doen. Dat lukt, maar het probleem is dan weer dat het automatisch moet gebeuren (dus met een cronjob). Het automatisch versturen is me wel gelukt met het volgende stukje javascript/html:

code:
1
2
3
4
5
6
<body onLoad="javascript:document.Form.submit();">
<form name = "Form" method = "post" action = "verwerk.php">
<input type = "text" name = "item1" value = "Item1">
<input type = "text" name = "item2" value = "Item2">
</form>
</body>


Dit is echter clientside terwijl het serverside moet. Ik heb gegoogled en via de search gezocht op alle mogelijk zoektermen maar ik kom er niet uit. Kan iemand mee een zetje geven?

Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$domain = 'www.hetdomein.ext';
$fp = @fsockopen($domain, 80, $errorno, $errostr);
if($fp){
  $data = http_build_query($_POST);
  @fwrite($fp, ("POST /path/naar/het/bestand.ext HTTP/1.0\r\nHost: ".$domain."\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ".strval(strlen($data))."\r\nConnection: Close\r\n\r\n".$data));
  $return = '';
  while(is_string($content = fread($fp, 128))){
    $return .= $content;
  }
}
else{
  die('Fail tijdens verbinden: '.$errorno.' '.$errorstr);
}
?>


Zoiets?

Acties:
  • 0 Henk 'm!

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 18-08 18:12
Waarom zou via post niet werken? Dat je php pagina op een andere server staat maakt niet uit

Acties:
  • 0 Henk 'm!

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
Verwijderd schreef op woensdag 27 december 2006 @ 18:15:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$domain = 'www.hetdomein.ext';
$fp = @fsockopen($domain, 80, $errorno, $errostr);
if($fp){
  $data = http_build_query($_POST);
  @fwrite($fp, ("POST /path/naar/het/bestand.ext HTTP/1.0\r\nHost: ".$domain."\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ".strval(strlen($data))."\r\nConnection: Close\r\n\r\n".$data));
  $return = '';
  while(is_string($content = fread($fp, 128))){
    $return .= $content;
  }
}
else{
  die('Fail tijdens verbinden: '.$errorno.' '.$errorstr);
}
?>


Zoiets?
http_build_query(); pakt mijn php versie niet. Ik heb die regel vervangen door:

PHP:
1
$data = 'item1=item1&item2=item2';

Maar dan blijft mijn browser hangen (zowel FF als IE). Enig idee hoe dat komt?
verytallman schreef op woensdag 27 december 2006 @ 18:39:
Waarom zou via post niet werken? Dat je php pagina op een andere server staat maakt niet uit
Een gewoon html form versturen werkt wel, maar het moet geautomatiseerd worden. Hoe zou jij het dan aanpakken?
PHP:
1
2
3
4
5
<?php
$_POST['item1'] = "Item1";
$_POST['item2'] = "Item2";
header("Location: http://www.site.com/verwerking.php");
?>

Dit werkt namelijk niet.

Acties:
  • 0 Henk 'm!

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 18-08 18:12
cronjob.html als cronjob laten uitvoeren:

cronjob.html:
code:
1
2
3
4
5
6
<body onLoad="javascript:document.Form.submit();">
<form name = "Form" method = "post" action = "http://www.andere_server.nl/verwerk.php">
<input type = "text" name = "item1" value = "Item1">
<input type = "text" name = "item2" value = "Item2">
</form>
</body>

Acties:
  • 0 Henk 'm!

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
verytallman schreef op woensdag 27 december 2006 @ 20:09:
cronjob.html als cronjob laten uitvoeren:

cronjob.html:
code:
1
2
3
4
5
6
<body onLoad="javascript:document.Form.submit();">
<form name = "Form" method = "post" action = "http://www.andere_server.nl/verwerk.php">
<input type = "text" name = "item1" value = "Item1">
<input type = "text" name = "item2" value = "Item2">
</form>
</body>
Heb ik geprobeerd, maar dat werkt niet omdat cronjobs serverside werken en javascript/html is clientside. Of zit ik nu fout?

Acties:
  • 0 Henk 'm!

  • soulrider
  • Registratie: April 2005
  • Laatst online: 27-11-2017
in dat laatste geval is je 'client' het systeem waarop de cronjob draait
en dat is dus je server als je 't juist doet ...

jouw server is in de communicatie naar die andere server voor dat systeem een client eh
(ingewikkelde zin maar na een paar lezen wrs wel duidelijk)

Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
@hierboven: Of je nou wget gebruikt of IE, de ene server is als die verbinding maakt met een andere server de client, nadeel is alleen dat bij wget geen javascript wordt uitgevoerd ;)

De oplossing die JWvdW geeft werkt goed op 1 ding na, fread() geeft (bij streams) een lege string terug als er geen data meer available is, ook als er een eof is bereikt. Zie verder php.net/fread.

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
Shadowman schreef op woensdag 27 december 2006 @ 22:33:
@hierboven: Of je nou wget gebruikt of IE, de ene server is als die verbinding maakt met een andere server de client, nadeel is alleen dat bij wget geen javascript wordt uitgevoerd ;)
Daar heb ik dan dus niks aan.
De oplossing die JWvdW geeft werkt goed op 1 ding na, fread() geeft (bij streams) een lege string terug als er geen data meer available is, ook als er een eof is bereikt. Zie verder php.net/fread.
Ik heb dat script van JWvdW gebruikt, maar zoals ik een paar posts hierboven ook al zei werkt http_build_query(); op mijn server niet dus heb ik die regel vervangen door:

PHP:
1
2
3
<?php
$data = 'item1=item1&item2=item2';
?>


Maar nu blijft het script hangen. Er zit dus blijkbaar ergens een foutje in maar ik heb geen idee waar :(

  • IEF
  • Registratie: Februari 2004
  • Laatst online: 18-09 08:03

IEF

Why so serious?

je zou ervoor kunnen kiezen cURL te gebruiken om je data te posten.

code:
1
2
3
4
5
6
7
$pst = curl_init();
curl_setopt($pst,CURLOPT_URL,'<JE POST-URL HIER>');
curl_setopt ($pst, CURLOPT_POST, 1);
curl_setopt ($pst,CURLOPT_POSTFIELDS, "value1=1&value2=2");
curl_setopt($pst, CURLOPT_RETURNTRANSFER, 1);
$page = curl_exec($pst);
curl_close($pst);


Ik vind persoonlijk cURL makkelijker (en betrouwbaarder werken dan de stream read/write functies van php voor dit soort toepassingen.

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
KappuhH schreef op donderdag 28 december 2006 @ 11:42:
Ik heb dat script van JWvdW gebruikt, maar zoals ik een paar posts hierboven ook al zei werkt http_build_query(); op mijn server niet dus heb ik die regel vervangen door:

PHP:
1
2
3
<?php
$data = 'item1=item1&item2=item2';
?>


Maar nu blijft het script hangen. Er zit dus blijkbaar ergens een foutje in maar ik heb geen idee waar :(
die http_build_query is zo zelf even te schrijven, is op zich niet zo moeilijk. En eventueel kun je ook altijd in het commentaar op php.net kijken, staat ook zo'n functie uitgeschreven voor degenen die geen php5 hebben :).

Verder, lees mijn post eens, ik geef toch exact aan wat er fout gaat.

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
Het probleem is tot dusver opgelost met de oplossing van IEFtm. Maar nu loop ik weer tegen een nieuw probleem aan.

Ik moet 2 bestanden uitvoeren. 1tje om in te loggen en nog een om de actie uit te voeren. Dus bijvoorbeeld:

inloggen.php zet een sessie
verwerken.php kijkt of die sessie bestaat, zo ja dan voertie het uit, zo nee dan stoptie

Maar met een cronjob word er dus geen sessie gezet en kan ik de actie in verwerken.php niet uitvoeren. Is hier een oplossing voor? Of zal ik het nog handmatig moeten doen?

  • Atari Paul
  • Registratie: November 2002
  • Laatst online: 13:04
Als je de pagina van curl op php.net goed doorleest staat daar de oplossing tussen (je volgens mij zelfs een gehele browser emuleren met curl).
Je kunt verschillende curl opties zetten, waaronder CURLOPT_COOKIEJAR en CURLOPT_COOKIEFILE. Er zijn nog veel meer mogelijkheden maar daar zou ik eerst eens naar kijken.

Stability ?? My Atari still has it :)


Acties:
  • 0 Henk 'm!

  • IEF
  • Registratie: Februari 2004
  • Laatst online: 18-09 08:03

IEF

Why so serious?

KappuhH schreef op donderdag 28 december 2006 @ 12:43:
Het probleem is tot dusver opgelost met de oplossing van IEFtm. Maar nu loop ik weer tegen een nieuw probleem aan.

Ik moet 2 bestanden uitvoeren. 1tje om in te loggen en nog een om de actie uit te voeren. Dus bijvoorbeeld:

inloggen.php zet een sessie
verwerken.php kijkt of die sessie bestaat, zo ja dan voertie het uit, zo nee dan stoptie

Maar met een cronjob word er dus geen sessie gezet en kan ik de actie in verwerken.php niet uitvoeren. Is hier een oplossing voor? Of zal ik het nog handmatig moeten doen?
Daar kun je inderdaad cookie opties voor gebruiken. (voor de sessie ID)

Dan zou je dit kunnen gebruiken:

code:
1
2
3
4
5
6
7
8
9
$pst = curl_init();
curl_setopt($pst,CURLOPT_URL,'inloggen.php');
curl_setopt ($pst, CURLOPT_POST, 1);
curl_setopt ($pst,CURLOPT_POSTFIELDS, "value1=1&value2=2");
curl_setopt($pst,CURLOPT_COOKIEJAR,"postkoekje.txt");
curl_setopt($pst,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($pst, CURLOPT_RETURNTRANSFER, 1);
$page = curl_exec($pst);
curl_close($pst);


code:
1
2
3
4
5
6
7
8
9
$pst = curl_init();
curl_setopt($pst,CURLOPT_URL,'verwerken.php');
curl_setopt ($pst, CURLOPT_POST, 1);
curl_setopt ($pst,CURLOPT_POSTFIELDS, "value1=1&value2=2");
curl_setopt($pst,CURLOPT_COOKIEFILE,"postkoekje.txt");
curl_setopt($pst,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($pst, CURLOPT_RETURNTRANSFER, 1);
$page = curl_exec($pst);
curl_close($pst);


CURLOPT_FOLLOWLOCATION wil zeggen dat hij eventuele browser-redirects blijft volgen.
(hij imiteert letterlijk je browser)

Acties:
  • 0 Henk 'm!

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
IEFtm schreef op vrijdag 29 december 2006 @ 17:07:
[...]


Daar kun je inderdaad cookie opties voor gebruiken. (voor de sessie ID)

Dan zou je dit kunnen gebruiken:

code:
1
2
3
4
5
6
7
8
9
$pst = curl_init();
curl_setopt($pst,CURLOPT_URL,'inloggen.php');
curl_setopt ($pst, CURLOPT_POST, 1);
curl_setopt ($pst,CURLOPT_POSTFIELDS, "value1=1&value2=2");
curl_setopt($pst,CURLOPT_COOKIEJAR,"postkoekje.txt");
curl_setopt($pst,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($pst, CURLOPT_RETURNTRANSFER, 1);
$page = curl_exec($pst);
curl_close($pst);


code:
1
2
3
4
5
6
7
8
9
$pst = curl_init();
curl_setopt($pst,CURLOPT_URL,'verwerken.php');
curl_setopt ($pst, CURLOPT_POST, 1);
curl_setopt ($pst,CURLOPT_POSTFIELDS, "value1=1&value2=2");
curl_setopt($pst,CURLOPT_COOKIEFILE,"postkoekje.txt");
curl_setopt($pst,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($pst, CURLOPT_RETURNTRANSFER, 1);
$page = curl_exec($pst);
curl_close($pst);


CURLOPT_FOLLOWLOCATION wil zeggen dat hij eventuele browser-redirects blijft volgen.
(hij imiteert letterlijk je browser)
Waarom heb je bij de ene COOKIEFILE gebruikt en bij de andere COOKIEJAR? Is de JAR om de cookies te plaatsen en den FILE om ze te lezen?

Acties:
  • 0 Henk 'm!

Verwijderd

@Shadowman:
Klopt, was ik vergeten. Overigens feof() is met fsockopen ook niet zo heel betrouwbaar. Je hebt namelijk servers die periodiek wat sturen (block-cache), als deze block-cache wat te groot is, dan denkt PHP met de functie feof dat alles er al is, terwijl er nog wat kan komen.
Je kunt dus beter controleren met strlen(). Dat was ik dus vergeten... ;)

Acties:
  • 0 Henk 'm!

  • IEF
  • Registratie: Februari 2004
  • Laatst online: 18-09 08:03

IEF

Why so serious?

KappuhH schreef op vrijdag 29 december 2006 @ 17:18:
[...]

Waarom heb je bij de ene COOKIEFILE gebruikt en bij de andere COOKIEJAR? Is de JAR om de cookies te plaatsen en den FILE om ze te lezen?
yep.
CURLOPT_COOKIEFILE The name of the file containing the cookie data. The cookie file can be in Netscape format, or just plain HTTP-style headers dumped into a file.

CURLOPT_COOKIEJAR The name of a file to save all internal cookies to when the connection closes.
door na inloggen.php curl_close() aan te roepen sluit je die verbinding. Je wil dan dus ervoor zorgen dat je sessie ID (in de cookie) bewaard blijft.

Vervolgens gebruik je dat sessie ID dan weer daarna.

Het hoeft niet per se via een file, je kunt ook de inhoud van de cookie uit de 1e sessie halen (inloggen) en hem dan via curl_setopt(CURLOPT_COOKIE,"") in de Set-Cookie: header plaatsen voor de 2e sessie. Zelf vind ik de interne cookie-handler van cURL een stuk makkelijker ;)
dus dan maar via files.

Je hoeft niet per se 2 sessies te starten. Als de eerste sessie je via een browser redirect doorstuurt naar de 2e file (via een HTTP 302 Object Moved bijvoorbeeld), dan hoef je alleen CURLOPT_FOLLOWLOCATION te gebruiken in de eerste sessie. cURL loopt dan vanzelf door naar 'verwerken.php'.

Offtopic: Ik gebruik overigens cURL zelf veel om wrappers te maken voor bestaande al-dan-niet dynamische websites. Waarom zou je sockets/streams gaan gebruiken als cURL het voor je doet?
(afgezien van het feit dat ze onbetrouwbaar zijn naar mijn mening)
Klinkt nogal als 'reinventing the wheel' =)

[ Voor 21% gewijzigd door IEF op 30-12-2006 17:47 ]


Acties:
  • 0 Henk 'm!

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
IEFtm schreef op zaterdag 30 december 2006 @ 17:43:
[...]


yep.


[...]


door na inloggen.php curl_close() aan te roepen sluit je die verbinding. Je wil dan dus ervoor zorgen dat je sessie ID (in de cookie) bewaard blijft.

Vervolgens gebruik je dat sessie ID dan weer daarna.

Het hoeft niet per se via een file, je kunt ook de inhoud van de cookie uit de 1e sessie halen (inloggen) en hem dan via curl_setopt(CURLOPT_COOKIE,"") in de Set-Cookie: header plaatsen voor de 2e sessie.
Het probleem is een beetje dat ik niet weet hoe ik de cookie uit de eerste sessie niet kan overhevelen naar de tweede sessie. Als ik COOKIEJAR en COOKIEFILE gebruik dan wordt er niets naar het bestand geschreven. Het bestand is chmod 777.
Zelf vind ik de interne cookie-handler van cURL een stuk makkelijker ;)
dus dan maar via files.

Je hoeft niet per se 2 sessies te starten. Als de eerste sessie je via een browser redirect doorstuurt naar de 2e file (via een HTTP 302 Object Moved bijvoorbeeld), dan hoef je alleen CURLOPT_FOLLOWLOCATION te gebruiken in de eerste sessie. cURL loopt dan vanzelf door naar 'verwerken.php'.
Moet dat in cURL? En hoe krijg ik dan de gegevens via POST weer naar verwerken.php?

Mag ik anders zo vrij zijn om je te vragen even een opzetje in code te geven? Ik ben namelijkt totaal niet thuis en het cookie en header gedoe allemaal, en al helemaal niet in cURL.

Acties:
  • 0 Henk 'm!

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
*Schopje*

Acties:
  • 0 Henk 'm!

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
*Bumb again*

Ben er nog steeds niet uit. Kan iemand me vertellen hoe dat met die HTTP 302 headers werkt? Die kan ik niet in de inlogfile zetten btw want er moet ingelogt worden op een site die ik niet beheer.

Acties:
  • 0 Henk 'm!

  • Evilbee
  • Registratie: November 2002
  • Laatst online: 19:55
KappuhH schreef op woensdag 03 januari 2007 @ 17:48:
*Bumb again*

Ben er nog steeds niet uit. Kan iemand me vertellen hoe dat met die HTTP 302 headers werkt? Die kan ik niet in de inlogfile zetten btw want er moet ingelogt worden op een site die ik niet beheer.
Kan je jou script dan niet testen op een server waar je wel bij de logs kan komen?

LinkedIn - Collega worden?


Acties:
  • 0 Henk 'm!

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
Evilbee schreef op donderdag 04 januari 2007 @ 15:43:
[...]

Kan je jou script dan niet testen op een server waar je wel bij de logs kan komen?
Welke logs bedoel je eigenlijk? En wat zou ik dan in die logs op moeten zoeken?

Acties:
  • 0 Henk 'm!

Verwijderd

Jullie zijn denk ik te moeilijk bezig. Als ik info moet posten naar een site waar je eerst moet inloggen doe ik dat als volgt (bijvoorbeeld bij het registreren van een domein):

Stap 1: Verstuur je inloggegevens naar de de inlog pagina met CURL zorg ervoor dat de de volledige pagina gereturnd krijgt (met header)
Stap 2: Haal uit deze pagina de sessie of iets dergelijk
Stap 3: Post de pagina naar de data verwerk site met daarin het koekje

Om het helemaal makkelijk te maken :)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
$ch = curl_init("http://pagina.nl/login.php");

curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "inlognaam=par0xysm&wachtwoord=blaat");

$loginreply = curl_exec($ch);

//haal de sessie id op
if(!preg_match("/Set-Cookie: ((\s|.)+?);/", $loginreply, $matches))
    exit('Owjee, sessie koek ding niet gevonden.');
    
$sessionid = $matches[1];

//en nu de data
$ch = curl_init("http://pagina.nl/verwerk_data.php");

curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIE, $sessionid);
curl_setopt($ch, CURLOPT_POST, 1);

//de post veldjes
$post[] = "naam=par0xysm";
$post[] = "adres=l337staat 666";
$post[] = "woonplaats=Duckstad";
$post[] = "land=Soviet Unie";

curl_setopt($ch, CURLOPT_POSTFIELDS, implode("&", $post));

$reply = curl_exec($ch);

//hier je antwoord, kan je checken of het klopt
exit($reply);
?>


ik ben goed man :P, Nou maar hopen dat ik het goed begrepen heb ;)

[ Voor 1% gewijzigd door Verwijderd op 04-01-2007 22:12 . Reden: ff zeggen hoe goed ik ben ]


Acties:
  • 0 Henk 'm!

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
Heel erg bedankt, dit zou volgens mij toch echt moeten werken maar het werkt helaas niet. Op één of andere manier werken die cookies dus op dat inlogsysteem niet. Misschien dat er nog gebruik gemaakt wordt van sessies oid. Ik zal dus echt de hele browser moeten nameken maar krijg dat nog niet echt voor elkaar. Iemand een idee hoe ik dat zou kunnen doen?

Acties:
  • 0 Henk 'm!

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
Schoppp...

Acties:
  • 0 Henk 'm!

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 18-08 18:12
Kijk is goed bij alle settings die je kan instellen voor cURL op http://nl3.php.net/manual/nl/function.curl-setopt.php.

Sommige sites eisen een CURLOPT_USERAGENT of CURLOPT_HTTPHEADER instelling, en mogelijk nog andere.

Wat betreft je cookie, ik had zelf ook eens het probleem dat het cookie niet gevuld werd, dat kwam doordat ik een eigen server heb en het pad naar me cookie verkeerd was.
Zorg ook dat je cookie file schrijf rechten heeft, én de map waar die in staat.

Acties:
  • 0 Henk 'm!

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
Volgens mij zie ik het probleem een beetje zitten. Op 1 of andere manier maakt hij bij het inloggen twee cookies aan ofzo, 1 met data ofzo en ook 1 met een sessionid, en die laatste zet ik niet weer terug. Als ik uit het script van Par0xysm $loginreply echo dan krijg ik dit:

code:
1
HTTP/1.1 302 Found Date: Wed, 10 Jan 2007 23:10:47 GMT Server: Apache/1.3.37 (Unix) mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 PHP/4.4.4 FrontPage/5.0.2.2635.SR1.2 mod_ssl/2.8.28 OpenSSL/0.9.7e-p1 X-Powered-By: PHP/4.4.4 Set-Cookie: phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bi%3A-1%3B%7D; expires=Thu, 10 Jan 2008 23:10:47 GMT; path=/ Set-Cookie: phpbb2mysql_sid=95b826e3b6496457739aa901d03b93cb; path=/ Set-Cookie: phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bs%3A1%3A%222%22%3B%7D; expires=Thu, 10 Jan 2008 23:10:47 GMT; path=/ Set-Cookie: phpbb2mysql_sid=db160da5822b3457be061b8c78515ce3; path=/ Location: http://www.doeterniettoe.net/forum/index.php?sid=db160da5822b3457be061b8c78515ce3 Connection: close Transfer-Encoding: chunked Content-Type: text/html


Kan ik dan dit als cookie nemen?
code:
1
Set-Cookie: phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bi%3A-1%3B%7D; expires=Thu, 10 Jan 2008 23:10:47 GMT; path=/ Set-Cookie: phpbb2mysql_sid=95b826e3b6496457739aa901d03b93cb;


Ik snap alleen niet wat die path=/ voor dat Set-Cookie doet.

Acties:
  • 0 Henk 'm!

  • Yo-han
  • Registratie: December 2001
  • Laatst online: 18-08 20:16

Yo-han

nope.

Ik snap alleen niet wat die path=/ voor dat Set-Cookie doet.
Die zorgt ervoor dat je cookie binnen je hele domein beschikbaar is.

Acties:
  • 0 Henk 'm!

Verwijderd

De path is het path waar het koekje voor geld. In dit geval het hele domein (/)

Volgens mij is het enigste wat je als koekje moet nemen:
-phpbb2mysql_data=a%3A2%3A%7Bs%3A..*knip*..6%3A%22userid%22%3Bi%3A-1%3B%7D
-phpbb2mysql_sid=95b826e3b6496457739aa901d03b93cb

Ik denk dat de cookie optie dan wordt
PHP:
1
curl_setopt($ch, CURLOPT_COOKIE, "phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bi%3A-1%3B%7D&phpbb2mysql_sid=95b826e3b6496457739aa901d03b93cb");


//toevoeging
verander preg_match eens in preg_match_all

En na de preg_match_all:
exit(print_r($matches, 1));

Als het goed is zie je nu in matches de juiste informatie staan

[ Voor 18% gewijzigd door Verwijderd op 11-01-2007 09:40 ]


Acties:
  • 0 Henk 'm!

  • jan-marten
  • Registratie: September 2000
  • Laatst online: 20:24
Ik gebruik voor dit soort dingetjes Snoopy:
Snoopy is a PHP class that simulates a web browser. It automates the task of retrieving web page content and posting forms, for example.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    //Example:  submit a form and print out the result headers
    //          and html-escaped page:

    include "Snoopy.class.php";
    $snoopy = new Snoopy;
    
    $submit_url = "http://lnk.ispi.net/texis/scripts/msearch/netsearch.html";
    
    $submit_vars["q"] = "amiga";
    $submit_vars["submit"] = "Search!";
    $submit_vars["searchhost"] = "Altavista";

        
    if($snoopy->submit($submit_url,$submit_vars))
    {
        while(list($key,$val) = each($snoopy->headers))
            echo $key.": ".$val."<br>\n";
        echo "<p>\n";
        
        echo "<PRE>".htmlspecialchars($snoopy->results)."</PRE>\n";
    }
    else
        echo "error fetching document: ".$snoopy->error."\n";
Pagina: 1