[PHP] Text von seite auslesen und bei Änderung benachrichtigen

venom2k6

NGBler
Registriert
15 Juli 2013
Beiträge
91
Moinsen, ich bin nicht der Master of Desaster in PHP, n bissl kann ich aber. nun meine frage, da ich nicht genau wüsste wonach ich suchen müsste und ob das möglich ist

Ich habe eine seite mit Inhalt, die Seite ist php und beinhaltet text und bilder, es ist eine art newsfeed

man muss aber auf der seite eingloggt sein um diesen feed lesen zu können.

gibt es eine PHP funktion mit der ich diesen Feed lesen kann und der mir dann via mail() funktion eine mail schickt wenn sich an der seite was ändert, also ein neuer feed kommt??
 
  • Thread Starter Thread Starter
  • #3
Ich danke dir. Werde ich mir mal durchlesen und probieren und bei Verständnissproblemen mich hier melden :)

EDIT

[src=php]
//username and password of account
$username = trim($values["BENUTZERNAME"]);
$password = trim($values["PASSWORT123"]);

//set the directory for the cookie using defined document root var
$path = "/ctemp";
//build a unique path with every request to store. the info per user with custom func. I used this function to build unique paths based on member ID, that was for my use case. It can be a regular dir.
//$path = build_unique_path($path); // this was for my use case

//login form action url
$url="https://beispielseite.de/";
$postinfo = "user=".$username."&password=".$password;

$cookie_file_path = $path."/cookie.txt";

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
//set the cookie the site has for certain features, this is optional
curl_setopt($ch, CURLOPT_COOKIE, "cookiename=0");
curl_setopt($ch, CURLOPT_USERAGENT,
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $_SERVER['REQUEST_URI']);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postinfo);
curl_exec($ch);

//page with the content I want to grab
curl_setopt($ch, CURLOPT_URL, "https://beispielseite.de/sichtbar/nur/wenn/eingeloggt/");
//do stuff with the info with DomDocument() etc
$html = curl_exec($ch);
curl_close($ch);

?>
[/src]

hab mich jetzt erstmal durchgeklickt und nach fertigen lösungen gesucht, aber irgendwie wird immer immer eine leere seite angezeigt
wenn ich allerdings die seite so aufrufe, bekomme ich immerhin die loginseite angzeigt
[src=php]
<?php

//step1
$cSession = curl_init();
//step2
curl_setopt($cSession,CURLOPT_URL,"https://beispielseite.de/");
curl_setopt($cSession,CURLOPT_RETURNTRANSFER,true);
curl_setopt($cSession,CURLOPT_HEADER, false);
//step3
$result=curl_exec($cSession);
//step4
curl_close($cSession);
//step5
echo $result;

?>
[/src]

kannst und würdest du mir erklären warum das obige script nichtmal die seite anzeigen kann im vergleich zu der kurzen form ohne login?
 
Zuletzt bearbeitet:
Disclaimer:
Ich habe noch nicht viel mit curl gemacht und das letzte mal ist über 1 Jahr her.

Gibt curl dir irgendwelche return/error-codes?
Wenn das Minmalbeispiel eine Seite zurückgibt dann sperrt dich vermutlich zumindest keine Botdetection aus.
 
  • Thread Starter Thread Starter
  • #5
Das minimalbeispiel funktioniert Tadellos, nur das ich halt eine blanke seite ohne grafische elemente angezeigt bekomme. dies wäre mir egal, mir ging es sowieso nur um den textartigen inhalt :)

das längere beispiel erzeugt nur eine leere weiße seite, wenn cih alerindgs irgendwo plaintext hinzufüge wird dieser auch angezeigt, also ein fehler gibt es demnach nicht.

Thema cookie. ich vermute das es am pfad der cookies liegt... muss hier vielleicht der pfad zu den cookies vom chrome browser hin mit den namen des zuständigen cookies der seite auf der ich mich einloggen will um den newsfeed zu lesen?
 
Meiner Erfahrung nach war curl immer unglaublich eklig zu programmieren, gerade wenn man mehr absetzen muss als eine einzelne simple Anfrage. Wenn du dir das Leben einfacher machen willst, nimm sowas wie "Requests for PHP" ( ). Gibt's open source auf .

Ohne mir jetzt dein Beispiel genauer angesehen zu haben würde ich mit sowas anfangen (simpel und verständlich):
[src=php]// Neue Session für deine Seite
$session = new Requests_Session('https://beispiel.de/');
$session->useragent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36';

// Login
$response = $session->post('/login', ['user' => '...', 'password' => '...']);
// hier checken ob der Login erfolgreich war. $response->status_code und $response->body könnten helfen.

// Deine Seite abrufen (Cookies etc. passiert automatisch)
$response = $session->get('/sichtbar/nur/wenn/eingeloggt/');
echo $response->body;
[/src]
 
  • Thread Starter Thread Starter
  • #8
Ich bedanke mich für eure Hilfen, scheinbar will nichts funktionieren... ich vermute mal das der Provider da etwas unterbindet, denn fehler bekomme ich keine angezeigt :)
 
Hast du das mal gegen deinen eigenen Server getestet ob alles so ankommt wie du das willst?
Mach duir dazu einfach mal ein Testscript das alles über print_r() ausgibt was der Client so übermittelt.


Aber klar, client validierung über Javascript oÄ Scherze gibts durchaus und das nach zu basteln könnte echt aufwändig werden.

Was ist denn der http status code des Requests? Den musst du doch zumindest bekommen oder gibts ein timeout?
 
Zurück
Oben