• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

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

venom2k6

NGBler

Registriert
15 Juli 2013
Beiträge
107
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??
 

venom2k6

NGBler

Registriert
15 Juli 2013
Beiträge
107
  • 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:

alter_Bekannter

N.A.C.J.A.C.

Registriert
14 Juli 2013
Beiträge
4.823
Ort
Midgard
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.
 

venom2k6

NGBler

Registriert
15 Juli 2013
Beiträge
107
  • 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?
 

Rakorium-M

NGBler

Registriert
14 Juli 2013
Beiträge
413
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" (http://requests.ryanmccue.info, Manual). Gibt's open source auf Github.

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]
 

venom2k6

NGBler

Registriert
15 Juli 2013
Beiträge
107
  • 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 :)
 

alter_Bekannter

N.A.C.J.A.C.

Registriert
14 Juli 2013
Beiträge
4.823
Ort
Midgard
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?
 
Oben