Seitenschutz funktioniert nicht!

piumer

Mitglied
Hi ich habe mal wieder ein Problem:

Und zwar benutze ich ein LoginSystem und möchte nun bestimmte Seiten vor Direktabruf schützen, so dass die Seiten nur angezeigt werden, wenn der user eingeloggt wird. So wie ich vorgegangen bin klappt bei einem Kumpel, bei mir gibts aber die Fehlermeldung:

Fatal error: Cannot redeclare checkuserlogin() (previously declared in C:\FoxServ\www\MySite\usermanagment.inc.php:3) in C:\FoxServ\www\MySite\usermanagment.inc.php on line 3

Hier meine Scripts:

In der index.php steht u.a. folgendes:

PHP:
   if ( $ses [Vorname] == "admin" ) // Hier soll die url ausgegeben werden
{
	?>
	<a href="<?php echo $ses [url]?>">Adminbereich</a>
	<?php

Es soll also ein Link gezeigt werden, wenn sich "admin" eingelogt hat:

--------------------

Die Seite, auf die der admin linken kann, enthält folgendes:

PHP:
<?php
session_start();
    include("connect2db.inc.php");
    include("usermanagment.inc.php");
?>
........
<body>
PHP:
<?php
    $ses = CheckUserSession (session_id());
    if ($ses)
    {
?>
............
INHALT
.....
PHP:
<?php
    }
    else
    {
      echo "Moment! Sie müssen sich erst anmelden!<br><br>";
    }
?>

---------------------------------

Und hier die usermanagment.inc.php

PHP:
<?php
/**** Prüfen, ob der User berechtigt ist, einen Login durchzuführen.*/
function CheckUserLogin ($un, $pw, $session){
$result = mysql_query("SELECT UserId,Name,Vorname,UserName,UserPasswd,url FROM AdminUser WHERE UserName='$un' AND UserPasswd=MD5('$pw')") or mysql_error();
$zeile = mysql_fetch_array($result);
if ( $zeile["UserId"] == "" )
{
  // header("Location: index.php");
}
else
{
  $result = mysql_query("UPDATE AdminUser SET UserSession = '".$session."',UserLogin = NOW() WHERE UserId = '".$zeile["UserId"]."'") or mysql_error();
  // header("Location: admin.php");
}
}
/**** LOGOUT */

function CheckS ($name)
{
  return md5 ($name."abc");
}

function UserLogout ($session){
$result = mysql_query("UPDATE AdminUser SET UserSession = NULL WHERE UserSession = '".$session."'") or mysql_error();
// header("Location: index.php");
}
/**** Prüfen, ob die Session in Ordnung ist.*/
function CheckUserSession ($session){
$result = mysql_query("SELECT UserId,Name,Vorname,UserName,UserLogin,UserPasswd,url FROM AdminUser WHERE UserSession = '".$session."'") or mysql_error();
if ( mysql_num_rows($result) == 1 ){
$zeile = mysql_fetch_array($result);
$sessarr["UserId"]    = $zeile["UserId"];
$sessarr["Name"]      = $zeile["Name"];
$sessarr["Vorname"]   = $zeile["Vorname"];
$sessarr["UserLogin"] = $zeile["UserLogin"];

$sessarr["UserPasswd"] = $zeile["UserPasswd"];
$sessarr[url] = $zeile["url"];
return $sessarr;
}
else {
// header("Location: index.php");
return false;
}
}
?>

---------------------------------------------------

Wie gesagt, beim Kumpel funktioniert es genau so. Man kann die Seiten nicht einfach so aufrufen, man muss sich erst einloggen!

Kann mir einer helfen

MfG piumer
 
Fatal error: Cannot redeclare checkuserlogin() (previously declared in C:\FoxServ\www\MySite\usermanagment.inc.php:3) in C:\FoxServ\www\MySite\usermanagment.inc.php on line 3
Die Fehlermeldung besagt, dass du die Funktion 'checkuserlogin()' schon einmal deklariert hast. Du wirst wahrscheinlich die Datei usermanagment.inc.php irgendwo doppelt inkludiert haben o.Ä. ?!
 
nicht nur einmal zuviel!

Jo, hab die Meldung verstanden, aber es lag daran, dass es sogar an zwei Stellen zuviel deklariert wurde. Aber jetzt es. Danke nochmal!

Noch eine Frage:

Jetzt kann man die geschützten Seiten zwar nicht mehr ohne Login aufrufen, aber im Browser werden die Namen der Seiten noch angezeigt. Kann ich dies verhindern, wenn ja, wie, dass in der URL-Leiste die Anhängsel nicht mehr angezeigt werden?

Hab mal gehört, dass man das mit der htAccess machen kann?

Gruß piumer
 
Wenn Du nicht willst, dass auf die geschützten Seiten einfach so zugegriffen wird, dann speicher alle diese Dateien in einem Verzeichnis. Füge diesem Verzeichnis die Datei .htaccess hinzu, in der folgendes steht:
Code:
Deny from All
Dadurch hat überhaupt niemand Zugriff auf das Verzeichnis samt Inhalt. Um nun dennoch authentifizierten Benutzern Zugriff auf die Seiten zu geben, kannst Du an ein PHP-Script den Dateinamen der aufzurufenden Seite übergeben. Dieses Script prüft die Session des Nutzers, holt bei Erfolg den Inhalt der angeforderten Datei aus dem geschützten Verzeichnis und gibt diesen aus. Somit wird der Seiteninhalt durch das Script "geschleift" und nur berechtigten Nutzern angezeigt.

snuu
 
Zuletzt bearbeitet:
Zurück