cookie erst beim 2. absenden erkannt

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

  • cookie erst beim 2. absenden erkannt

    Hallo Leute

    ich habe ein "kleines Problem":

    mit folgendem Code versuche ich herauszufinden, ob ein cookie gesetzt wurde oder nicht,
    wenn benutzername und passwort übereinstimmen dann soll ein cookie gesetzt werden.
    Wenn ich aber das Script ausführe, dann muss ich das Formular 2mal absenden, ehe der cookie erkannt wird...
    kann mir da jemand sagen wieso dies so ist?
    PHP-Code:
    <? 
    // Autologin vorerst auf false setzen
    $autoLogin = false;
    // Authentifizierung vorerst auf 0 setzen
    $auth_ok =  0;
    // Wenn Cookie gesetzt zum Verzeicnis auslesen
    $showDirAllowed = $_COOKIE['isLoggedIn'];
    // Wenn über das Formular gekommen
    $action = $HTTP_POST_VARS['action'];
    if ($action == 'login'){
        $user = $HTTP_POST_VARS['usr'];
        $pass = $HTTP_POST_VARS['psw'];
        // wenn Auslesen erlaubt
        //if($showDirAllowed!='true'){
            // Daten aus der Datenbank auslesen
            $result = mysql_query("SELECT * FROM login WHERE usr = '$user'");
            if ($num = mysql_num_rows($result)) { 
            // Ausgabe der Datensätze, wenn vorhanden 
            for($i=0;$i < $num; $i++) { 
                $pass_db  = mysql_result($result,$i,"psw");
                $dir = mysql_result($result,$i,"dir");
                $user_db = $user;
                }
            }
            if(isset($user) && isset($pass) && $user == $user_db && $pass == $pass_db){
            setcookie("isLoggedIn", "true");
            //getDir($dir)
            }
        //}    
    }else{
        // Wenn über Autologin
        $userAutoLogin = $_COOKIE["autoLogin"];
        // Wenn Cookie gesetzt wurde --> nicht leer
        if ($userAutoLogin != ""){
        // User aus Cookie Lesen
            $user = $userAutoLogin;
            if($showDirAllowed!='true'){        
                $result = mysql_query("SELECT * FROM login WHERE usr = '$user'");
                if ($num = mysql_num_rows($result)) { 
                    // Ausgabe der Datensätze, wenn vorhanden 
                    for($i=0;$i < $num; $i++) { 
                    // Verzeichnis ermitteln des AutoLogin Users
                        $dir = mysql_result($result,$i,"dir");
                    }
                }
            }
            setcookie("isLoggedIn", "true");
        }
    }



    $showDirAllowed = $_COOKIE['isLoggedIn'];
    // Erlaubnis alles zu zeigen-- für tiefere Verzeichnisse Wichtig
    if($showDirAllowed=="true"){
        echo "Verzeichnis wird ausgelesen";
        echo "<br>";
        echo "darf alles gezeigt werden: ".$showDirAllowed;
        echo "<br>";
        echo "Verzeichnis welches ausgelesen werden soll: ".$dir;
        getDir($dir);
    }

    else{
    echo "cookie gesetzt".$showDirAllowed;
    ?>

    <table border="0" width="95%">
      <tr>
        <td width="100%"> <p class="text" align="justify">
            <img border="0" src="images/space.gif" width="14" height="7"><br>
            <form name="form1" method="post" action="<? echo $PHP_SELF;?>" class="text">Log-In für unsere Kunden:<br>
            <img border="0" src="images/space.gif" width="14" height="7"><br>
            <br>
            <table width="75%" border="0" cellspacing="0" cellpadding="0">
              <tr> 
                <td class="text" >User-ID:</td>
                <td><input name="usr" type="text" id="usr" value="benutzername" class="form"></td>
              </tr>
              <tr> 
                <td class="text" >Passwort:</td>
                <td><input name="psw" type="password" id="psw" value="passwort" class="form"> 
                 <input name="id" type="hidden" id="id" value="<?php echo $id;?>">
                  <input name="action" type="hidden" id="action" value="login"></td>
              </tr>
              <tr>
                <td class="text" >&nbsp;</td>
                <td class="text"><input name="setCookie" type="checkbox" id="setCookie" value="true">
                  automatisch eingeloggt bleiben</td>
              </tr>
              <tr> 
                <td class="text" >&nbsp;</td>
                <td><input name="loginField" type="image" id="loginField" src="o.gif" alt="login" width="16" height="16" border="0"></td>
              </tr>
            </table>
          </form></td>
      </tr>
    </table>
    <?
    }
    /*
      echo $htmlFooter;
      exit();
    }*/
    // ende Login 
    ?>
    hoffe der Code erschlägt niemanden

    viele grüsse

    patrick

  • #2
    Re: cookie erst beim 2. absenden erkannt

    den ersten hinweis zu "häufigen problemen" auf http://www.php.net/manual/de/function.setcookie.php hast du bereits gelesen (und auch verstanden)?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      hmm,

      muss ich dies so verstehen, dass nachdem ein cookie gesetzt wurde, die seite neu geladen werden muss?

      Gruss

      patrick

      Kommentar


      • #4
        du solltest das exakt so verstehen, wie es da steht (und hier ja auch schon x-mal erwähnt wurde):
        Cookies werden nicht sichtbar, bevor nicht eine Seite geladen wird, in der das Cookie sichtbar sein soll.
        wenn du also das cookie per script abfragen willst, muss dein browser vorher in einem erneuten request dieses script anfordern.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          na gut, hätte ich so nicht herausgelesen aber vielen dank für die mühe.

          also noch nen tollen sonntag

          patrick

          Kommentar

          Lädt...
          X