Cookies vortäuschen

Sturm

Mitglied
Hallo,
Ich versuch grad ne Verbindung zu einem anderem Server aufzubauen. Nun ist dir Frage, wie ich einen Cookie vortäusche. Ich will mich dort mit meinem Account einloggen, das einloggen geht über Cookies, Wie mache ich das?
 
Cookies werden im Header der HTTP-Anfrage uebergeben. Das Format sieht, wenn ich mich recht erinnere, im Grunde so aus wie eine Parameteruebergabe per URL, also cookie1=wert1&cookie2=wert2.
Etwas genauere Informationen wie das auszusehen hat findest Du im Tutorial zu meiner HTTP-Klasse.
 
Danke, das ist schon sehr hilfreich.
Leider schaffe ich es immer noch nicht mich von meinem PC aus in http://www.fs-location.de einzuloggen. Hier mal mein Code:

PHP:
<?php
      require("httpconnection.class.php");
      
      $http=new httpconnection("www.fs-location.de");
      $data=$http->get("settings/index.php","PHPSESSID=meine SESSID&pc_id=von meinem Cookies","temp_pw=das Passort&nickname=mein Nickname","","");
      echo nl2br(print_r($data['head'],true));
 
      echo "<br>Body:<br>";
      echo $data['body'];

      unset($http); 

?>

Doch er sagt immer leite weiter zu...
Weißt du wie ich das rauslesen kan? I
 
Also wenn er Dir sagt, dass er weiterleitet, dann wird dies wahrscheinlich entweder ueber einen Meta-Refresh laufen oder ueber JavaScript.
In beiden Faellen wirst Du den Quellcode nach dem entsprechenden Abschnitt durchsuchen muessen.

Bei einem HTTP-Redirect (welcher ja in PHP ueber header('Location: ...') erreicht werden kann wird ein entsprechendes Feld im Header gesetzt, welcher von meiner Klasse auch entsprechend im Header-Array angegeben wird. Weiterhin waere in dem Fall ein Status-code 301 (oder so, bin grad nicht ganz sicher) zu sehen.

Lange Rede, wenig Sinn: Wenn Du einen HTTP-Redirect hast kann Dir die Klasse unter die Arme greifen indem es die noetigen Daten gleich in brauchbarer Form praesentiert.
Wenn Du aber einen Redirect ueber den Meta-Refresh oder gar JavaScript hast, dann musst Du selbst aktiv werden und den Code durchsuchen.
 
Da kann ich dir die cURL-Bibliothek empfehlen: http://de3.php.net/manual/de/ref.curl.php
Die wurde unter anderem genau für sowas gemacht. Wenn dir diese Bibkliothek nicht zur Verfügung steht oder du sie nicht installieren (lassen) kannst, dann wäre die oben genannte Klasse sicher auch eine gute Alternative ;)
 
Zuletzt bearbeitet:
Da kann ich dir die cURL-Bibliothek empfehlen: http://de3.php.net/manual/de/ref.curl.php
Die wurde unter anderem genau für sowas gemacht. Wenn dir diese Bibkliothek nicht zur Verfügung steht oder du sie nicht installieren (lassen) kannst, dann wäre die oben genannte Klasse sicher auch eine gute Alternative ;)
Grad deshalb hab ich ja die Klasse geschrieben, damit man nicht von cURL abhaengig ist, denn dies wird man wohl bei den wenigsten Hostern vorfinden.
Mit der Klasse kann man dann eben mit PHP-eigenen Mitteln (also fsockopen()) auf Webserver zugreifen. fsockopen() ist ein maechtiges Tool, nur eben die Implementation eines bestimmten Protokolles erfordert eben eine Menge Arbeit.
 
*lol* Die Klasse ist echt genial. Ich hab jedoch noch ne Frage: Kan ich mich auf einer Seite auch so einloggen? Hab jetzt den PHPCode so:

PHP:
<?php
      require("httpconnection.class.php");
      
      $http=new httpconnection("www.fs-location.de");
      $data=$http->get("settings/index.php","PHPSESSID=meine SESSID","temp_pw=das Passort&nickname=mein Nickname","","");
      echo nl2br(print_r($data['head'],true));
 
      echo "<br>Body:<br>";
      echo $data['body'];

      unset($http); 

?>

Leider kann ich bei Passwort und Nickname eingeben was ich will, aber es passiert nichts. Hauptsache das PHPSESSID ist wichtig, davon hängt alles ab. Gibt es einen Wg dies zu ändern? Ich kan ja nicht jeden Tag wen ich was machen will meine PHPSESSID ändern.
 
Da so ein Login ja in der Regel ueber POST laeuft wirst Du dort auch die entsprechende Funktion nutzen muessen.
Und zusaetzlich ist es natuerlich auch noch noetig, dass Du weisst wie die entsprechenden Felder im Formular heissen, und eventuell auch wie der Button heisst und was dieser uebergibt.
 
Hallo,
leider klappt es bei mir immernoch nicht.

Hir mal mein Code:
PHP:
<?php
ini_set(upload_max_filesize, 50);  

require("httpconnection.class.php");

$http=new httpconnection("www.fs-location.de");

//if(empty($_COOKIE['PHPSESSID'])) {
$data = $http->post("/community/login/login.php","nickname=KarateHamster&password=demobaöböaböla","","","","","");
setcookie("SESSID", $data['head']['cookies']['0']['value'], time()+40);
setcookie("pc_id", $data['head']['cookies']['1']['value'], time()+40);
//}

echo nl2br(print_r($data['head'],true));
echo $data['body'];

echo "<br><br>Teil 2:<br>";
$send = $http->post("/community/pm/save_new.php","resc=KarateHamster&title=Hallo&text=Ichbins","PHPSESSID={$_COOKIE['SESSID']}&pc_id={$_COOKIE['pc_id']}","","","","");

echo nl2br(print_r($send['head'],true));
echo $_COOKIE['SESSID']."<br>".$send['body'];
?>

Und die Ausgabe:
Code:
Array
(
[raw] => HTTP/1.1 302 Found
Date: Mon, 12 Mar 2007 18:13:13 GMT
Server: Apache
Set-Cookie: PHPSESSID=kum9sqi0aibodv9a0j9j5j1nb6; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: pc_id=1400099; expires=Thu, 09-Mar-2017 18:13:14 GMT; path=/
Location:
Vary: Accept-Encoding
Content-Length: 0
Connection: close
Content-Type: text/html

[httpversion] => 1.1
[server] => Apache
[contentlength] => 0
[contenttype] => text/html
[location] => Array
(
[uri] =>
)

[cookies] => Array
(
[0] => Array
(
[name] => PHPSESSID
[value] => kum9sqi0aibodv9a0j9j5j1nb6
[path] => /
)

[1] => Array
(
[name] => pc_id
[value] => 1400099
[path] => /
[expirydate] => Array
(
[string] => Thu, 09-Mar-2017 18:13:14 GMT
[timestamp] => 1489083194
)

)

)

)


Teil 2:
Array
(
[raw] => HTTP/1.1 302 Found
Date: Mon, 12 Mar 2007 18:13:16 GMT
Server: Apache
Set-Cookie: PHPSESSID=2eumar0hguuusmhgm4m1fn1n95; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: /home/error.php?id=login_required
Vary: Accept-Encoding
Content-Length: 97
Content-Type: text/html

[httpversion] => 1.1
[server] => Apache
[contentlength] => 97
[contenttype] => text/html
[location] => Array
(
[uri] => /home/error.php
[parameters] => id=login_required
)

[cookies] => Array
(
[0] => Array
(
[name] => PHPSESSID
[value] => 2eumar0hguuusmhgm4m1fn1n95
[path] => /
)

)

)

Leite weiter zu /home/error.php?id=login_required
 
Ich denk das Problem ist hier, dass Du einen Cookie setzt und quasi im gleichen Atemzug nutzen willst.
Bevor ein Cookie genutzt werden kann muss dieser aber erstmal an den Client gehen und auch von diesem zurueck kommen.

Das hier
PHP:
<?php
setcookie('test','lala',time()+3600);
echo $_COOKIE['test'];
?>
wird also nicht lala ausgeben, sondern hoechtens eine Notiz, dass $_COOKIE['test'] nicht gesetzt ist.
Entsprechend solltest Du die Werte entweder in einer Session oder einer normalen Variable speichern.
Den Cookie kannst Du ja auch zusaetzlich noch belegen wenn noetig.
 
Zurück