Login Script mit MYSQL Anbindung

Zenti

Erfahrenes Mitglied
Guten Abend,

Ich hab versucht ein kleines Login Script mit MYSQL anbindung zu basteln.


+++ HTML FORMULAR MIT SUBMIT (login.php)

HTML:
<form action="login_check.php" method="POST">

Deine Kundennummer:<br>
<input type="text" size="24" maxlength="50"
name="id"><br />

Dein Passwort:<br>
<input type="password" size="24" maxlength="50"
name="passwort"><br />
<br />

<input type="submit" value="Login">

</form>


+++ DATEN WERDEN ÜBERPRÜFT (login_check.php)


PHP:
<?php
session_start();
?>

<?php
include "mysql_connection.php";

$kundennummer = $_POST["id"];
$passwort = $_POST["passwort"];

$abfrage = "SELECT ID, passwort FROM kunden WHERE ID LIKE '$kundennummer' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

if($row->passwort == $passwort)
    {
    $_SESSION["kundennummer"] = $kundennummer;
    echo "Login erfolgreich. <br> <a href=\"member.php\">Geschützer Bereich</a>";
    }
else
    {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.php\">Login</a>";
    }

?>

+++ GESCHÜTZTER BEREICH (member.php)

PHP:
<?php
session_start();

if(!isset($_SESSION["kundennummer"]))
   {
   echo "Bitte erst <a href=\"login.php\">einloggen</a>";
   exit;
   }
?>

So wie mein Script momentan aufgebaut ist kann man sich immer einloggen. Er zeigt nur ne Fehlermeldung
wenn man die falschen Daten eingibt. Drückt man aber auf Submit ohne etwas einzugeben dann loggt man sich ein.
Auf die member.php kann man auch extern zugreifen. Ich weis nicht was ich falsch mache -.-

Ich habe schon einmal ein Loginscript gebastelt allerdings war das mit einer MD5 verschlüsselung was aber
jetzt keine rolle spielt. Auf jedenfall bekomm ichs nicht mehr hin. Irgendwo ist der Wurm drinnen.

Könnte mir da jemand evtl. Hilfestellung anbieten.
Wäre sehr dankbar :)

mit freundlichen Grüßen,
*Zenti
 
Zuletzt bearbeitet:
Grüße,

ich hatte mal das gleiche Problem - auf deinen Code angewendet hab ichs dann so gelöst:

PHP:
if($row->passwort == "$passwort")
{
...
}

hoffe es funktioniert, ansonsten müssen mer da mal schauen :p
 
Hi

ändere mal die SQL Abfrage wie folgt ab. Außerdem würde ich die Passwörter deiner Kunden verschlüsselt (z.B. mit md5() ) abspeichern.

PHP:
<?php
session_start();
include "mysql_connection.php";

$kundennummer = mysql_real_escape_string($_POST["id"]);
$passwort = md5($_POST["passwort"]);

$abfrage = "SELECT ID, passwort FROM kunden WHERE ID = '".$kundennummer."' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
if($row->passwort == $passwort && mysql_num_rows($ergebnis) == 1)
    {
    $_SESSION["kundennummer"] = $kundennummer;
    echo "Login erfolgreich. <br> <a href=\"member.php\">Geschützer Bereich</a>";
    }
else
    {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.php\">Login</a>";
    }

?>
 
Wenn du die Variable Passwort jedoch vor der Abfrage mit md5 verschlüsselst, dann müssen die Passwörter in der Datenbank entweder ebenfalls schon md5 verschlüsselt sein oder du änderst den Code
ein wenig ab, da sich sonst keine Übereinstimmung findet:

PHP:
<?php
session_start();
include "mysql_connection.php";

$kundennummer = mysql_real_escape_string($_POST["id"]);
$passwort = md5($_POST["passwort"]);

$abfrage = "SELECT ID, passwort FROM kunden WHERE ID = '".$kundennummer."' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

$PVerschl = md5($row->passwort);

if($PVerschl == $passwort && mysql_num_rows($ergebnis) == 1)
    {
    $_SESSION["kundennummer"] = $kundennummer;
    echo "Login erfolgreich. <br> <a href=\"member.php\">Geschützer Bereich</a>";
    }
else
    {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.php\">Login</a>";
    }

?>

oder

PHP:
<?php
session_start();
include "mysql_connection.php";

$kundennummer = mysql_real_escape_string($_POST["id"]);
$passwort = md5($_POST["passwort"]);

$abfrage = "SELECT ID, passwort FROM kunden WHERE ID = '".$kundennummer."' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
if(md5($row->passwort) == $passwort && mysql_num_rows($ergebnis) == 1)
    {
    $_SESSION["kundennummer"] = $kundennummer;
    echo "Login erfolgreich. <br> <a href=\"member.php\">Geschützer Bereich</a>";
    }
else
    {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.php\">Login</a>";
    }

?>

... keine Ahnung, ob das 2. Beispiel seinen Dienst verrichtet - bin ein bisschen aus dem Stoff draußen :D
 
@ Alex_T:
Hat leider nicht funktioniert,.. :confused:
Danke trozdem :)

@ timestamp:
Jetzt wird zwar ein Fehlermeldung ausgegeben wenn ich auf den Sumit Button drücke. Auf die member.php
kann ich jedoch extern zugreifen. Dort wirkt die Session nicht.

bin leider ratlos..
Hat jemand noch eine Idee ?

Danke,.. :)

mit freundlichen Grüßen,
*Zenti

ps.: Möchte das ganze ohne MD5 machen.
Dieses Script wird so auch nicht zum einsatz kommen.
Ich bastel einfach nur so rum :)
 
Zuletzt bearbeitet:
Ja habe ich alles gemacht.
Ich bin auch der Meinug das es funktionieren müsste..
Keine Ahnung :confused:

So sieht mein momentaner Code aus,..

PHP:
<?php
session_start();
include "mysql_connection.php";

$kundennummer = mysql_real_escape_string($_POST["id"]);
$passwort = $_POST["passwort"];

$abfrage = "SELECT ID, passwort FROM kunden WHERE ID = '".$kundennummer."' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
if($row->passwort == $passwort && mysql_num_rows($ergebnis) == 1)
    {
    $_SESSION["kundennummer"] = $kundennummer;
    echo "Login erfolgreich. <br> <a href=\"member.php\">Geschützer Bereich</a>";
    }
else
    {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.php\">Login</a>";
    }

?>


+++GESCHÜTZTER BEREICH

PHP:
<?php
session_start();

if(!isset($_SESSION["kundennummer"]))
   {
   echo "Bitte erst <a href=\"login.php\">einloggen</a>";
   exit;
   }
?>
 
Füg in der geschützen Bereich Datei einfach mal ein
PHP:
var_dump($_SESSION);
ein. Und geh mal auf Nummer sicher und teste das Script in einem anderen Browser (also geh auf die member.php ohne dich vorher einzuloggen).
 
So habe das ganze jetzt mal getestet.

Wenn ich "var_dump($_SESSION); " einfüge und die member.php öffne dann kommt folgender Code im Browser. Ô.o
array(5) { ["ID"]=> &string(3) "fgh" ["id"]=> &string(5) "10000" ["kundenlogin"]=> &string(0) "" ["kdnr"]=> &string(0) "" ["kundennummer"]=> &string(5) "10114" }

und die Member.php lässt sich auch ohne login öffnen.

hm.. -.-

mit freundlichen Grüßen,
*Zenti

ps.: Hat noch jemand ne Idee ?
 
Zuletzt bearbeitet:
Mahlzeit,
ich hab mir jetzt mal die Zeit genommen und das ganze Ding mal auseinander genommen....
Ich hab mir selber eine Datenbank folgendermaßen angelegt:
Datenbankname = test
Datenbanktabelle = kunden

Struktur der Datenbanktabelle: id(=Primary Key)INT(11) NOT NULL AUTO_INCREMENT, passwort VARCHAR(30) NOT NULL, kunde INT(20) NOT NULL

Dabei ist kunde der Part, in dem die kundennummer gespeichert wird.

Hier also nun mein Code der login.php:
PHP:
<html>
<head>
<title>Test - Login</title>
</head>

<body>

<form action="login_check.php" method="POST">

Deine Kundennummer:<br>
<input type="text" size="24" maxlength="50"
name="nummer"><br />

Dein Passwort:<br>
<input type="password" size="24" maxlength="50"
name="passwort"><br />
<br />

<input type="submit" value="Login">

</form>

</body>
</html>

zugegeben - es hat sich nicht viel geändert :-) (außer das name-Attribut beim Kundennummer-Textfeld)

Code der login_check.php

PHP:
<?php
session_start();
/*******************
relevante Daten
in Variablen
speichern
*******************/
$kundennummer = $_POST["nummer"];
$passwort_eingabe = $_POST["passwort"];
/*******************
Abfrage mit 
entsprechendem
Ergebnis
*******************/


//Hier sollten die Daten zur Herstellung einer Datenbankverbindung stehen

	
//Abfrage
$abfrage = mysqli_query($db,"SELECT * FROM kunden WHERE kunde = $kundennummer");
while(@$datensatz = mysqli_fetch_array($abfrage)) {
		extract($datensatz);


if($passwort == $passwort_eingabe) {
	$_SESSION["kundennummer"] = $kundennummer;
	echo"Login erfolgreich. <br><a href='member.php'>Geschützter Bereich</a>";
} else {
	echo"Benutzername und/oder Passwort waren falsch. <br><a href='login.php'>Login</a>";
}

}
?>

und der Code der member.php:

PHP:
<?php
session_start();

if(!isset($_SESSION["kundennummer"])) {
	echo"Bitte erst <a href='login.php'>einloggen</a>";
} else {
	echo"Sie sind eingeloggt";
}
?>

Das ganze hat bei mir wunderbar funktioniert - hoffe das tut es auch bei dir....:D
 
Zurück