Login über eine Datenbank

Simi

Angesehenes Mitglied
Hallo zäme,

Zwei Fragen an euch...und zwar möchte ich einen Login machen über eine Datenbank.

Das heisst:

Felder: Im Moment belegt:

ID 1
Benutzer Admin
Kennwort Test

Nun wie kann ich diese Daten (Benutzer und Kennwort) holen, und in eine Variable speichern?
Also genau sind es dann zwei Variablen, eine für den Benutzer und eine für das Kennwort.

Zweite Frage:
Wenn ich dann mehrere Benutzer habe (alle haben die gleichen Rechte), sollten alle Logins automatisch funktionieren oder?
Da ich die Felder Benutzer und Kennwort anspreche ohne ID? Aber ihr sind die Profis, erklärt ihr mir wie es am besten geht.

Danke und Gruss
Disastro
 
Hm, also der normale weg ist, dass der Name Unique ist, also nicht doppelt vorkommt. Wenn der User dann seinen Namen und PW eingibt, holst das PW aus der DB, über den Namen, also "SELECT pw FROM tabelle WHERE name='$name'"
Dann vergleichst du das eingegebene PW mit dem aus der Datenbank und kannst dann entsprechend drauf reagieren.

Musst du noch wissen, wie du die ansprichst?
Also folgendes Beispiel:

CODE
// gehe davona us, dass Datenbankverbindung besteht

$result = mysql_query("SELECT pw FROM tabelle WHERE name='$name'") OR exit(mysql_error() ."on line ". __LINE__ );
if( mysql_num_rows($result) )
{
while ($row = mysql_fetch_array($result))
{
if( $pw == $row['pw'] ) echo "PW korrekt!";
else "Falsches PW!";
}
}
else
{
echo "User nicht vorhanden!";
}




Es ginge aber auch:

CODE
// gehe davona us, dass Datenbankverbindung besteht

$result = mysql_query("SELECT pw FROM tabelle WHERE name='$name' AND pw='$pw'") OR exit(mysql_error() ."on line ". __LINE__ );
if( mysql_num_rows($result) )
{
echo "Login korrekt!";
}
else
{
echo "login inkorrekt!";
}

 
Hi,

Danke für deinen Vorschlag...da ich newbie bin auf Datenbanken, mache ich das so.

Meine Angaben der Datenbank:

Datenbank: crexte
Tabelle: user
Felder: userid, username, userpasswort.

Nun möchte ich die Daten der username und userpasswort in den Variablen $username und $userpasswort speichern.

Damit ich später eine if Abfrage machen kann etwa so:

CODE
 if ($_REQUEST['benutzer'] == $username AND $_REQUEST['login'] == $userpasswort) {
   $_SESSION [ 'benutzer' ] = $_REQUEST [ 'login' ];
 }
   else {
     $_SESSION [ 'fehler' ] = 'ungültiges Passwort oder Benutzername!';
   }

?>



Das Connecten zur Datenbank ist kei Problem...

Bitte korrigiert mich wenn etwas nicht stimmen sollte.

Danke im voraus für eure HILFE.

Gruss
Disastro
 
Wie du es vorhast, also erst einfach ales aus der DB lesen und dies dann vergleichen mit den EIngaben klappt nur, wenn es entweder ein Eintrag ist oder aber du es durch eine Schleife laufen lässt.

Sinnigerweise würde ich es so machen:


CODE
$getname = addslashes($_GET['benutzer']);
$getpw = $_REQUEST['login'];

$result = mysql_query("SELECT userpasswort, username FROM user WHERE username='$getname'") OR exit(mysql_error() ."on line ". __LINE__ );

if( mysql_num_rows($result) )
{
while ($row = mysql_fetch_array($result))
{
if( $pw == $row['pw'] )
{
$_SESSION [ 'benutzer' ] = $row['username']; // Namen aus der DB nehmen (auch wegen Groß-/Kleinschreibung

// Daten der DB in die Variablen schreiben
$username = $row['username'];
$userpasswort = $row['userpasswort'];
}
else $_SESSION [ 'fehler' ] = 'Ungültiges Passwort!';
}
}
else
{
$_SESSION [ 'fehler' ] = 'Ungültiger Benutzername!';
}



Das mal als Beispiel, wie man einen Login gestalten kann.


 
Hallo,
Darf ich mich an das Thema anhängen? Ich habe da ein ähnliches Problem.

Das Input File sieht so aus:

QUOTE <html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form method="post" action="login.php">
<label>Benutzername:</label><input name="username" type="text">
<br>
<label>Passwort: </label><input name="userpass" type="password" id="userpass">
<br>
<input name="login" type="submit" id="login" value="Einloggen">
</form>
</body>
</html>


Das Login PHP File sieht so aus:


QUOTE session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['login']))
{
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false)
login($userid);
else
echo 'Ihre Anmeldedaten waren nicht korrekt!';
}
if (!logged_in())
echo '<form method="post" action="login.php">
<label>Benutzername:</label><input name="username" type="text"><br>
<label>Passwort: </label><input name="userpass" type="password" id="userpass"><br>
<input name="login" type="submit" id="login" value="Einloggen">
</form>';
else
echo '<a href="logout.php">Ausloggen</a>';
echo '<p /><a href="logged_in.php">Check</a>';


Und das Resultat ist nicht was ich erwarte.


QUOTE session_start(); include 'sessionhelpers.inc.php'; if (isset($_POST['login'])) { $userid=check_user($_POST['username'], $_POST['userpass']); if ($userid!=false) login($userid); else echo 'Ihre Anmeldedaten waren nicht korrekt!'; } if (!logged_in()) echo '
Benutzername:
Passwort:

'; else echo 'Ausloggen'; echo '
Check';



Kann mir jemand helfen?
blink.gif


Der Host ist auf localhost gestzt. Irgendwie sceint da ein ECHO im Weg zu stehen.

Mein Hoster benutzt Apache mit PHP 4.3.10 und PERL 5.008002.
Die DB Engine ist MySQL 4.1.7

Merci
Boubou7
 
Hi all,

Ich habe es so versucht...aber es geht leider nicht...irgendwelche Vorschläge?

CODE
<?php
$connect = mysql_connect("localhost", "root", "")
or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("creaxte") or die("Auswahl der Datenbank fehlgeschlagen");

$getname = $_REQUEST['benutzer'];
$getpw = $_REQUEST['login'];

$result = mysql_query("SELECT userpasswort, username FROM user WHERE username='$getname'") OR exit(mysql_error() ."on line ". __LINE__ );

if( mysql_num_rows($result) )
{
while ($row = mysql_fetch_array($result))
{
if( $getpw == $row['userpasswort'] )
{
$_SESSION [ 'benutzer' ] = $row['username']; // Namen aus der DB nehmen (auch wegen Groß-/Kleinschreibung

// Daten der DB in die Variablen schreiben
$username = $row['username'];
$userpasswort = $row['userpasswort'];
}
else $_SESSION [ 'fehler' ] = 'Ungültiges Passwort!';
}
}
else
{
$_SESSION [ 'fehler' ] = 'Ungültiger Benutzername!';
}
?>



Danke im voraus.

Gruss
Disastro
 
@ Boubou7:
Bei PHP musst du um den PHP-Quelltext ein <?php ... ?> setzen. Dann erst interpretiert er es, ansonsten nimmt er es als HTML-Code.
Also bei dir muss die login.php dann so aussehen:

CODE <?php
session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['login']))
{
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false)
login($userid);
else
echo 'Ihre Anmeldedaten waren nicht korrekt!';
}
if (!logged_in())
echo '<form method="post" action="login.php">
<label>Benutzername:</label><input name="username" type="text"><br>
<label>Passwort: </label><input name="userpass" type="password" id="userpass"><br>
<input name="login" type="submit" id="login" value="Einloggen">
</form>';
else
echo '<a href="logout.php">Ausloggen</a>';
echo '<p /><a href="logged_in.php">Check</a>';
?>




@ Disastro:
An sich sehe ich grad keinen Fehler im COde. Kommt Fehlermeldung, bzw. was passiert?
 
Danke Mike,
Das war's, es funktioniert. Ich habe als alter Unixer das ?> als Shellprompt interpretiert und rausgeworfen.

Herzlichen Dank
Boubou7
 
Hi Mike und co.
wink.gif


Also hat nun fuktioniert...war ein kleiner Denkfehler von mir.

Noch eine weitere Frage, ich möchte meine Passwörter mit md5 schützen oder wie auch immer. Ich kenn mich mit md5 nicht aus, aber weiss ja das dies in der Datenbank eingestellt werden kann. Aber wie rufe ich md5 passwort von der Datenbank auf?

Mein Code:

CODE
<?php
$getname = addslashes($_GET['benutzer']);
$getpw = $_REQUEST['login'];

$result = mysql_query("SELECT userpasswort, username FROM user WHERE username='$getname'") OR exit(mysql_error() ."on line ". __LINE__ );

if( mysql_num_rows($result) )
{
while ($row = mysql_fetch_array($result))
{
if( $pw == $row['pw'] )
{
$_SESSION [ 'benutzer' ] = $row['username']; // Namen aus der DB nehmen (auch wegen Groß-/Kleinschreibung

// Daten der DB in die Variablen schreiben
$username = $row['username'];
$userpasswort = $row['userpasswort'];
}
else $_SESSION [ 'fehler' ] = 'Ungültiges Passwort!';
}
}
else
{
$_SESSION [ 'fehler' ] = 'Ungültiger Benutzername!';
}
?>



Und wieder Mal danke für eure Hilfe.

Gruss
Disastro
 
In der DB steht ja dann der 32-stellige MD5-String. Man muss das eingegebene PW auch nach md5 wandeln und dann die beiden vergleichen, also folgende Anpassung:

Anstatt
$getpw = $_REQUEST['login'];

schreibst du
$getpw = md5($_REQUEST['login']);



Wenn du ein PW über das Skript in die DB schreibst, machst auch ein md5 davor. Fügst du es direkt in die DB ein, denke auch dran, es md5 zu verschlüsseln.
 
Hey nice es funktioniert...vielen Dank Mike.

Muss schon sagen; "Hier werden Sie geholfen"
wink.gif


Gruss
Disastro
 
Zurück
Oben