chb1982
Goto Top

Sessionbasiertes Login Kennwörter aus Datenbank

Hi,

im Augenblick nutze ich ein Loginsystem, dass ich bei SelfHTML gefunden habe. Funktioniert auch ganz gut.
Aber ich möchte, dass Benutzername und Kennwort aus einer MySQL Datenbank kommen.
Hat jemand eine Idee, wie man das einfach lösen kann? Im Augenblick stehe ich irgendwie auf dem Schlauch.

Hier das Script von SelfHTML
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
session_start();

$username = $_POST['username'];
$passwort = $_POST['passwort'];

$hostname = $_SERVER['HTTP_HOST'];
$path = dirname($_SERVER['PHP_SELF']);

Benutzername und Passwort werden überprüft
if ($username == 'benjamin' && $passwort == 'geheim') {
$_SESSION['angemeldet'] = true;

Weiterleitung zur geschützten Startseite
if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') {
if (php_sapi_name() == 'cgi') {
header('Status: 303 See Other');
}
else {
header('HTTP/1.1 303 See Other');
}
}

header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/index.php');
exit;
}
}
?>
<!DOCTYPE html PUBLIC "-W3CDTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<title>Geschützter Bereich</title>
</head>
<body>
<form action="login.php" method="post">
Username: <input type="text" name="username" /><br />
Passwort: <input type="password" name="passwort" /><br />
<input type="submit" value="Anmelden" />
</form>
</body>
</html>

Content-Key: 26091

Url: https://administrator.de/contentid/26091

Printed on: April 19, 2024 at 18:04 o'clock

Member: badrulecracker
badrulecracker Feb 15, 2006 at 15:50:42 (UTC)
Goto Top
Moin,

als ich würde so tun (Einzusetzen bei "//Benutzername und Passwort werden überprüft"):

define('MYSQL_HOST', 'localhost');
define('MYSQL_USER', 'Testbenutzer');
define('MYSQL_PASS', 'Testpasswort');
define('MYSQL_DATABASE', 'datenbank');


@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
mysql_select_db(MYSQL_DATABASE) OR
die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());

$sql="SELECT benutzername, passwort FROM benutzer WHERE benutzername='".$username."' AND passwort='".$passwort."';";
$result = mysql_query($sql) OR die(mysql_error());
if(mysql_num_rows($result) > 0) $_SESSION['angemeldet'] = true;


mal schauen, so von der logik her sollte das eigentlich funktionieren. Solltest allerdings deine Passwörter nicht im Klartext in der DB speichern. Da hilft md5();

mfg, brc
Member: chb1982
chb1982 Feb 15, 2006 at 16:18:20 (UTC)
Goto Top
Habe das jetzt so gemacht. Aber so logt er grundsätzlich erfolgreich ein, egal was für ein PW ich eingebe
$username = $_POST['username'];
$passwort = $_POST['passwort'];

$hostname = $_SERVER['HTTP_HOST'];
$path = dirname($_SERVER['PHP_SELF']);

// Benutzername und Passwort werden überprüft
$query = "select count(*) as abc from zugang where benutzername = '".$username."' and kennwort = '".$passwort."'";
$db = mysql_connect('localhost','root','europa');
$res = mysql_db_query ("ae", $query);
$num=mysql_num_rows($res);


if(mysql_num_rows($res) > 0) {
$_SESSION['angemeldet'] = true;
Member: badrulecracker
badrulecracker Feb 15, 2006 at 17:23:59 (UTC)
Goto Top
Moin,

also ich weiss zwar nicht warum du 2x die Anzahl der Datensätze raussuchst, aber wenn du mit count(*) arbeitest, müsste es auch so gehen:

$query = "select count(*) as abc from zugang where benutzername = '".$username."' and kennwort = '".$passwort."'";
$db = mysql_connect('localhost','root','europa');
$res = mysql_db_query ("ae", $query);
$row = mysql_fetch_assoc($res);

if($row['abc'] > 0) $_SESSION['angemeldet'] = true;

cu
Member: Masterofdisaster2
Masterofdisaster2 Feb 15, 2006 at 17:49:58 (UTC)
Goto Top
<?php

define('MYSQL_HOST', 'l---.------');
define('MYSQL_USER', '-----------');
define('MYSQL_PASS', '----------');
define('MYSQL_DATABASE', '-------');

if(!@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS)) {
die("Es konnte keine Verbindung aufgebaut werden");
}

if(!mysql_select_db(MYSQL_DATABASE)) {
die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
} ?><?


if($_REQUEST['Send'])
{
$Password=md5($_POST['Passwort']); <---Passwort verschlüßelt
$result=mysql_query("SELECT * from users where UserName='$_POST[User]'");
while($row = mysql_fetch_array($result))
{
$username=$row["UserName"];
$userpass=$row["UserPass"];
if($Password==$userpass)
{
define(login,1); <---//sowas wie session damit du keine seite einfach so aufrufen kannst, musste aber dann auf den seiten prüfen.
echo $Passwort;
include("die seite die du haben willst");

}
else
{
echo"Der User und/oder das Passwort wurden nicht gefunden!";
echo?>
<p><a href="dein Link">Zurück zum Login?</a></p>

<?
}
}
}
else
{
?>
</p>
<p>&nbsp; </p>
<form action="link zu dieser seite" method="post">
User <input maxlength="50" name="User" type="text">

Passwort <input maxlength="50" name="Passwort" size="10" type="password">

<input name="Send" type="submit" value="Login">
</form>
<a href="link zur registrier seite">noch nicht Registriert?</a>
<?php
}

?>
Member: NaCkHaYeD
NaCkHaYeD Feb 16, 2006 at 08:11:52 (UTC)
Goto Top
Ich würde es anders aufziehen.

In einer Datenbank ist der Name hinterlegt, dass Passwort mit der md5() Summe.

Auf der ersten Scriptzeile steht session_start(); dadurch bekommst du eine eindeutige Nummer. Ist nun beim einloggen Name und Passwort richtig hinterlegst du in der Spalte "session" diese eindeutige nummer mit session_id(); ebenso die Zeit des einloggens in einer Spalte "Zeit".

in jedem geschützten script prüfst du nun anfangs, ob in irgendeiner Zeile die Session_id hinterlegt ist. Wenn genau ein Datensatz zurück kommt, und die max. Log Zeit nicht überschritten ist, dann refresh du die Zeit und gehst weiter im Script.

Beim ausloggen machst du die Session Nummer in der Datenbank bei dem User platt.

mfg
Thomas

P.S. Bei Interesse lasse ich dir gerne das Script zukommen.
Member: larsson
larsson Apr 06, 2006 at 19:52:31 (UTC)
Goto Top
Hallo thomas.

Mich würde Dein Script sehr interessieren, weil ich im Moment genau mit den gleichen Problemen zu tun habe.
Könntest Du es mir zukommen lassen?

Viele Grüße,
larsson.