PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   file_get_contents mit login? (https://www.php-resource.de/forum/php-developer-forum/86274-file_get_contents-mit-login.html)

Besth 19-08-2007 12:01

file_get_contents mit login?
 
Hallo,
ich hätte da mal eine Frage bezüglich file_get_contents.
Mit dieser Funktion ist es ja möglich Daten von anderen Webseiten zu fischen.
Was ist nun aber wenn die andere Seite einen Login erfordert?
Kann man das irgendwie mit übergeben?

Also die Seiten sind so aufgebaut:
Erst muss man sich über example.com/login.php einloggen und dann kann man auf example.com/news.php die Daten abfragen, aber wie logg ich mich über das Script ein?
Ich hab bisher nur das:


PHP-Code:

<?php
$url 
file_get_contents ("http://www.example.com/news.php");

//Ermitteln der Positionen
$erster_punkt strpos($url,"--News--");
$zweiter_punkt strpos($url,"--News end--");

//Extrahieren der Liste mit den Links
$laenge $zweiter_punkt $erster_punkt;
$liste Substr($url$erster_punkt$laenge);

$daten substr($liste,34,50);
?>


splasch 19-08-2007 12:25

Also ersten ist es nur möglich den Hmtl code auszulesen also keine cms Seiten.
2.Wenn man sich davor einlogen muß gibst 2 möglichkeiten .)entweder man log sich zuerst ein und lässt das script dann laufen oder man macht sich mehr arbeitet und liest zuerst die Login seite aus und sendet dann die entsprechenden Post an die Seite damit ist man dann auch eingelogt.

Mfg Splasch

onemorenerd 19-08-2007 12:33

Zitat:

by Splash:
... man log sich zuerst ein und lässt das script dann laufen ...
Woher hat das Script dann die Logindaten?

splasch 19-08-2007 12:54

Das man dafür bei der Seite Regestriert sein muß ist doch wohl klar.Alles andere were ein illegaler zugriff.
Die Daten dafür braucht man ja dem script dann nur sagen entweder man macht dafür ein Formular oder trag die im Quellcode ein.

Mfg Splasch

onemorenerd 19-08-2007 13:21

Na dann zeig mal wie so ein Script aussehen könnte. Das ist es nämlich, wonach hier gefragt wurde.

Besth 19-08-2007 13:26

genau ^^
weil so richtig weiß ich nicht wie ich ein einloggscript machn soll.
die logindaten hab ich, ja, ich bin auf der seite registriert!

penizillin 19-08-2007 13:35

wie funktioniert das einloggen? formular oder http auth? im ersteren fall einfach mittels posttohost (google danach) die zugangsdaten eingeben und die antwort auswerten. sollten cookies nötig sein, evtl. mal curl anschauen.

aber mal ehrlich - wofür braucht man sowas?

splasch 19-08-2007 13:54

Das script für ihn komplett werd ich nicht schreiben da es doch ein wenig Zeitaufwendig ist. Aber ich will dir mal den Anreiz geben wie das ganze Aufegbaut werden könnte.

Zunächst Login seite einlesen mit file_get_contents aus dem erhälst du nun ein Array aus diesen ermittelst du nun die positon wo action= steht.Beginnen mit " bis ende " ermitellst du mal den wert also den Link an welche Datei das Forumlar gesendet wird.Wobei du aber überprüfen muß ob es sich dabei um einen Kompletten link handelt oder nur um ein Subverzeichnis (Vergleichen mit der Adresse von auslesen des Login script)

Wenn dir das zu umständlich ist kanste auch selbst fix den Link wert eintragen aber dann ist das script eben nur auf diese bestimmte Seite beschränkt.

So wenn du nun mal den Formular link rausgeflitert hast. Mußte weiter den Quell code durchsuchen einmal nach Password und das danach stehen element name da wieder den wert nach dem ist rausflitern nach "suchen oder sollte der quellcode schlampig geschrieben sein in dem fall nach Leerzeichen aussortieren (chr(32)). Das selbe machst nun jetzt noch mit dem Login feld.

Wenn du alles richtig gemacht hast sollten nun folgende Daten vorliegen.
Der Link wert an das Formular sendet,Denn feldnamen zum einlogen und den Feldnamen zum Password.
Nun kanste enweder über javascript die post anweisung automatisch versenden oder du machst dir einen formular button.(Die werte kanst du unter value eintragen)
Nun solltes du dann auf der Seite eingelogt sein wenn die Daten stimmen und dir Formular felder richtig ausgelesen wurden.

Mfg Splasch

combie 19-08-2007 14:39

Curl und snoopy könnten dabei hilfreich sein..
Weil, die evtl. notwendige Cookiesetzerei mit fsockopen und file_get_contents doch schon recht umständlich ist...

onemorenerd 19-08-2007 14:53

@splash: Schön ... aber es geht nicht um das maschinelle Ausfüllen eines Loginformulars, sondern um das Lesen einer zugangsgeschützten Seite. ;)

splasch 19-08-2007 15:18

Wenn er ganz einfach machen will dann kann er sich mal ganz normal einlogen und anschließen sich die Session Id notieren und wichtig im selben Broswers nur andere Tab dann dann den Link mit der Session Id als Get senden zum auslesen über das Script dann sollte er auf die Geschütze seiten kommen.

PHP-Code:

$url file_get_contents ("http://www.example.com/news.php?PHPSESSID=abc"); 

Bzw. im Cookie nach schauen wie die Session Id lautet.

Mfg Splasch

onemorenerd 19-08-2007 15:41

Super Idee. Vielleicht wäre er sogar gewillt, sich jedes Mal erst auf der Zielseite anzumelden und die SID aus dem Cookie zu fischen. Dumm nur, dass sich news.php keinen Dreck für GET-Parameter interessiert ...
:goth:


Lass mal gut sein. Du hast das Problem offensichtlich überhaupt nicht verstanden. Google mal nach den gefallenen Stichwörtern fsockopen, curl, snoopy, posttohost.

splasch 19-08-2007 15:48

Zitat:

Dumm nur, dass sich news.php keinen Dreck für GET-Parameter interessiert
Wenn du wüßtes wie Session arbeiten dann wüßtes du auch das es egal ist ob nun eine Get abfrage in der Php datei gestartet wird oder nicht solang ein session_start() drin ist.
In dem Fall übernihmmt der Apache server diese aufgabe und gewährt zutritt zur Seite.

Sollte dich mal zum Thema Session Sicherheit befassen.Man kann sogar eine Session nummer einen anderen User vorgeben wenn der dann diesen Link benutz wird auch dann die vorgeben Id nummer verwendet. Auser der Programmiere der Webseite war so schlau und fordert bei jeden Aufruf eine neu id an ansonsten werden die Übernohmen so lang die Sitzung dauert.

Mfg Splasch

penizillin 19-08-2007 15:58

splasch, ehrlich, ich gehe gleich popcorn kaufen...

onemorenerd 19-08-2007 16:41

Ich weiß wie Sessions funktionieren. Der Apache-Server interessiert sich nicht für PHP-Sessions, das macht PHP alles selbst.

Und so wie du davon ausgehst, dass news.php rotzblöde ist, gehe ich davon aus, dass es einigermaßen gegen Content-Klau geschützt ist oder zumindest bald sein wird.
Das kann man per Konfiguration (session.referer_check, session.use_only_cookies, ...)
oder Code (empty($_SERVER['HTTP_USER_AGENT']) or session_start()) oder oder oder. Deswegen muß man für eine saubere Lösung einen ordentlichen Request senden.

Btw: Der TO hat noch nicht bestätigt, dass der Login überhaupt mit Sessions arbeitet und nicht mit HTTP-Auth.

Wie auch immer ... ich empfehle stream_context_create() als zweiten Parameter für file_get_contents.


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:33 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG