Problem mit Login und Sessions

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit Login und Sessions

    Hi,
    ich habe ein Problem mit einem Login Script:
    hier erstmal die dateien (2 stück):
    (benutze php 5)

    login.php:
    PHP-Code:
    <?php session_start();
    require(
    'system/connect.forum.inc.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>
            <td colspan="2" width="170" bgcolor="#e7e7e7" align="center">
    <a href="forum/register.php">
    Noch nicht registriert?</a></td>
            
        </tr>
        <tr>
          <td bgcolor="#e7e7e7" align="center" colspan="2">
          <input type="submit" name="submit" value="Login" class="button">
          </td>
        </tr>
      </table>
      </form>
      
    <?php
    } elseif(!$_POST['username'] || $_POST['username'] == "") {
        echo 
    '<p align="center">Einen Benutzernamen brauchen wir schon ;-)<br><br>
    <a href="index.php?site=login">Zurück</a></p>'
    ;
      }elseif(!
    $_POST['password'] || $_POST['password'] == ""
    {
        echo 
    '<form action="index.php?site=login" 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{
          
    $username1 $_POST['username'];
        
    $username mysql_real_escape_string($username1);
        
    $password1 $_POST['password'];
        
    $password mysql_real_escape_string($password1);

        
        
    $query mysql_query("SELECT * FROM bb1_users WHERE username = '".$username."' AND
     password = '" 
    .$password"'")
     or die(
    "Select ist fehlgeschlagen!");
        
    $result mysql_fetch_array($query) or die('<p align="center">
    Bitte überprüfe deine Eingaben nochmal!<br>Benutzername oder
     Passwort falsch!<br><a href="index.php?site=login">Zurück</a></p>'
    );

          
    $_SESSION['timeout'] = time()+3600;
          
    $_SESSION['username'] = $result['username'];
          
    $_SESSION['user_ID'] = $result['user_ID'];
          
    session_register('username');
          echo 
    '<p align="center">
    Login erfolgreich!<br><br><a href="news_write.php?"' 
    SID '>Weiter</a></p>';

      }
      
    ?>
    und hier die datei auf die nach login verwiesen wird:
    PHP-Code:
    <?php 
    session_start
    ();

    if(!isset(
    $_SESSION['username'])) {

        echo 
    'Authentifizierung fehlgeschlagen.';
        die;
    }

    //GESCHÜTZTER INHALT
    //Wenn noch nicht auf "send" geklickt wurde dann wird Formular zum Erstellen gezeigt
    if(!isset($_POST['send'])){
    ?>

    <fieldset>
    <form action=index.php?site=news_write method="post">
    <table cellpadding="0" cellspacing="5" border="0">
        <tr>
            <td>
                NEWSTITEL</td><td><input name="news_header" maxlength="120" size="50"/></td>
            <td><input type="hidden" name="action" value="insert" /></td>
            <td><input type="hidden" name="news_datetime" value="
    <?php echo date("Y-m-d H:i:s"); ?>"
     size="19" maxlength="19" /></td>
        </tr>        
        <tr>
            
    <td>NEWSTEXT</td><td><textarea cols="60" rows="14" name="news_main"></textarea></td>
        </tr>
        <tr>
            <td>RECHENAUFGABE</td><td><input name="rechnen" maxlength="10" size="10" /></td>
        </tr>
    </table>
    <input type="submit" name="send" value="Eintragen!" />
    </form>
    </fieldset>
    <?php
    }
    else{
    //News eintragen, mit Freischalten=false
    include("system/connect.inc.php");

    if(isset(
    $_REQUEST['action'])) $action=$_REQUEST['action'];

    if(
    $action=="insert"){
    //Übergabeparameter auslesen
        
    $news_main=$_POST['news_main'];
        
    $news_header=$_POST['news_header'];
        
    $news_datetime=$_POST['news_datetime'];
        
    $rechnen=$_POST['rechnen'];
        
        
    //Freischalten auf false setzen
        
    $freigeschaltet=0;
        
        
    //Zeilenumbrüche im Haupttext in HTML-Zeilenumbrüche konvertieren
        
    $news_main=nl2br($news_main);
        
    $news_main=ereg_replace("\n"""$news_main);
        
        
    //Hier fehlt noch die Überpfrüfung druch Mysql-Abfrage der Rechenaufgabe
        
    if($news_main!=|| $news_header!=|| $rechnen==mysql_fetch_array('rechnen')){
    $news_SQL_insert=sprintf("INSERT INTO news (news_header,news_datetime,news_main
    ,freigeschaltet) 
    VALUES ('
    $news_header','$news_datetime','$news_main','$freigeschaltet')"
    ,mysql_real_escape_string($news_header),
    mysql_real_escape_string($news_main));

        
    $bool=mysql_query($news_SQL_insert);
        if(
    $bool==1) echo "Vielen Dank für deinen Eintrag.
     Wir werden ihn schnellstmöglich überprüfen, und dann freischalten!
    <br><a href='javascript:history.back(-1)'>zurück</a>"
    ;
        if(
    $bool<>1) echo "Beim Eintragen der News trat leider ein Fehler auf. 
    News konnten nicht eingetragen werden...
    <br> alle Felder ausgefüllt?"
    ;
        }
        }
        

    }



    ?>
    Mein Problem:
    es wird nach dem login immer Authentifizierung fehlgeschlagen. ausgegeben

    hoffe ihr könnt mir helfen!

    mfg
    Zuletzt geändert von Tarik; 29.08.2007, 18:37.

  • #2
    bemühe dich um das umbrechen des codes. steht in den posting regeln. dann schaue ich mir das mal an.
    Webdesign und Webentwicklung - Plunix.de

    Kommentar


    • #3
      sorry, habs jetzt bearbeitet!

      Kommentar


      • #4
        PHP-Code:
        if (! isset($_SESSION['username'])) 
        anstatt
        PHP-Code:
        if (! session_is_registered('username')) 
        .

        Siehe Hinweis im Manual.
        ich glaube

        Kommentar


        • #5
          hab das schonmal editiert, aber es kommt dennoch immer "Authentifizierung fehlgeschlagen"..
          mfg

          Kommentar


          • #6
            entsprechende session_register() - Aufrufe natürlich auch anpassen. Das ist unnötig, wenn du es vorher normal ins Session-Array geschrieben hast.
            ich glaube

            Kommentar


            • #7
              hab ich gemacht, aber leider will es immernoch nicht funktionieren..

              ps: es wird übrigens auch keine session id über GET im link weitergegeben an news_write.php...

              mfg

              Kommentar


              • #8
                Stell dein Error_reporting auf E_ALL und mach an verschiedenen Stellen Testausgaben (var_dump($_SESSION)). Das Weitergeben per GET ist i.d.R. nicht nötig.
                ich glaube

                Kommentar


                • #9
                  error reporting habe ich auf E_All gestellt und apache neugestartet.
                  var_dump($_SESSION)); hab ich am ende von login.php und in der aller ersten if-schleife von news_write.php eingebaut:
                  login.php:
                  array(3) { ["timeout"]=> int(1188410116) ["username"]=> string(2) "Me" ["user_ID"]=> NULL }

                  finde ich ein bisschen komisch, weil wenn ich die datenbank im phpmyadmin aufrufe, steht unter user_ID "3" eingetragen.


                  news_write.php:
                  array(0) { }


                  mfg..

                  Kommentar


                  • #10
                    Aber Cookies hast du eingeschaltet?
                    ich glaube

                    Kommentar


                    • #11
                      hhm.. ich habe session.use_only_cookies = 1, was müsste denn beim rest hin?
                      ich hab jedenfalls folgendes:
                      ; Initialize session on request startup.
                      session.auto_start = 0

                      ; Lifetime in seconds of cookie or, if 0, until browser is restarted.
                      session.cookie_lifetime = 0

                      ; The path for which the cookie is valid.
                      session.cookie_path = /

                      ; The domain for which the cookie is valid.
                      session.cookie_domain =localhost

                      mfg

                      Kommentar


                      • #12
                        Er meinte glaube ich eher, ob du die akzeptanz von Cookies in deinem Browser eingeschaltet hast (weil die SessionID sonst nicht abgelegt werden kann)
                        Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

                        Kommentar


                        • #13
                          ja im browser (firefox 2) sollten cookies eingeschaltet sein! :-/

                          Kommentar


                          • #14
                            Sollten is natürlich ne tolle Aussage. Dann guck doch mal ob du ein cookie von der entsprechenden Domain vorliegen hast.
                            Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

                            Kommentar


                            • #15
                              ja, phpmyadmin hat einige cookies hinterlegt, aber sonst nichts von localhost!

                              mfg

                              Kommentar

                              Lädt...
                              X