Fehlermeldung bei falschem Login

Gesperrt
sarronsarron
Beiträge: 251
Registriert: Do 10. Mär 2011, 17:02
Wohnort: Erlangen
Kontaktdaten:

Fehlermeldung bei falschem Login

Beitrag von sarronsarron »

Hallo,

kann mir jemand sagen wo ich eine Fehlermeldung z.B. "Falscher User oder Passwort" einbauen kann bei einem fehlerhaften Login.

Dank im Voraus
sarronsareron
IngoL
Beiträge: 7
Registriert: Mi 25. Jan 2012, 11:40
Kontaktdaten:

Re: Fehlermeldung bei falschem Login

Beitrag von IngoL »

Hallo,

erst Seite mit Fehlermeldung erstellen, idart des Artikels merken und in den Mandanteneinstellungen einen Eintrag hinzufügen:
Typ-----------------Name------Wert
login_error_page-------idart-------"Die idart von deiner Fehlerseite"


Gruß Ingo
sarronsarron
Beiträge: 251
Registriert: Do 10. Mär 2011, 17:02
Wohnort: Erlangen
Kontaktdaten:

Re: Fehlermeldung bei falschem Login

Beitrag von sarronsarron »

Danke für die schnelle Antwort.

Ich würde aber leiber die gleiche Seite (wie der Logion) benutzen und eine Fehlermeldung dabei ausgeben.

Da weis ich nicht wie ich das realisieren kann.

Gruß
sarronsarron
IngoL
Beiträge: 7
Registriert: Mi 25. Jan 2012, 11:40
Kontaktdaten:

Re: Fehlermeldung bei falschem Login

Beitrag von IngoL »

Dann überprüfe doch:
a) Ob anmeldedaten übergeben wurden
b) Ein Login vorhanden ist

z.B. mit:

Code: Alles auswählen

if(   isset($_REQUEST['username']) 
   && isset($_REQUEST['password'])
   && $auth->nobody)
Gruß Ingo
sarronsarron
Beiträge: 251
Registriert: Do 10. Mär 2011, 17:02
Wohnort: Erlangen
Kontaktdaten:

Re: Fehlermeldung bei falschem Login

Beitrag von sarronsarron »

Hallo,

da funktioniert nicht im Modul Login_Form da die action ja in das aufzurfende Script verzweigt. Dort wird dann irgendwo geprüft und auf Login_error_page verweisen.

Wo das aber genau geprüft wird weis ich nicht.

gruß
sarronsarron
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Fehlermeldung bei falschem Login

Beitrag von Spider IT »

Hallo,

dann mach doch die login-seite zur login_error_page :)

Ob

Code: Alles auswählen

$auth->nobody
funktioniert weiß ich nicht, in den Contenido-Modulen steht immer

Code: Alles auswählen

$auth->auth['uid'] == nobody
Gruß
René
sarronsarron
Beiträge: 251
Registriert: Do 10. Mär 2011, 17:02
Wohnort: Erlangen
Kontaktdaten:

Re: Fehlermeldung bei falschem Login

Beitrag von sarronsarron »

Hab ich schon gemacht. Ich weis aber nicht wie oder was ich bei falschem Login abfragen kann damit ich eine Fehlermeldung ausgeben kann.

guß
sarronsarron
IngoL
Beiträge: 7
Registriert: Mi 25. Jan 2012, 11:40
Kontaktdaten:

Re: Fehlermeldung bei falschem Login

Beitrag von IngoL »

Vielleicht reden wir aneinander vorbei :?

Also immer dann, wenn es in einem Request eine Variable username übermittelt wird versucht das $auth Object diesen Benutzernamen zu übernehemen, und stimmt dann noch das Passwort tut es das auch. Sonst ist der Benutzer 'nobody'. Diese Überprüfung findet auf jeder Seite statt. Es ist sozusagen egal auf welche Seite das form verweist in dem die Anmeldedaten eingegeben werden.

Bei einem erfolgreichen Login wird dann die Seite aufgerufen auf das das Form verwiesen hat, wenn es zu einem Fehler kommt wird die login_error_page aufgerufen.

Wenn ich dich richtig verstanden habe ist dein Anmeldeformular auf Seite A und verweist auf einen einen Artikel B, welcher bei positiven Login aufgerufen werden soll. Bei einem Fehlerhaften Login soll aber wieder das Formular mit einer Fehlermeldung angezeigt werden. Daher muß die login_error_page dein Loginformular sein, und das Formular muß so gestaltet werden, dass es erkennt das ein Fehlerhafte Login stattgefunden hat.

Das Modul LoginForm finde ich persönlich ein bisschen unübersichtlich, daher verwende ich etwas wie:

Code: Alles auswählen

<?php
$goidart = [idart des Artikels der nach dem Login aufgerufen werden soll]

$error = '';
if(isset($_REQUEST['username'] && $auth->auth["uid"] == "nobody"){
  $error = mi18n("Da stimte was nicht mit den Anmeldedaten");
}
?>
<form action="front_content.php?idart=<?=$goidart?>" method="POST">
<?=$error?>
<table>
  <tr>
    <th>Benutzername:</th><td><input type="text" name="username"></td>
  </tr><tr>
    <th>Passwort:</th><td><input type="password" name="password"></td>
</table>
</form>
Gruß Ingo
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Fehlermeldung bei falschem Login

Beitrag von Spider IT »

Im Login-Modul steht schon

Code: Alles auswählen

if ($auth->auth['uid'] == 'nobody') {
Danach kannst du dann abfragen (wie IngoL schon schrieb)

Code: Alles auswählen

    if ((isset($_REQUEST['username'])) && (isset($_REQUEST['password']))) {
Wenn das zutrifft, war es eine fehlerhafte Anmeldung.

Also:

Code: Alles auswählen

if ($auth->auth['uid'] == 'nobody') {
    if ((isset($_REQUEST['username'])) && (isset($_REQUEST['password']))) {
        # Fehlerhafte Anmeldung
        ...
    }
    ...
Gruß
René
IngoL
Beiträge: 7
Registriert: Mi 25. Jan 2012, 11:40
Kontaktdaten:

Re: Fehlermeldung bei falschem Login

Beitrag von IngoL »

Spider IT hat geschrieben:...
Ob

Code: Alles auswählen

$auth->nobody
funktioniert weiß ich nicht, in den Contenido-Modulen steht immer

Code: Alles auswählen

$auth->auth['uid'] == nobody
...
Wenn man sich print_r($auth) ausgeben lässt sieht es immer so aus als ob es funktioniert, wenn man es dann verwendet ist die

Code: Alles auswählen

$auth->auth['uid'] == nobody
Variante wirklich besser ;-)

Gruß Ingo
sarronsarron
Beiträge: 251
Registriert: Do 10. Mär 2011, 17:02
Wohnort: Erlangen
Kontaktdaten:

Re: Fehlermeldung bei falschem Login

Beitrag von sarronsarron »

Halloo,

habs eingabaut, funktioniert aber nicht. Es kommt keine Fehlermeldung.

if ($auth->auth["uid"] == "nobody") {

if ((isset($_REQUEST['username'])) && (isset($_REQUEST['password']))) {
echo "Falsche Anmeldung";
}


gruß sarronsarron
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Fehlermeldung bei falschem Login

Beitrag von Spider IT »

Stimmt, habs gerade getestet.
Anscheinend werden die Daten bei der Weiterleitung nicht mitgegeben.

Mir ist da eine andere Lösung in den Sinn gekommen:
login_error_page woanders ablegen, darin per Javascript auf die Login-Seite weiterleiten, aber mit Parameter error=1:

Code: Alles auswählen

<script type="text/javascript">
<![CDATA[
    document.location.href = 'front_content.php?idart=XX&error=1';
//]]>
</script>
ACHTUNG! XX durch die idart ersetzen!
Auf der Seite noch einen Hinweis, für den Fall, dass Javascript deaktiviert ist.

Im Login-Modul dann diesen Code anstelle des vorher eingefügten:

Code: Alles auswählen

    if (isset($_GET['error'])) {
        # Fehlerhafte Anmeldung
        echo 'Benutzername und/oder Passwort falsch';
    }
Letzteres habe ich getestet, das funktioniert: http://www.webseiten-und-so.de/Webseite ... index.html.

Gruß
René
Zuletzt geändert von Spider IT am Sa 10. Mär 2012, 10:31, insgesamt 1-mal geändert.
sarronsarron
Beiträge: 251
Registriert: Do 10. Mär 2011, 17:02
Wohnort: Erlangen
Kontaktdaten:

Re: Fehlermeldung bei falschem Login

Beitrag von sarronsarron »

Hallo,

denke das ich die Lösung gefunden habe.

In cms/front_crcloginform.inc.php vor

header('Location: ' . $sErrorUrl);

folgendes einbauen: $sErrorUrl .= "&login=badlogin";

dann kann man $login im Modul Login_From abfragen

if ($auth->auth["uid"] == "nobody") {

if ($_GET['login']=="badlogin") {
echo "Falsche Anmeldung";
}

bei mir funktioniert es.

gruß sarronsarron
Gesperrt