Login Script

Dieses Thema im Forum "Webentwicklung" wurde erstellt von toschk, 6. April 2006 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 6. April 2006
    Bin grad dabei ein loginscript an meine datenbank anzupassen.
    Ich hab die seite login.php die das pw (player_pw) und den benutzernamen (player_name) aus einer tabelle (player) ausliest.
    Wenn man sich erfolgreich angemeldet hat wird eine Seite mit einem login text und einem link zur gesicherten seite ausgegeben. auf der gesicherten seite wird dann geprüft ob die session id gültig ist.
    ist sie gültig wird die seite angezeigt, andernfalls springt man wieder zur loginseite.
    Das problem ist, das trotz erfolgreicher anmeldung die gesicherte seite wieder zur loginpage springt.
    wo ist der fehler?
    Da wo ich die fehler vermute hab ich gekenzeichnet

    sichere_seite.php
    Code:
    <?php
    session_start();
    if(!session_is_registered('player_name') || $_SESSION['player_name'] == "") <--------------Problem
    {
     header("location:login.php"); <--------------hier???
     die;
    }
    require("./connect.inc.php");
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     <html>
     <head>
     <title>Sichere Seite</title>
     <link rel="stylesheet" type="text/css" href="./style.css">
     </head>
     <body>
     <table width="400" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" align="center">
     <tr>
     <td bgcolor="#e7e7e7" align="center">
     <?php echo "<b>Hallo ".$_SESSION['player_name']."</b>"; ?>
     <br><br>
     <b>Hier ist der sichere Inhalt!</b>
     <br><br>
     <a href="./register.php">Neuen Benutzer anlegen</a>
     <br><br>
     <a href="./logout.php">LogOut</a>
     </td>
     </tr>
     </table>
     </body>
     </html>
    
    login.php
    Code:
    <?php
    session_start();
    require("./connect.inc.php");
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>login zum adminbereich</title>
    <link rel="stylesheet" type="text/css" href="./style.css">
    <style type="text/css">
    <!--
    .Stil1 {font-size: 7pt}
    -->
    </style>
    </head>.
    <body>
    <?php if(!isset($_POST['submit'])) { ?>
    <form action="<?php $PHP_SELF ?>" method="post">
    <table width="400" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" align="center">
     <tr>
     <td bgcolor="#e7e7e7" align="center" colspan="2">
     <b>Bitte erst anmelden</b>
     </td>
     </tr>
     <tr>
     <td width="170" bgcolor="#e7e7e7">Benutzername</td>
     <td width="230" bgcolor="#ffffff"><input type="text" name="username" size="20" class="input"<?php if($_POST['username'] != "" ) {echo ' value="'.$_POST['username'].'"';} ?>></td>
     </tr>
     <tr>
     <td width="170" bgcolor="#e7e7e7">Passwort</td>
     <td width="230" bgcolor="#ffffff"><input type="password" name="password" size="20" class="input"></td>
     </tr>
     <tr align="right">
     <td align="left" bgcolor="#e7e7e7">
     <input type="submit" name="submit" value="Anmelden" class="button"> </td>
     <td bgcolor="#e7e7e7"><a href="./register.php" class="Stil1">register</a></td>
     </tr>
     </table>
    </form>
    <?php
     }elseif(!$_POST['username'] || $_POST['username'] == "") {
     echo '<p align="center">Einen Benutzernamen brauchen wir schon ;-)<br><br><a href="./login.php">Zurück</a></p>';
     }elseif(!$_POST['password'] || $_POST['password'] == "") {
     echo '<form action="./login.php" method="post">';
     echo '<p align="center">Ein Passwort brauchen wir schon ;-)<br><br>';
     echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
     echo '<input type="submit" name="zurueck" value="Zurück">';
     echo '</p>';
     echo '</form>';
     }else{
     $password = md5($password);
     $query = @mysql_query("SELECT player_name, player_pw FROM player WHERE player_name = '".$_POST['username']."'") or die('Select ist fehlgeschlagen!');
     $result = @mysql_fetch_array($query) or die('<p align="center">Sorry, aber dieser Benutzername existiert nicht!<br><a href="./login.php">Zurück</a></p>');
     if($password != $result['player_pw']){
     echo '<form action="./login.php" method="post">';
     echo '<p align="center">Sorry, aber dieses Passwort ist falsch!<br><br>';
     echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
     echo '<input type="submit" name="zurueck" value="Zurück"></p>';
     echo '</form>';
     die;
     }else{
     $user = $result['player_name']; <-----------oder
     session_register('player_name'); <-----------hier
     echo '<p align="center">LogIn erfolgreich! :-)<br><br><a href="./sichere_seite.php">Weiter</a></p>';
     }
    }
    ?>
    </body>
    </html>
     
  2. 6. April 2006
    hiho

    Hallö,

    ich bin jetzt war net ganz so der totale Freak aber hier mal ein paar tipps oder Lösungsvorschläge:

    Ab Php 4.1 wird glaube ich eher $_SESSION anstatt session_register benutzt! Ne kleines beispiel:

    $_SESSION["user_nickname"] = $data["Nickname"];

    so hab ich es mal irgendwann in einem Login script von mir benutzt...
    Und soweit ich das sehe, wird player_name doch nie gefüllt mit irgendeinem Wert oder? Wenn doch dann habe ich das irgendwie übersehen

    Ansonsten kannste mir gerne mal das komplette ding zukommen lassen mit sql etc dann würde ich mir das mal in ner ruhigen Minuten angucken
     
  3. 8. April 2006
    danke. hab den fehler schon gefunden. player_name steht bei mir für nick. 10 hab ich dir schon gegeben.
    mfg toschk
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.