kostenloser Webspace werbefrei: lima-city


Probleme beim Loginsystem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    m**********n

    Hi erstmal ich habe wieder eine Frage zum Thema PHP. Ich habe folgenden PHP Code und er funktioniert nicht. Hoffe ihr könnt mir helfen!
    Erstmal die Login.html Datei
    <html>
    <form action="login.php" method="post">
    <table border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
    <td>
    Loginname:<br>
    <input name="uid" type="text">
    <br>
    <br>
    Passwort: <br>
    <input name="pass" type="text"><br><br>
    <input name="" type="submit" value="Abschicken"></td>
    </tr>
    </table>
    </form>


    Dann die Login.php Datei
    <?php
    $user1 = "user1";
    $pwd1 = "admin1";
    
    $user2 = "user2";
    $pwd2 = "admin2";
    
    
    $uid = $_POST['user'];
    $pass = $_POST['pass'];
    
    $i="1";
          while($i<3)
          {
    	  if($uid=="$user$i" && $pass=="$pwd$i"){
    session_register('uid');   
    echo '<meta http-equiv="refresh" content="0";URL="index.php?sid=$uid&hl=index">
    Sie werden sofort weitereleitet...';
    	  }}
    ?>


    Und zum Schluss die Index.php Datei
    <?php
    session_start('uid');
    if(!session_is_registered(uid))
       {
       die(' Sie müssen sich einloggen. <p><a href="login.php" style="text-decoration: none">Link zur Loginseite</a></p> ');
       }
       
    $hl = $_GET['hl'];
    
    if(!isset($hl)) {$hl="index";};
    
    if($hl == "index") {
    echo 'Hat funktioniert!';
    }
    ?>

    Also das Prinzieb ist dass ich zuerst die Login.html Datei aufrufe und dann checkt die Login.php Datei die Daten. dort taucht der Fehler auf.
    "Fatal error: Maximum execution time of 20 seconds exceeded in /home/webpages/lima-city/master3112nn/html/login.php on line 15"
    Woran liegts oder mache ich den gesamten Login Berreich falsch? Wenn es das Letztere ist dann bitte ich um Lösungsvorschläge
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo,

    du hast eine Endlosschleife in deinem Script, das bedeutet, dass deine while-Schleife nicht abbricht, weil $i immer 1 ist und damit immer kleiner als 3. Du musst am Ende des while-Blocks einfach die Varialbe $i um eins hochsetzen, also $i++, dann funktioniert die Schleife.

    Außerdem würde ich die Speicherung der Benutzernamen und Passwörter in einem Array vorschlagen, sprich:

    $userdata = array(
    array( "user" => "user1", "pass" => "geheim" ),
    array("user" => "user2", "pass" => "nochgeheimer" )
    );

    Dann kannst du einfach über $userdata[$i]["user"] und $userdata[$i]["pass"] darauf zugreifen. Falls es mehr User werden kannst du die Speicherung ja auch in einer Datenbank vornehmen.

    Viele Grüße,
    ps3web
  4. n********r

    und ich hab auch noch einen Fehler:
    $uid = $_POST['user'];

    das müsste eigl so sein:
    $uid = $_POST['uid'];

    außer du änderst den Namen des Inputs-Felds in Login.html


    Gruss

    Beitrag zuletzt geändert: 27.1.2009 21:14:24 von n50-planer
  5. Als erstes würde ich das ganze gleich komplett in eine PHP Datei schreiben und die entsprechenden Funktionen auslagern.

    Hier mal nen kleines Beispiel:

    <?php
    
        //SessionStuff ->
        session_start(); // Erst mal starten
    
        // Login Stuf ->
        if(isset($_POST['uid']) AND isset($_POST['pass']) {
            // Der ganze Loginkram, mit Session Stuff ->
        }
    ?>
    
    <!-- Hier dann der übliche Spaß in HTML, da zwischen noch eine kleine Box mit dem Formular oder halt einem Logoutbutton -->
    
    <?php
        if(isset($_SESSION['uid'])) {
            // Logutbutton zeigen
        } else {
            // Loginformular
        }
    ?>
    
    <!-- Restlicher HTML-Kram -->


    Das ganze ist natürlich nicht 1zu1 zum kopieren gedacht, Du sollst ja auch was dabei lernen können. Dazu kommt leider, das Deine Varriante eines Logins nicht grade die Sicherste ist, da das Passwort nicht verschlüsselt ist und die Session nicht gesichert ist. Ergo man kann jeder Zeit Dir die Session klauen und sich ohne Login frei in Deinem System bewegen.

    Deswegen solltest Du noch die IP des Users mit in die Session schreiben und wie folgt abfragen:

    <?php
        if(isset($_SESSION['IP']) AND $_SERVER['REMOTE_ADDR'] != $_SESSION['IP']) {
            die('Sessionklau lohnt sich nicht!');
        }
    ?>


    Natürlich musst Du die IP des Users beim Login in die Session schreiben, da es sonst wenig Sinn macht sie zu prüfen und die Abfrage sollte direkt nach dem Login Stuff sein, damit Du auf der sicheren Seite bist.


    Hoffe das war jetzt nicht zu viel auf einmal, aber ich denke Du wirst Dich schon zurecht finden.
  6. Autor dieses Themas

    m**********n

    Danke für die Antworten werde gleich mal die Idee mit dem IP "include" ausprobieren.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!