Probleme mit Authentifizierungsskript
Stefan
- php
Hallo Forum!
Ich habe folgendes Problem mit einem Login - im Forumsarchiv bin ich leider nicht fündig geworden.
da ich PHP-Newbie bin, würrde ich mich über einen "Schubs in die richtige Richtung" freuen - also schaon einmal danke im Vorraus.
Also:
Ich habe auf einer html seite ein login-formular, welches auf meine login.php zugreift und die daten über eine users.txt validiert. (bitte keine kommentare dies bzgl. - mysql ist (noch) too much für mich!)
Das ganze sieht wie fogt aus:
<?php
session_start();
$username = $_POST["username"];
$passwort = $_POST["password"];
$passwort = md5($passwort);
$log=0;
$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
{
$zeile = fgets($userdatei,500);
$userdata = explode("|", $zeile);
if ($userdata[0]==$username and $passwort==trim($userdata[1]))
{
$_SESSION['username'] = $username;
echo "<b>Ihr Login war erfolgreich. Sie können nun <a href="sicher.php".sid."">hier</a> Ihren Account erreichen.</b>";
$log = 1;
}
}
fclose($userdatei);
if ($log==0)
{
echo "<b>Falsche Logindaten!</b><br><br><a href="login.html">Erneut versuchen</a>";
}
?>
Jetzt möchte ich in der users.txt jedoch einen weiteren wert einbinden. und zwar den jeweiligen link, den der user zugewiesen bekommt.
Jeder user soll nämlich eine fest definierte zielseite statt der "sicher.php" angezeigt bekommen. wie bekomme ich diese if abfrage (if user=mäxchen, dann zeige "adresse") jetzt darein??
mein erster ansatz war dieser hier:
<?
session_start();
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" type="text/css" rel="stylesheet" media="screen,projection,print">
</head>
<body>';
$benutzername = $_POST["benutzername"];
$passwort = $_POST["passwort"];
if($benutzername=="mäxchen" AND $passwort=="1234")
{
echo "<b>Ihr Login war erfolgreich.<br><br>Sie können nun <a href="mäxchen.php".sid."">hier</a> Ihren Account erreichen.</b>";
}
elseif($benutzername=="Saskia" AND $passwort=="abcd")
{
echo "<b>Ihr Login war erfolgreich.<br><br>Sie können nun <a href="saskia.php".sid."">hier</a> Ihren Account erreichen.</b>";
}
else
{
echo "<b>Falsche Logindaten!</b><br><br><a href="index.html">Erneut versuchen</a>";
}
echo '</body>
</html>';
das problem hierbei ist, dass ich für jeden neuen user das skript manuell erweitern müsste. (zumal mir die abfrage über die txt sicherer erscheint)
also verwende ich nun dieses skript:
<?php
session_start();
$username = $_POST["username"];
$passwort = $_POST["password"];
$passwort = md5($passwort);
$log=0;
$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
{
$zeile = fgets($userdatei,500);
$userdata = explode("|", $zeile);
if ($userdata[0]==$username and $passwort==trim($userdata[1]))
{
$_SESSION['username'] = $username;
echo "<b>Ihr Login war erfolgreich. Sie können nun <a href="sicher.php".sid."">hier</a> Ihren Account erreichen.</b>";
$log = 1;
}
}
fclose($userdatei);
if ($log==0)
{
echo "<b>Falsche Logindaten!</b><br><br><a href="login.html">Erneut versuchen</a>";
}
?>
zum eintragen neuer user in die txt möchte ich folgendes verwenden:
(sollten hier fehler einzug erhalten haben - danke für's aufmerksam machen)
<?php
$username = $_POST["username"];
$password = $_POST["passwort"];
$password2 = $_POST["passwort2"];
$adresse = $_POST["adresse"];
if ($password == $password2)
{
$user_vorhanden = array();
$passwort = md5($password);
$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
{
$zeile = fgets($userdatei,500);
$userdata = explode("|", $zeile);
array_push ($user_vorhanden,$userdata[0]);
}
fclose($userdatei);
if (in_array($username,$user_vorhanden))
{
echo "Username schon vorhanden <br> <a href="eintragen.html">zurück</a>";
}
else
{
$userdatei = fopen ("user.txt","a");
fwrite($userdatei, $username);
fwrite($userdatei, "|");
fwrite($userdatei, $passwort);
fwrite($userdatei, "|");
fwrite($userdatei, "adresse");
fwrite($userdatei, "\n");
fclose($userdatei);
echo "$Das Anlegen von $username war erfolgreich.";
}
}
else
{
echo "Die Passwörter sind nicht identisch<br> <a href="eintragen.html">zurück</a> ";
}
?>
wie verbinde ich also jetzt die hinterlegte "adresse" aus der users.txt mit der ausgabe der login.php??
also wie bekomme die $adresse statt der sicher.php da rein??
hoffe, dass ich mein problem nahelegen konnte!? any questions?? any ideas??
vielen dank!
stefan
if ($userdata[0]==$username and $passwort==trim($userdata[1]))
{
$_SESSION['username'] = $username;
echo "<b>Ihr Login war erfolgreich. Sie können nun <a href="$userdata[2]">hier</a> Ihren Account erreichen.</b>";
$log = 1;
}
Sowas in die Richtung!?
if ($userdata[0]==$username and $passwort==trim($userdata[1]))
{
$_SESSION['username'] = $username;
echo "<b>Ihr Login war erfolgreich. Sie können nun <a href="$userdata[2]">hier</a> Ihren Account erreichen.</b>";
$log = 1;
}Sowas in die Richtung!?
Alles klar.. Es funktioniert!