• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Automatisches login, csv-Download

Anmerkung: mikdoe und ich haben einen Link zur Seite per PN erhalten. Es handelt sich dabei um ein Loginformular mit serverseitigem Skript. Habe mir das Ganze jetzt nur kurz anschauen können: das Formular wird anscheined per JS abgeschickt, die relevanten Eingabefelder sind:
HTML:
<input type="hidden" name="login" value="1" />
<input type="hidden" name="sprache" value="de" />
<input type="text" name="loginname" placeholder="Loginname" />
<input type="password" name="losungswort" placeholder="Losungswort" />
<button id="bt_login" class="submit" data-t4me_jqselform="#frm_login">Anmelden</button>

- - - Aktualisiert - - -

Probier einmal folgenden Code (ungetestet):
PHP:
<?php

$url = "http://example.com/login.php"; //URL, an die das Loginformular geschickt wird
 
$cookiefile = "./cookies.txt"; //Pfad zu einer Textdatei, in der die Cookies gespeichert werden - in diesem Fall die Datei "cookies.txt" im aktuellen Verzeichnis

$loginname = "Benutzername"; //Feld "Loginname"
$losungswort = "Passwort"; //Feld "Losungswort"


$postfields = array(
  "login" => "1",
  "sprache" => "de",
  "loginname" => rawurlencode($loginname),
  "losungswort" => rawurlencode($losungswort)
);
$postfields_string = "";
foreach($postfields as $key=>$value){
  $postfields_string .= $key.'='.$value.'&';
}
rtrim($postfields_string, '&');

$useragent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36";  

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, $useragent);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_COOKIEFILE, realpath($cookiefile));
curl_setopt($curl, CURLOPT_COOKIEJAR, realpath($cookiefile));
curl_setopt($ch, CURLOPT_POST, count($postfields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$login = curl_exec($curl);
curl_close($curl);

print_r($login);
?>
 
Hallo Julian,
vielen dank für deine Bemühungen!
Ich muss mir erstmal eine Umgebung für php basteln. Ich melde mich dann wieder, wenn ich getestet habe.

Gruß swe
 
Wie und in welcher Form die Daten zum Anmelden beim Server ankommen, kann man sehr schön mit HttpFox, WireShark, Network Monitor, o.Ä. verfolgen. Das ist, meiner Meinung nach, um einiges effektiver.
 
kkapsner schrieb:
Wie und in welcher Form die Daten zum Anmelden beim Server ankommen, kann man sehr schön mit HttpFox, WireShark, Network Monitor, o.Ä. verfolgen.
Cool danke für den Tippo.

Julian schrieb:
Als Testumgebung kann ich dir XAMPP empfehlen
@swe, denk aber bitte daran das, das RPi eine ARM Prozessor besitzt und XAMPP (LAMPP unter Linux) nicht funktioniert. Wenn du tatsächlich einen Webserver betreiben möchtest, musst du die Programme aus den Repositorien selber installieren. Steht hier geschrieben Raspberry PI: Webserver (LAMP) unter Raspbian installieren | mnTechBlog

Für die Automatisierung kann man auch einen cronjob einrichten… aber alles weiter überlasse ich den Moderatoren, da selber noch nie gemacht.

Falls sonst noch irgendwelche Probleme mit dem RPi auftreten, lass es ruhig raus. Das Teil ist bei uns im Amateurfunk sehr bleibt, da lässt sich sicher was machen oder schreib 'ne PN

MfG Xorg1990
 
@swe, denk aber bitte daran das, das RPi eine ARM Prozessor besitzt und XAMPP (LAMPP unter Linux) nicht funktioniert. Wenn du tatsächlich einen Webserver betreiben möchtest, musst du die Programme aus den Repositorien selber installieren.
Gut, dass du darauf hinweist - habe ganz vergessen, dass es hier um den Rasberry Pi geht...
 
Hallo, ihr tollen Helfer,
ist ja nicht so, dass ich gar nichts tun würde, aber da ist soooo viel Neues dabei, dann dauert das halt...
Hier also der aktuelle Stand des Linux-Javascript-Html-Raspberry-Apache-Php-Anfängers:

Zunächt habe ich auf meinem win7-Rechner xampp installiert, scheint auch (leider nur) fast geklappt zu haben, es gibt’s eine php Fehlermeldung „Something wrong...“ die ich nicht abgestellt bekomme. Also das lampp direkt und manuell auf den Raspberry (Bs Raspbian), wo es ja auch hingehört. Hat gut geklappt und funktioniert!
Ist wahrscheinlich ne Grundschulfrage, aber trotzdem:
wie teste ich jetzt das Script von Julian?

Ich habe mit HttpFox die url des „csv-download-Feldes“ ausgelesen, die sieht ungefähr so aus:
https://QQQQ/ZZZ/YYYYY/XXX/st_anabm...g_name=Alle&fahrer=&fahrer_name=Alle&art=anab
Was ich nicht verstehe ist folgendes:
-Wenn ich mich dann am Portal auslogge und diese url in die Adressleiste eingebe, kann ich den download trotzdem starten; also ohne mich vorher wieder im Portal angemeldet zu haben. (das liefert zumindest am selben Tag die csv-Daten, am folgenden jedoch eine leere csv-Datei)
Woran liegt das? (Cookies?)

Ich arbeite mal weiter am Verständnis und danke euch für die vielen hilfreichen Tipps!
Gruß swe
 
Wenn ich mich dann am Portal auslogge und diese url in die Adressleiste eingebe, kann ich den download trotzdem starten; also ohne mich vorher wieder im Portal angemeldet zu haben. (das liefert zumindest am selben Tag die csv-Daten, am folgenden jedoch eine leere csv-Datei)
Woran liegt das? (Cookies?)
Hm, seltsam. Denn durch das Ausloggen werden Sessioncookies etc. nicht mehr gültig. Vielleicht kann man die Datei auch herunterladen ohne eingeloggt zu sein? Müsste eigentlich möglich sein, wenn man den Pfad zur Datei kennt und das Muster, aus dem sich der Dateiname zusammensetzt. Denn dann ruft man ja direkt den Download auf und nicht ein Skript - das kann man dann auch ohne Login...
 
swe schrieb:
ist ja nicht so, dass ich gar nichts tun würde
Das habe ich mir im Nachhinein auch so gedacht „wenn er vom RPi spricht, dann wird er ja wissen was er tut“.


es gibt’s eine php Fehlermeldung „Something wrong...“
Bei XAMPP(Windows), ändern die immer mal die Sicherheitseinstellung vielleicht verursacht das den Fehler. Bei LAMMP wird das nicht so streng gesehen.

swe schrieb:
Also das lampp direkt und manuell auf den Raspberry (Bs Raspbian), wo es ja auch hingehört. Hat gut geklappt und funktioniert!
Aha gut zu wissen. Habe auf den RPi Nodejs als Webserver am laufen das geht auch gut.


swe schrieb:
(das liefert zumindest am selben Tag die csv-Daten, am folgenden jedoch eine leere csv-Datei)
Vielleicht wird die csv Datei direkt in php erstellt via fputcsv?! Andernfalls steht da auch https was auf eine gute Absicherung des Betreibers hinweist.

Alles weitere überlasse ich Julian und co.
 
Ich würde mal davon ausgehen, dass die Datei noch im Cache liegt. Geht die URL denn auch ohne Einloggen von einem anderen Browser oder gar Rechner aus?

So wie die URL aussieht, wird kein Cookie gesetzt, sondern die Session-ID in die Links reingeschrieben.

Diese Session-ID muss man sich mit einem Einlog-Request holen und dann kann man sich die URL ga gut zusammenbauen (ist ja alles schön verständlich benannt).
 
Hallo Julian und kkapsner,
mich verwirrt das meiste weiterhin; ich fasse mal zusammen, was ich verstanden habe:
Das php-Script muss sich mittel Einlog-Request die Sesion_id holen und in die url einbauen, damit dann der eigentliche download durchgeführt werden kann.
Das würde dann auf dem Apache gespeichert werden. (Immerhin die Infrastruktur funktioniert inzwischen schon mal auf dem RaspPi)
Gibt´s denn dazu irgendwo Lektüre (am Besten auch noch auf deutsch ;) ), die mich da hin bringt, ohne gleich Datenbank- php-oder js-Profi werden zu müssen? (mich erschlägt einfach die Menge an Unbekanntem)
Ich danke euch für die Geduld mit nem absoluten Neuling!
Gruß swe
 
Thanks Julian,
you see: I try in english, but it will work. I hope!
It looks like it is possible for me to understand... ;)
I will be back in just a few weeks, when i got all translated...
Greetings swe :)
 
Zurück
Oben