Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Wie gaukle ich ein cookie vor, das nicht existiert? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Wie gaukle ich ein cookie vor, das nicht existiert?


 
alberlie
30-06-2006, 16:58 
 
Hi,

ich möchte mittels php html-Daten aus einem geschützen Bereich auslesen. Um via Browser zu diesem Bereich zu gelangen, muss ich mich einloggen, bzw. werde mittels autologin eingeloggt. Die login Daten liegen in einem cookie auf meinem rechner.

Somit weiß ich, was in dem cookie steht.

Doch wenn ich jetzt mit der Seite lesen.php auf die Seite seite.pl zugreife:
$handle = fopen ("http://seite.pl?id=132", "r");

dann kommt folgendes zurück (jew. ein ' ' eingefügt, damit mein browser es nicht als code missversteht):

< H T M L > < H E A D > < T I T L E > R e d i r e c t i n g . . . < / T I T L E > < M E T A H T T P - E Q U I V = " r e f r e s h " C O N T E N T = " 0 ; U R L = / ? /
s h o w _ t g a m e s . p l = = i d = 1 3 2 " > < M E T A H T T P - E Q U I V = " E x p i r e s " C O N T E N T = " 0 " > < M E T A h t t p - e q u i v = " P r a
g m a " c o n t e n t = " n o - c a c h e " > < M E T A h t t p - e q u i v = " C a c h e - C o n t r o l " c o n t e n t = " n o - c a c h e " > < M E T A N A M E = "
R O B O T S " C O N T E N T = " N O I N D E X , N O F O L L O W " > < / H E A D > < B O D Y B G C O L O R = " # 3 3 3 3 4 4 " L I N K = " # F F 9 9 3 3 " V
L I N K = " # F F 9 9 3 3 " A L I N K = " # F F 9 9 3 3 " > < b r > < b r > < c e n t e r > < f o n t c o l o r = " # F F F F C C " f a c e = " V e r d a n a , A r i a
l , H e l v e t i c a , s e r i f " > < s p a n s t y l e = " f o n t - s i z e : 1 2 p x ; f o n t - w e i g h t : b o l d ; " > E r r o r l o g g i n g y o u i n , < a h r e f
= " / ? / s h o w _ t g a m e s . p l = = i d = 1 3 2 " > c l i c k h e r e t o p r o c e e d < / a > . . . < / s p a n > < / f o n t > < / c e n t e r > < / B O D Y >
< / H T M L >

Ich interpretiere das mal so, dass seite.pl den cookie bei einem solchen Aufruf nicht findet (ist ja auch logisch) - ich muss also seite.pl irgendwie vorspielen, dass der cookie vorhanden ist.
setcookie() setzt aber ja einen cookie auf dem Rechner desjeningen, der das php-script aufruft, nicht dort, wo es eigentlich benötigt wird. Und da setcookie ja beim Aufruf von lesen.php ein cookie für lesen.php setzt, nicht für seite.pl, hilft das nicht so recht.

Wo müssen also die cookie-Daten stehen, damit seite.pl sie für den autologin akzeptiert?

Mir reichen ein paar Stichwörter/links (bzw.: ich bin willens, es nach ein paar solchen erstmal eine Weile selbst weiter zu probieren ;) )

 
tcpip
30-06-2006, 17:25 
 
Stichwörter libCURL, fsockopen, dann noch die cookie specs (sind von Netscape, nicht ein RFC) ausgoogeln.

 
Slava
30-06-2006, 17:39 
 
hier ist eine fertige classe
http://www.phpclasses.org/browse/package/576.html

 
alberlie
30-06-2006, 23:39 
 
urgh.... sieht nach viel zu Lesen/Lernen aus. Dabei wollte ich doch so gern dumm bleiben...:D

Danke erstmal!

 
tcpip
30-06-2006, 23:43 
 
fsockopen ist das lohnendste zum Lernen, weil Du direkt auf der HTTP RFC (bzw. Netscape) bist. Mit den anderen lernst Du "zusätzlich" noch wrappers.

Es hat genügend Beispiele hier im forum, und eines im manual (unter fsockopen...)

 
alberlie
01-07-2006, 14:18 
 
Cool! Curl ist der totale Volltreffer (viva la Superlativa)

Damit kann man solange herumspielen bis man weiß, was der Server eigentlich genau will und das Resultat, die eigentliche *.htm, in einer Datei speichern.

Jetzt muss ich mich nur noch etwas in die CurlLib einarbeiten und das entsprechende php script coden...

Danke erstmal!

 
alberlie
02-07-2006, 13:38 
 
Schön,

nachdem ich nun mit curl herausgefunden habe, was curl selbst bei einem get-request sendet, habe ich folgendes script gebastelt, was auch brav den Content der SEite in einer Datei speichert:


$header = "GET /show_tgames.pl?id=132 HTTP/1.1\r\nUser-Agent:";
$header .=" curl/7.15.4 (i586-pc-mingw32msvc) libcurl/7.15.4 ";
$header .="OpenSSL/0.9.8b zlib/1.2.2\r\nHost: blablub.com\r\nAccept:";
$header .=" */*\r\nCookie: USERID=******; PSW=*****;\r\n\r\n";

$fp = fsockopen($host, 80, $errno, $errstr);
if (!$fp) {
echo "$errstr ($errno)<br/>\n";
echo $fp;
} else {
$dat = fopen("body.txt","w");
fputs($fp, $header);
while (!feof($fp)) {
fwrite ($dat, fgets($fp, 1024));
}
fclose($fp);
fclose($dat);


Das einzige, unangenehme ist, dass er nach x Zeichen offenbar sowas wie eine "Checksumme" mitliefert. Z.B. so:

)">4548888</a></TD [. . . ] a</tr>
<TR BGCOLOR=#444455> [. . .] 44)</span></TD></tr>
<TR BGCOLOR=#555566><TD> [. . . ] >(1259)</span></TD></tr>
<TR BGCOLOR=#444455><TD> [. . .] >(1875)</span></TD></tr>
<TR BGCOLOR=#555566><TD> [. . .] >(1746)</span></td><TD><a href="/team.pl?id=
1000
606">Icelandic Warriors</a></TD>[. . .] </span></TD></tr>
.
.
.
.

usw. Weiter unten steht ab und an auch eine 2000. Weiß jemand, was diese Zahlen bedeuteten, wer sie dort hinschreibt und wie ich sie ggf. unterdrücken kann?

Grácias!

 
derHund
02-07-2006, 14:03 
 
Hmm, sieht so chunked aus ... Schau mal im Response-Header, unter Transfer-Encoding. Falls es sich darum handelt, schau mal im Manual zu fsockopen - Strg/F + chunked, dort findest Du einen Code, der das wieder zusammensetzt. Vielleicht bietet ja CURL auch entsprechendes :dontknow:

Wenns nicht chunked ist ... ebenfalls :dontknow:

 
alberlie
02-07-2006, 14:18 
 
Transfer-Encoding: chunked

indeed. Danke!

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:00 Uhr.