James32: Session-login

Hi!

Ich habe ein Login-System, das auf jeder geschützten Seite folgendes ganz oben im Code stehen hatte:

session_start ();  
if ($_SESSION["geschuetztes_login4563"]!="James")  
{  
  header ("Location: formular.php");  
}

beim login wird

if($_REQUEST['user']=="James" && md5($_REQUEST['pwd'])=="bfea0102f324257a2b15g42005ac83af") {  
  $_SESSION["geschuetztes_login4563"] = "James";  
  
  header ("Location: index.php");  
}  
else  
{  
  header ("Location: formular.php?fehler=1");  
} 

Worin liegt der Fehler, so das der Alexia-crawl reingekommen is?

lg
James

  1. Grüße,
    in erster linie darf die datei an sich (formular.php) selbst wenn die adresse bekannt ist, ohne login nicht aufrufbar sein. verwende ein riesen security-if um die ganze datei zB.
    MFG
    bleicher

    1. hab grad gesehen das da mein exit; verschwunden is :-/
      Das sollte es heißen & auch reichen, oder?

      if ($_SESSION["geschuetztes_login4563"]!="James")
      {
        header ("Location: formular.php");
        exit;
      }

      1. Grüße,

        if ($_SESSION["geschuetztes_login4563"]!="James")
        {
          header ("Location: formular.php");
          exit;
        }

        halt halt halt! du meinst nach diesem IF folgt der "geschützte" inhalt? und was lässt dich glauben, dass alle browser/bots sich um die header-location angaben scheren?

        MFG
        bleicher

        1. P.S:aber AFAIK pi-mal-daumen ja - sowas dürfte reichen.

  2. Moin,

    Ich habe ein Login-System, das auf jeder geschützten Seite folgendes ganz oben im Code stehen hatte:

    session_start ();

    if ($_SESSION["geschuetztes_login4563"]!="James")
    {
      header ("Location: formular.php");
    }

      
    Was ist denn mit der Bedingung, wenn gar keine Session besteht oder wenn in der Session das Element $\_SESSION["geschuetztes\_login4563"] nicht vorhanden ist?  
      
    Deine Logik ist verkehrt herum.  
      
    Schalte deine Notices ein mit error\_reporting(E\_ALL) und solche Fehler sollten dir nicht wieder passieren.  
      
    Grüße  
    Jimmy  
      
    
    
    1. echo $begrüßung;

      Schalte deine Notices ein mit error_reporting(E_ALL) und solche Fehler sollten dir nicht wieder passieren.

      Nur beim erstmaligen Aufruf, wenn noch kein Cookie vorhanden ist. Da aber beim einem normalen erstmaligen Aufruf die Anmeldung mit Passwortprüfung erfolgt, und mit dem anschließenden Location-Header-Umgeleite ein neuer Request erfolgt, ist ab da im normalen Browser ein Cookie vorhanden und der Aufruf der "geschützten Seite" bringt keine Notices mehr. Man muss also auch mal die Cookies ausschalten. Alternativ müsste man sich auftretende Fehler per ErrorLogging notieren und auswerten. Wobei es dann allerdings wie in dem Fall auch zu spät sein kann. Man könnte aber wenigstens einen Grund für das Fehlverhalten sehen.

      echo "$verabschiedung $name";

    2. naja, wenn keine session vorhanden is/$_SESSION["geschuetztes_login4563"] nicht gesetzt is ist es NICHT = "James"...

      das was irgendwie an wichtigem herausgelöscht hab war das exit;

      Aber falls du das nicht reicht müsste es doch so auf alle Fälle funktionieren!?

        
      session_start ();  
      if (!isset($_SESSION['geschuetztes_login4563']) || !$_SESSION['geschuetztes_login4563']) {  
        header ("Location: formular.php");  
        exit;  
      }  
      if ($_SESSION["geschuetztes_login4563"]!="James")  
      {  
         header ("Location: formular.php");  
         exit;  
      }  
      
      

      ???

      danke
      James