Einloggen eines Users über direkten Link

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Michael Härtig

Einloggen eines Users über direkten Link

Beitrag von Michael Härtig »

Wir haben ein Forum für unsere Kunden unserer selbst entwickelten Software. Nun steht die Idee, dass die User aus einem Link im Programm auf das Forum kommen (geht schon)

Nun möchte ich aus den Anmeldeinformationen im Programm (hinterlegt sind auch Nutzername und PW) ein direktes Login im Forum ermöglichen (wenn dort adminstrativ der User existiert). Wie muss die URL aussehen / was muss ich evtl. in welcher php-Datei anpassen anpassen? Erste Versuche haben nicht funktioniert... :-(

Ich kann das PW im Klartext schicken, könnte es aber auch MD5 verschlüsseln.

Michael
(haertig@nupis.de)
Benutzeravatar
B.A.Monkey
Mitglied
Beiträge: 35
Registriert: 13.10.2003 22:11
Wohnort: München

Beitrag von B.A.Monkey »

Im Klartext: der User loggt sich in die Software ein, geht auf einen Link zum Forum und soll dort ohne weiteres auch eingeloggt sein?

Genau das Problem hat sich bei einem Projekt von mir auch gestellt. Zuerst hab ich es über Cookies versucht, aber das hat null funktioniert. Meine aktuelle Lösung sieht so aus, dass ich den User über den Link ins Forum nicht direkt reinschicke, sondern über eine eigens dafür gebaute Datei.

In dieser Datei wird zunächst überprüft, ob der User in meiner selbstprogrammierten Software eingeloggt ist; ist dies der Fall, wird überprüft, ob der User schon im Forum eingeloggt ist und wenn nicht wird dies gemacht:
Da ich mit PHP-Sessions arbeite, hole ich mir aus den Session-Angaben den nick und das verschlüsselte Passwort (diese Daten stimmen in Software und Forum überein). Dann include ich die login.php (denn ich will nicht gerne mit dem pw über redirects rumspielen), die ich insofern abgeändert habe, dass bei einem entsprechenden Hinweis das Passwort nicht verschlüsselt und mit dem in der db abgeglichen wird (denn hier wäre es ja doppelt gemoppelt, da das pw bereits verschlüsselt ist).

Bei mir funktioniert diese Lösung wunderbar. Sicher gehts das bestimmt auch anders, aber für mich war das die ideale Lösung und sie funktioniert ;)
Hoffe ich konnte dir bei deinem Problem etwas weiterhelfen?!

Gruß,
monkey
Michael Härtig

Beitrag von Michael Härtig »

Die Idee klingt erst mal gut, werde ich probieren. Falls ich mit PHP hier nicht weiterkomme (kenn mich da nicht so gut aus) poste ich nochmal. Gibts noch andere Ideen / Quellcodeausschnitte????

Michael Härtig
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

Wie wäre es mit einer Anpassung der login.php?

Statt die Inhalte aus dem Login-Formular zu übernehmen, werden die Variablen eben per URL übertragen, wobei das Passwort sowohl im Klartext als auch per md5 übertragen werden kann.

Eine wichtige Frage wäre noch, von wo aus die Benutzer diesen Link nutzen sollen können. Reden wir hier von einem Intranet bzw. einem speziell gesichterten Bereich einer Website?
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
Benutzeravatar
B.A.Monkey
Mitglied
Beiträge: 35
Registriert: 13.10.2003 22:11
Wohnort: München

Beitrag von B.A.Monkey »

Das Problem, wenn man nur die login.php anpasst, sehe ich aber darin, dass dann jedesmal, wenn man das Forum über den entsprechenden Link aufruft, der User neu im Forum eingeloggt wird... evtl. vorhandene neue Beiträge sind dann bereits als gelesen markiert.
Es sei denn, man baut in die Datei eine Abfrage ein, ob der User bereits eingeloggt ist und ob man dann nicht irgendwas übersieht...

Wäre aber sicher auch eine Möglichkeit, die funktionieren könnte... wenn man es richtig macht... 8)
Michael Härtig

Beitrag von Michael Härtig »

Ich denke mal das Problem mit dem neueinloggen ist unkritisch. (Wir reden hier von Nutzern die das Forum 1-2 mal pro Woche nutzen werden und ich rechne mit höchstens 20 Beiträgen die Woche)

Zum Programm: Es ist ne eigenständige Java-Applikation die auf dem Client läuft. Der dazugehörige Server ist auch nicht der Webserver. Ich hab also wirklich nur ne URL. Da könnte ich ja auch die Login.php anpassen.... ich habs nur nicht hinbekommen :-( (Klartext: noch nicht ganz verstanden was nun der Klick auf anmelden wirklich macht)

Ich arbeite dran...

Michael
Michael Härtig

Beitrag von Michael Härtig »

Läuft!

Für die die's interessiert:

.....

Code: Alles auswählen

$password = isset($HTTP_POST_VARS['password']) ? $HTTP_POST_VARS['password'] : '';
Ab hier einfügen (damit wird es mal aus der URL versucht):

Code: Alles auswählen

if ($username == '') $username = urldecode($HTTP_GET_VARS['username']);
if ($password == '') $password = urldecode($HTTP_GET_VARS['password']);
Und dann noch die Zeile mit dem suchen und wie folgt anpassen:

Code: Alles auswählen

if( ((md5($password) == $row['user_password']) || ($password == $row['user_password'])) && $row['user_active'] )
dann gehts auch wenn in $password schon das md5-verschlüsselte Passwort steht.

Die Seite ruf ich dann auf mit:

Code: Alles auswählen

login.php?login=Login&redirect=index.php&username=Michael%20Härtig&password=ea416ed07...
Michael Härtig
Benutzeravatar
B.A.Monkey
Mitglied
Beiträge: 35
Registriert: 13.10.2003 22:11
Wohnort: München

Beitrag von B.A.Monkey »

Vielleicht besser $_GET anstatt $HTTP_GET_VARS, ist aber an sich egal...

Werde es vielleicht beim nächsten Mal ähnlich machen, aber meine Methode funzt ja auch ;)
Fasse1

Beitrag von Fasse1 »

hmm, ich hab das jetzt mal so in die Login-Datei eingebaut, wie Michael das beschrieben hat, wenn ich nun auf den Link klicke, zeigt er mir auch die index-Seite an, aber er ist trotzdem nicht eingeloggt.

Was mache ich falsch ? Muss ich noch irgendwelche Session-Cookies setzen ?

Auf meiner Homepage soll ein User, der sich bei mir mit Namen und PW eingeloggt hat auf den Forum-Link klicken können und dort dann automatisch eingeloggt sein, ohne dass er vorher was im Forum gemacht hat.
Fasse
Mitglied
Beiträge: 2
Registriert: 05.11.2003 11:34

Beitrag von Fasse »

Es funktioniert. Das Problem war wohl eher die Umstellung auf eine neue Datenbank. Jetzt kann ich mich auf jeden Fall über den Link einloggen :)
Gesperrt

Zurück zu „Coding & Technik“