Login -Links sollen nur bei korrekter Eingabe zu sehen sein

Fragen zum Thema HTML, JavaScript, PHP
Antworten
latrellvie
Beiträge: 4
Registriert: Sa Aug 10, 2013 3:32 pm

Login -Links sollen nur bei korrekter Eingabe zu sehen sein

Beitrag von latrellvie » Sa Feb 01, 2014 7:20 pm

Tag liebe Kollegen !!!
Ich habe hier :
1) Anmeldeformular - hier werden Username und Passwort eingegeben
2)Loginseite - hier sollen die Links "Kundenbonitaet" und "Kundenbonitaet bearbeiten" nur
erscheinen wenn der richtige Username und Passwort eingegeben wurde, ansonsten
erhält man eine folgende Meldung "Logindaten sind falsch, Zugriff verwehrt !"

Mein Problem : wenn ich LoginInside.php einfach so im Browser aufrufe dann erhalte ich richtigerweise die Fehlermeldung da ja kein Username und Passwort eingegeben worden sind, WENN ich aber bei myProLogin.php (Anmeldeformular) irgendetwas Falsches oder Garnichts eingebe, dann werde ich zu myProLoginInside.php (Loginseite) weitergeleitet und die Links erscheinen als ob ich richtigen Username und Passwort eingeben habe, wo liegt der Fehler ?

Login.php:

Code: Alles auswählen

<!DOCTYPE html>
<html>
<head>
	<title>Schulung</title>
	<meta charset="UTF-8">
	<link rel="stylesheet" href="style.css">
	
</head>
<body style="background-image:url(koGhetto1.jpg)">
<div id="wrapper">

<form method="POST" action="myProLoginInside.php">
Loginname:<br>
<input type="text" name="loginname">
<br>
Loginpassword:<br>
<input type="password" name="password">
<input type="submit" name="senden" value="einloggen">
<br>
<br>
<a href="myProIndex.php">Zurück zur Hauptseite</a>
</form>


</div>
</body>
</html>
LoginInside.php :

Code: Alles auswählen

<?php
//session_start();
?>
<!DOCTYPE html>
<html>
<head>
	<title>Mysql Anmeldung</title>
	<meta charset="UTF-8">
	<link rel="stylesheet" href="style.css">
</head>
<body>
<?php



    //$_logindaten = ARRAY("trueloginname"=>"admin", "truepassword"=>"12345");

    if (isset($_POST["loginname"]) && isset($_POST["password"]))
        {
        if ( $_POST["loginname"] == "admin"&& $_POST["password"] == "12345");
            {
            # Userdaten korrekt - User ist eingeloggt
            # Login merken !
            //$_SESSION["login"] = 1;
			echo '<a href="myProBonitaetsauskunft.php">Kundenbonitaetsauskunft</a>';
			echo '<a href="myProBonitaetsbearbeitung.php">Kundenbonitaet bearbeiten</a>';
			exit;
            }
        }

    else 
        {
        //include("myProLogin.html");
		echo "Logindaten sind falsch, Zugriff verwehrt !";
		echo "<br>";echo "<br>";
		echo '<a href="myProIndex.html">Zurück zur Hauptseite</a>';
        }

    # User ist eingeloggt



//mysql_close($verbindung);

?>

</body>
</html>


<!DOCTYPE html>
<html>
<head>
	<title>Schulung</title>
	<meta charset="UTF-8">
	<link rel="stylesheet" href="style.css">
<style>
body {background-image:url(koGhetto1.jpg);}
a:link {color:#F97E03;}
</style>
	
</head>
<body>


</body>
</html>

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Login -Links sollen nur bei korrekter Eingabe zu sehen s

Beitrag von cloidnerux » Sa Feb 01, 2014 7:36 pm

So, das Problem ist unsaubere Programmierung.
Das ist dein Code-Ausschnitt der Probleme macht:

Code: Alles auswählen

    if (isset($_POST["loginname"]) && isset($_POST["password"]))
    {
        if ( $_POST["loginname"] == "admin"&& $_POST["password"] == "12345");
        {
            # Userdaten korrekt - User ist eingeloggt
            # Login merken !
            //$_SESSION["login"] = 1;
            echo '<a href="myProBonitaetsauskunft.php">Kundenbonitaetsauskunft</a>';
            echo '<a href="myProBonitaetsbearbeitung.php">Kundenbonitaet bearbeiten</a>';
            exit;
        }
    }
Du fragst richtig ab, ob die Variablen überhaupt existieren und dann fragst du ab, ob die Werte stimmen.
Und wenn du dir die Zeile genau anschaust, wirst du am Ende etwas unnötiges finden, was deinen Fehler erzeugt:

Code: Alles auswählen

if ( $_POST["loginname"] == "admin"&& $_POST["password"] == "12345");
Zudem hast du da anscheinend das selbe Template zweimal kopiert. Das hier steht am Ende:

Code: Alles auswählen

<!DOCTYPE html>
<html>
<head>
   <title>Schulung</title>
   <meta charset="UTF-8">
   <link rel="stylesheet" href="style.css">
<style>
body {background-image:url(koGhetto1.jpg);}
a:link {color:#F97E03;}
</style>
   
</head>
<body>


</body>
</html>
Dann insgesamt. Wenn das nur für Privat oder kurzfristig ist, ist dieser Ansatz in Ordnung. Wenn das aber so irgendwo längere Zeit verwendet werden soll schau dir bitte die notwendigen Sicherheitsmaßnahmen im Zusammenhang mit Login, Nutzerverwaltung, Passwort Hashing mit Salts, Schutz vor SQL-Injections und XSS an und implementiere dies.
Redundanz macht wiederholen unnötig.
quod erat expectandum

latrellvie
Beiträge: 4
Registriert: Sa Aug 10, 2013 3:32 pm

Re: Login -Links sollen nur bei korrekter Eingabe zu sehen s

Beitrag von latrellvie » So Feb 02, 2014 9:36 pm

Cloidnerux - vielen Dank !

Habe jetzt den Code verbessert, habe jetzt nur noch das Problem, das bei bei keiner Angabe von Username/Passwort immer noch die erste else Anweisung und nicht die zweite else Anweisung angegeben wird. Warum? Scheint als ob das Formular trotzdem etwas mitschickt.

thx for help !!!!

Code: Alles auswählen

<?php
//session_start();
?>
<!DOCTYPE html>
<html>
<head>
	<title>Mysql Anmeldung</title>
	<meta charset="UTF-8">
	<link rel="stylesheet" href="style.css">
	<style>
body {background-image:url(koGhetto1.jpg);}
a:link {color:#F97E03;}
</style>
</head>
<body>
<?php



    //$_logindaten = ARRAY("trueloginname"=>"admin", "truepassword"=>"12345");

    if (isset($_POST["loginname"]) && isset($_POST["password"]))
        {
        if ( $_POST["loginname"] == "admin"&& $_POST["password"] == "12345")
            {
            # Userdaten korrekt - User ist eingeloggt
            # Login merken !
            //$_SESSION["login"] = 1;
			echo '<a href="myProBonitaetsauskunft.php">Kundenbonitaetsauskunft</a>';
			echo '<a href="myProBonitaetsbearbeitung.php">Kundenbonitaet bearbeiten</a>';
			//exit;
            }
			else
				{
				echo" Username/Passwort sind falsch!";
				echo "<br>";echo "<br>";
				echo '<a href="myProIndex.html">Zurück zur Hauptseite</a>';
				}
        }

    else 
        {
        //include("myProLogin.html");
		echo "Bitte Username/Passwort eingeben!";
		echo "<br>";echo "<br>";
		echo '<a href="myProIndex.html">Zurück zur Hauptseite</a>';
        }

    



//mysql_close($verbindung);

?>

</body>
</html>



Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Login -Links sollen nur bei korrekter Eingabe zu sehen s

Beitrag von cloidnerux » So Feb 02, 2014 9:59 pm

Habe jetzt den Code verbessert, habe jetzt nur noch das Problem, das bei bei keiner Angabe von Username/Passwort immer noch die erste else Anweisung und nicht die zweite else Anweisung angegeben wird. Warum?
Weil es das ist, was du Programmiert hast ;)
if (isset($_POST["loginname"]) && isset($_POST["password"]))
"isset" prüft ob Variablen existieren. Mehr nicht. Wenn du nichts eingeben hast in die Formulare, dann existieren trotzdem die Variablen für die Textfelder, da ist aber nur ein leerer Text drin.

Das ist die Art wie das System funktioniert. Du hast dein Formular, dass Eingabemöglichkeiten beinhaltet. Die Eingaben haben einen Namen, der in PHP auch dem Variablennamen entspricht(z.B "$_POST["loginname"]"). Wenn du dein Formular abschickst, wird der Inhalt der Eingabefelder übertragen. Wenn nichts drinsteht, ist halt auch die Variable leer.

Das nutzt man manchmal auch aus in Zusammenhang mit Auto-Fill. Man gibt in einem Formular versteckte Felder an, die die Typischen Bezeichnungen wie Kontonummer oder Kreditkarten-Nummer haben. Füllt dann ein Nutzer das Formular per Auto-Fill aus, so trägt da der Browser die entsprechenden Daten ein ohne das es der Nutzer merkt, aber nur mal so am Rande.
Redundanz macht wiederholen unnötig.
quod erat expectandum

sebix
Beiträge: 82
Registriert: Mo Nov 19, 2012 8:27 pm

Re: Login -Links sollen nur bei korrekter Eingabe zu sehen s

Beitrag von sebix » Mo Feb 03, 2014 5:57 pm

(Ergänzend zu clodinerux)
Du kannst dir bei Problemen mit Formularen, wenn du nicht genau weißt, in welchem Fall was wo drinnen steht, dir den gesamten Inhalt der Arrays mit print_r und/oder var_dump ausgeben lassen. print_r gibt Arrays rekursiv aus, var_dump gibt dir mehr Infos (auch von Arrays, aber nicht rekursiv AFAIK, zB Typ und Länge bei Strings). Für Beispiele siehe verlinkte Doku.

latrellvie
Beiträge: 4
Registriert: Sa Aug 10, 2013 3:32 pm

Re: Login -Links sollen nur bei korrekter Eingabe zu sehen s

Beitrag von latrellvie » Di Feb 04, 2014 9:32 pm

Danke euch cloidnerux und sebix .... dachte es wird der nur der Inhalt der Felder weitergeleitet und nicht das Feld selbst...... toll erklärt alles verstanden , thx nochmals !!!

Antworten