kostenloser Webspace werbefrei: lima-city


autologin per cookie

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    till133

    till133 hat kostenlosen Webspace.

    ich arbeite atm an einem portal. der login sowie einige weitere skripte funktionieren bereits. ich habe nun versucht eine autologin funktion per cookie einzubauen, nur funktioniert diese noch nicht so recht. der cookie wird beim ie garnicht erst gesetzt und mit firefox funktioniert es auch nicht.

    hier die login.php:

    if(!isset($_COOKIE['wiwpi'], $_SESSION['id']) AND isset($_GET['action']) AND $_GET['action']=="login") {
    //kein cookie, daten ?ber loginformular ?bergeben
    if($userid=login_check($_POST['nickname'], $_POST['pass'])) {
    $_SESSION['id']=$userid;
    $_SESSION['ip']=$_SERVER['REMOTE_ADDR'];
    if(isset($_POST['autologin'])) {
    $cookiedaten=array($_SESSION['id'], md5($_POST['pass']));
    $cookiedaten=serialize($cookiedaten);
    setcookie('wiwpi', $cookiedaten, time()+2592000);
    }
    $sql="UPDATE user
    SET
    lastlogin=NOW()
    WHERE
    id='".$_SESSION['id']."';";
    mysql_query($sql) or die(mysql_error());
    } else {
    $smarty->assign('login_false', true);
    }
    } elseif(isset($_COOKIE['wiwpi']) AND $userid=login_check()) {
    //cookie gesetzt, ?berpr?fen ob session existiert
    if(!isset($_SESSION['id'])) {
    session_start();
    $_SESSION['id']=$userid;
    $_SESSION['ip']=$_SERVER['REMOTE_ADDR'];
    $sql="UPDATE user
    SET
    lastlogin=NOW()
    WHERE
    id='".$_SESSION['id']."';";
    mysql_query($sql) or die(mysql_error());
    }
    }

    und hier die funktion login_check:

    function login_check($nickname = NULL, $pass = NULL) {
    if(isset($_COOKIE['wiwpi'])) {
    $cookie_inhalt=stripslashes($_COOKIE['wiwpi']);
    $cookie_inhalt=unserialize($cookie_inhalt);
    $cookie_userid=$cookie_inhalt[0];
    $cookie_pass=$cookie_inhalt[1];
    $sql="SELECT
    COUNT(*) as anzahl
    FROM user
    WHERE
    id='".$cookie_userid."' AND
    password='".$cookie_pass."' AND
    activ='1';";
    $result=mysql_query($sql) or die(mysql_error());
    $row['anzahl']=mysql_fetch_assoc($result);
    return $cookie_userid;
    } else {
    $sql="SELECT
    COUNT(*) as anzahl
    FROM user
    WHERE
    nick='".$nickname."' AND
    password='".md5($pass)."' AND
    activ='1';";
    $result=mysql_query($sql) or die(mysql_error());
    $row=mysql_fetch_assoc($result);
    if($row['anzahl']) {
    $sql="SELECT
    id
    FROM user
    WHERE
    nick='".$nickname."';";
    $result=mysql_query($sql) or die(mysql_error());
    $userid=mysql_fetch_assoc($result);
    return $userid['id'];
    } else {
    return false;
    }
    }
    }
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. b*****n

    Hi

    Dir ist klar, dass die funktion "setcookie()" gaaaaaaaaanz nach oben muss? Wenn ja, versuch mal den Cacke von deinem Browser zu l?schen, oder guck nach, ob dein Browser Cookies zul?sst...

    b2k-fan

    //edit by b2k-fan

    Ich meinte nat?rlich "Cache" nickt "Cacke"... :lol:

    Beitrag ge?ndert am 21.12 14:26 von b2k-fan

    Hab nochmal geeditet!

    Beitrag ge?ndert am 21.12 14:39 von b2k-fan
  4. Autor dieses Themas

    till133

    till133 hat kostenlosen Webspace.

    die datei login.php ist mit ob_push "ausgeklammert".
    an meinen cookieeinstellung liegt es nicht, da alle nutzer des portals das problem haben. au?erdem funktioniert der cookie von lima city beispielsweise einwandfrei.
  5. if(!isset($_COOKIE['wiwpi'], $_SESSION['id']) AND ..........

    ich hoffe schon sehr, dass du die Session gestartet hast, bevor du ?berpr?fst, ob die Variable gesetzt ist

    MfG Asmodeus
  6. Autor dieses Themas

    till133

    till133 hat kostenlosen Webspace.

    ja, die session wird vorher gestartet. der normale login funktioniert ja auch schon, nur der autologin eben noch nicht
  7. Versuch mal, den Cookie einfach so zu setzen und dann auszugeben
    setcookie('test', 'TEST-USER', time()+3600);
    print_r($_COOKIE);

    und schau dann ob dieser Cookie gesetzt ist...

    ^^^^
    ...elseif(isset($_COOKIE['wiwpi']) AND $userid=login_check()) {...
    richtig w?re wohl eher
    ...elseif(isset($_COOKIE['wiwpi']) AND $userid==login_check()) {...
    wobei das der falsche fehler sein d?rfte

    MfG Asmodeus

    Beitrag ge?ndert am 21.12 16:55 von asmodeus
  8. t*****o

    ne daran k?nnt liegen obei das alles zusammen in ne klammer muss und glaub ich nich and sonder && oder so, desweiteren muss das coocie-setzen die allererste ausgabe des scripts sein!
  9. Autor dieses Themas

    till133

    till133 hat kostenlosen Webspace.

    elseif(isset($_COOKIE['wiwpi']) AND $userid=login_check())
    ist korrekt, da es sich hierbei um eine zuweisung handelt, und nicht um einen vergleich.

    @vorposter
    wie schon gesagt, mit der funktion ob_push wird die seite gecached und erst der header erst gesendet wenn im code das "ende" der funktion erreicht ist. dies erm?glich cookies auch "weiter unten" im code zu setzten
  10. 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!