kostenloser Webspace werbefrei: lima-city


setcookie() funktioniert nicht

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    matthias-detsch

    Kostenloser Webspace von matthias-detsch

    matthias-detsch hat kostenlosen Webspace.

    Hallo,
    Ich möchte einen 14 Tage lang gültigen login machen, also auch dann, wenn keine Session mehr da ist.
    ich übergebe einer php datei ob das gewollt wurde oder nicht:
    <?php 
    session_start(); 
    ?> 
    
    <?php 
    $verbindung = mysql_connect("mysql.lima-city.de", "USER******" , "*********") 
    or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); 
    mysql_select_db("db_******_2") or die ("Datenbank konnte nicht ausgewählt werden");
    
    $username = $_POST["username"]; 
    $passwort = hash(sha512,$_POST["password"]);
    $login = $_POST["timelesslogin"]; 
    $password = $_POST["password"];
    $cookie_array = array($username, $username);
    $cookie = implode(";", $cookie_array);
    
    $abfrage = "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1"; 
    $ergebnis = mysql_query($abfrage); 
    $row = mysql_fetch_object($ergebnis); 
    
    if($row->passwort == $passwort) 
        { 
        $_SESSION["username"] = $username; 
        if($login = "true"){
           $funzt = setcookie("Loginabtschach",$cookie,time()+60*60*24*14,"/admin/",".abteilung-schach.tk");
           if($funzt = true){
             echo("jey");      //hier wird dann auch jey ausgegeben, aber weiter im text:
           }
        }
        echo '<html>
              <head>
              <meta http-equiv="refresh" content="0; 
             URL=http://abteilung-schach.tk/admin/administration.php">
              </head>
              </html>';
        exit();
        } 
    else 
        {
        echo 'Falsche Eingabe'; 
        echo '<html>
              <head>
              <meta http-equiv="refresh" content="0; 
             URL=http://abteilung-schach.tk/admin/login.html">
              </head>
              </html>';
        //header('Location: http://abteilung-schach.tk/admin/login.html); 
        } 
    
    ?>

    und lasse dann lasse ich mir die Variable $_COOKIE ausgeben (in der Hauptdatei)
    print_r($_COOKIE);

    aber da ist kein Cookie von mir dabei
    weiß jmd warum?

    Beitrag zuletzt geändert: 15.2.2014 18:27:30 von matthias-detsch
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Dein Script ist lausig. Aber das war ja nicht die Frage.

    print_r ($_COOKIE['Loginabtschach']);


    Wird dir dann auch das Cookie anzeigen. Und bei jedem Browser kann man sich auch die Cookies anzeigen lassen, die vorhanden sind.

    Kommen wir mal zu einigen Verbesserungen:

    in der SQL Abfrage (mal abgesehen, dass du die Usereingabe nicht validiert hast mit zum Beispiel mysql_real_escape_string) fragst du den Benutzernamen mit LIKE ab. Warum fragst du nicht den Benutzernamen direkt ab? Und warum fargst du nicht auch gleich nach dem Passwort in der SQL Abfrage?

    So musst du es nicht mit PHP vergleichen, sondern es macht dann ja gleich die Datenbank, erhälst du ein Ergebnis ist alles gut, erhälst du kein Ergebnis gibt es entweder den User nicht, oder das Passwort ist falsch.

    Bei if mit Variablen nur ein = zusetzen ist gefährlich, du setzt die Variable auf true. Bei vergleichen nimmt man doch zwei? Also ==

  4. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Das
    setcookie()
    kann ja gar nicht funktionieren, wenn du vorher Text (oder in deinem Fall Leerzeilen) ausgibst … spar dir das:
    ?> 
    
    <?php
    Laut Dokumentation:
    Like other headers, cookies must be sent before any output from your script (this is a protocol restriction).
  5. Autor dieses Themas

    matthias-detsch

    Kostenloser Webspace von matthias-detsch

    matthias-detsch hat kostenlosen Webspace.

    Nun... Immerhin funktioniert jetzt das Setzen des Cookies, auch wenn aus irgendeinem Grund jetzt ständig weiterleitungen zwischen hauptseite und login sin, deswegen habe ich den login damit erstmal entnommen.
    Danke für eure beiden Antworten
  6. b**********m

    Du darfst nicht schreiben

    if($login = "true");


    denn damit belegst du es, sondern

    if($login == "true");


    so fragst du auf gleichheit.

    anderer punkt: deine variable $login wird immer true sein, wenn ein Passwort übergeben wurde und fragt nicht ab ob es das richtige ist, da es weiter oben mit einem übergebenen $_POST[]; belegt wird.

    Beitrag zuletzt geändert: 16.6.2014 22:25:48 von buergerforum
  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!