Ich bastel derzeit an einem Login-System und stoße dabei leider auf folgendes Problem:
Login funktioniert soweit, User und PW wird in der Datenbank gespeichert und kontrolliert. Wenn man sich einloggt wird man per Header - Location auf die "geheime" Seite weitergeleitet, nur da ist jetzt mein Problem:
Ich möchte, dass sich der Benutzer anmeldet und dann sofort auf die "Benutzerdatenändern"-Seite gelangt. Soweit so gut, ich schicke mit der Header - Location den Zusatz ?user=$id mit und lese die ID in der ändern-Seite mit GET aus (mit POST funktioniert das ganze leider nicht)
Wenn man jetzt jedoch auf der ändern-Seite einfach eine andere ID im Zusatz eingibt, gelangt man auf die Seite des anderen Benutzers und kann somit auch dem seine Daten ändern.
Gibt es eine Möglichkeit den User auf seiner eigenen Seite "einzusperren"?
Komm da leider nicht drauf
PHP-Teil admin.php:
CODE
<?php
// Session starten
session_start();
// Variablen deklarieren
$_SESSION['angemeldet'] = false;
$benutzername = '';
$passwort = '';
$fehlermeldung = '';
// Funktion zum verbinden zur Datenbank
function db_connect()
{
// Zugangsdaten für die DB
$dbhost = 'xxx';
$dbuser = 'xxx';
$dbpass = 'xxx';
$dbname = 'xxx';
// Verbindung herstellen und Verbindungskennung zurückgeben
$conid = mysql_connect( $dbhost, $dbuser, $dbpass ) or die( 'Verbindungsfehler!' );
if (is_resource( $conid ))
{
mysql_select_db( $dbname, $conid ) or die( 'Datenbankfehler!' );
}
return $conid;
}
// Prüfen ob ein Cookie existiert und zu einem gültigen User gehört
if (isset( $_COOKIE['UserLogin'] ))
{
// Wert aus dem Cookie mit dem Wert in der Datenbank vergleichen
$conid = db_connect();
$sql = "SELECT
`id`
FROM
`user`
WHERE
`cookie_hash` = '" .mysql_real_escape_string( $_COOKIE['UserLogin'] ). "' AND
`aktiviert` = 1";
$ergebnis = mysql_query( $sql, $conid );
// Stimmt der Cookie Hash überein, wurde 1 Datensatz gefunden
if (mysql_num_rows($ergebnis) == 1)
{
// Wenn der Hash aus dem Cookie mit dem aus der DB übereinstimmt,
// Session Variable setzen und auf die geheime Seite weiterleiten
$_SESSION['angemeldet'] = true;
header( "Location: admin_user.php" );
exit;
}
}
// Wenn das Formular abgeschickt wurde
if (isset( $_POST['login'] ))
{
// Maskierende Slashes aus POST Array entfernen
if (get_magic_quotes_gpc())
{
$_POST = array_map( 'stripslashes', $_POST );
}
// Benutzereingabe umladen, von Leerzeichen befreien und
$benutzername = strtolower( trim( $_POST['benutzer'] ) );
$passwort = md5( trim( $_POST['passwort'] ) );
// Benutzereingabe mit User in der Datenbank vergleichen
$conid = db_connect();
$sql = "SELECT
`cookie_hash`
FROM
`user`
WHERE
LOWER(`NName`) = '" .mysql_real_escape_string( $benutzername ). "' AND
`Kennwort` = '" .mysql_real_escape_string( $passwort ). "' AND
`aktiviert` = 1";
$ergebnis = mysql_query( $sql, $conid );
// Stimmen die Benutzereingaben überein, wurde 1 Datensatz gefunden
if (mysql_num_rows($ergebnis) == 1)
{
$sql2 = "SELECT ID FROM user WHERE LOWER(NName) = '" .mysql_real_escape_string($benutzername)."' AND Kennwort = '".mysql_real_escape_string($passwort)."' AND aktiviert = 1 ";
$ergebnis2 = mysql_query($sql2, $conid);
while($row = mysql_fetch_object($ergebnis2)){
$getUserID = $row->ID;
}
// Abfrageergebnis fetchen
$usercookie = mysql_fetch_assoc( $ergebnis );
// Wenn die Anmeldung korrekt war Session Variable setzen,
// COOKIE an Browser schicken und auf die geheime Seite weiterleiten
$_SESSION['angemeldet'] = true;
setcookie( 'UserLogin', $usercookie['cookie_hash'], time()+600 );
header( "Location: admin_user.php?userid=".$getUserID."" );
exit;
}
else
{
$fehlermeldung = '<h3>Die Anmeldung war fehlerhaft!</h3>';
}
}
?>
// Session starten
session_start();
// Variablen deklarieren
$_SESSION['angemeldet'] = false;
$benutzername = '';
$passwort = '';
$fehlermeldung = '';
// Funktion zum verbinden zur Datenbank
function db_connect()
{
// Zugangsdaten für die DB
$dbhost = 'xxx';
$dbuser = 'xxx';
$dbpass = 'xxx';
$dbname = 'xxx';
// Verbindung herstellen und Verbindungskennung zurückgeben
$conid = mysql_connect( $dbhost, $dbuser, $dbpass ) or die( 'Verbindungsfehler!' );
if (is_resource( $conid ))
{
mysql_select_db( $dbname, $conid ) or die( 'Datenbankfehler!' );
}
return $conid;
}
// Prüfen ob ein Cookie existiert und zu einem gültigen User gehört
if (isset( $_COOKIE['UserLogin'] ))
{
// Wert aus dem Cookie mit dem Wert in der Datenbank vergleichen
$conid = db_connect();
$sql = "SELECT
`id`
FROM
`user`
WHERE
`cookie_hash` = '" .mysql_real_escape_string( $_COOKIE['UserLogin'] ). "' AND
`aktiviert` = 1";
$ergebnis = mysql_query( $sql, $conid );
// Stimmt der Cookie Hash überein, wurde 1 Datensatz gefunden
if (mysql_num_rows($ergebnis) == 1)
{
// Wenn der Hash aus dem Cookie mit dem aus der DB übereinstimmt,
// Session Variable setzen und auf die geheime Seite weiterleiten
$_SESSION['angemeldet'] = true;
header( "Location: admin_user.php" );
exit;
}
}
// Wenn das Formular abgeschickt wurde
if (isset( $_POST['login'] ))
{
// Maskierende Slashes aus POST Array entfernen
if (get_magic_quotes_gpc())
{
$_POST = array_map( 'stripslashes', $_POST );
}
// Benutzereingabe umladen, von Leerzeichen befreien und
$benutzername = strtolower( trim( $_POST['benutzer'] ) );
$passwort = md5( trim( $_POST['passwort'] ) );
// Benutzereingabe mit User in der Datenbank vergleichen
$conid = db_connect();
$sql = "SELECT
`cookie_hash`
FROM
`user`
WHERE
LOWER(`NName`) = '" .mysql_real_escape_string( $benutzername ). "' AND
`Kennwort` = '" .mysql_real_escape_string( $passwort ). "' AND
`aktiviert` = 1";
$ergebnis = mysql_query( $sql, $conid );
// Stimmen die Benutzereingaben überein, wurde 1 Datensatz gefunden
if (mysql_num_rows($ergebnis) == 1)
{
$sql2 = "SELECT ID FROM user WHERE LOWER(NName) = '" .mysql_real_escape_string($benutzername)."' AND Kennwort = '".mysql_real_escape_string($passwort)."' AND aktiviert = 1 ";
$ergebnis2 = mysql_query($sql2, $conid);
while($row = mysql_fetch_object($ergebnis2)){
$getUserID = $row->ID;
}
// Abfrageergebnis fetchen
$usercookie = mysql_fetch_assoc( $ergebnis );
// Wenn die Anmeldung korrekt war Session Variable setzen,
// COOKIE an Browser schicken und auf die geheime Seite weiterleiten
$_SESSION['angemeldet'] = true;
setcookie( 'UserLogin', $usercookie['cookie_hash'], time()+600 );
header( "Location: admin_user.php?userid=".$getUserID."" );
exit;
}
else
{
$fehlermeldung = '<h3>Die Anmeldung war fehlerhaft!</h3>';
}
}
?>
PHP-Teil admin_user.php
CODE
<?php
// Session starten
session_start();
// Prüfen ob der Benutzer angemeldet ist
if (!$_SESSION['angemeldet'])
{
// Zum Login umleiten
header( 'location: admin.php' );
exit;
}
// Abmelden, Cookie löschen und zum Login umleiten
if ($_GET['keks'] == 'loeschen')
{
setcookie( 'UserLogin', '', time()-3600 );
session_destroy();
header( 'location: admin.php' );
exit;
}
$id = $_GET['userid'];
?>
// Session starten
session_start();
// Prüfen ob der Benutzer angemeldet ist
if (!$_SESSION['angemeldet'])
{
// Zum Login umleiten
header( 'location: admin.php' );
exit;
}
// Abmelden, Cookie löschen und zum Login umleiten
if ($_GET['keks'] == 'loeschen')
{
setcookie( 'UserLogin', '', time()-3600 );
session_destroy();
header( 'location: admin.php' );
exit;
}
$id = $_GET['userid'];
?>
LogIn-Script von traum-projekt.com
Dieser Beitrag wurde von bluescorp bearbeitet: 06. April 2009 - 10:19