Ergebnis 1 bis 9 von 9
  1. #1
    Anfänger
    Registriert seit
    20.03.2009
    Beiträge
    29

    Standard login mit cookies

    hallo,
    ich betreibe eine website mit login. wenn man sich einloggt wird ein cookie gesetzt damit man eingeloggt bleibt.

    folgendes problemchen:
    immer wenn man sich einloggt wird man ordentlich zum loginbereich weitergeleitet, ABER klickt man nun auf einen menepunkt in der navigation wird man wieder gekickt. loggt man sich dann nochmals ein funktioniert alles wieder wie es soll.
    loescht man cookies und schließt den browser wird man wieder beim ersten loginversuch gekickt wenn man auf irgendeinen menuepunkt klickt.

    woran liegt das und wie kann man das beheben?

    danke
    mfg pousty

  2. #2
    The Chosen One oder so Avatar von Apex
    Registriert seit
    16.09.2007
    Beiträge
    1.469

    Standard

    Also das Problem kenne ich nur, wenn immer unbeabsichtigte neue Sessions zugeteilt werden. Benutzt du Sessions? Vielleicht kannste uns ja mal deine login.php hier posten.
    "Die Menschheit wird eines Tages zu Grunde gehen. Vermutlich aus dem gleichen Grund wie die Dinosaurier - zu viel Panzer und zu wenig Hirn."


  3. #3
    monströs Avatar von Ken
    Registriert seit
    28.02.2010
    Beiträge
    138

    Standard

    Schreib doch einfach mal den Quellcode rein, sonst kann man Dir nur schwerlich helfen. Aber dass man nicht eingeloggt bleiben kann, wenn die Cookies gelöscht werden, ist Dir hoffentlich klar, oder?

    Zu beachten ist auch der Zeitstempel, der angibt, wie lange das Cookie gültig ist, da es sonst zu schnell verfallen könnte:
    PHP-Code:
    setcookie("bla""blub"99999999999); 

  4. #4
    ©(¶Óo¶) Avatar von kalachnikov
    Registriert seit
    12.07.2009
    Beiträge
    624

    Standard

    bzw. so
    PHP-Code:
    setcookie('name_des_cookies'$_POST['username'].'[:::]'.$_POST['password'], time() + 6000); 


    |____
    free-hack.com___|__\



  5. #5
    Anfänger
    Registriert seit
    20.03.2009
    Beiträge
    29

    Standard

    hier ist alles aus der login.php
    <?php
    if ( empty( $_COOKIE['testcookie'] ) )
    {
    $test = rand(2,999999999);
    $test1 = rand(2,999999999);
    $test2 = rand(2,999999999);
    $testcookie = $test+$test1+$test2;
    setcookie("testcookie", $testcookie, time()+60*60*24*30, "/", "$server_name", 0);
    }


    $werber = $_GET['ref'];
    if ($werber != ""){

    if(is_numeric($werber)){
    include("include/connect/connect.php");
    $wxdaten1=mysql_query("SELECT username FROM user_daten WHERE id='$werber'");
    $wxdaten=mysql_fetch_array($wxdaten1);
    if(mysql_num_rows($wxdaten1)==1){$werber = $wxdaten[0];}
    }

    if ( empty( $_COOKIE["geworbenvon"] ) ){
    setcookie("geworbenvon", $werber, time()+60*60*24*30, "/", "$server_name", 0);
    }else{
    $werbertest=$_COOKIE["geworbenvon"];
    if ($werbertest != $werber){
    setcookie("geworbenvon", $werber, time()+60*60*24*30, "/", "$server_name", 0);
    }}}

    $path = $_SERVER['DOCUMENT_ROOT'];
    include("$path/include/connect/connect.php");


    $loginuid=md5($username);
    $projektdatena = mysql_query("SELECT * FROM einstellungen");
    $projektdaten=mysql_fetch_array($projektdatena);


    if(isset($_POST["passwort"]) and isset($_POST["username"])) {
    $username=$_POST["username"];
    $passwort=$_POST["passwort"];
    $aktiviert="0";
    $gesperrt="1";



    $query="select * from user_daten where username='".$username."'";
    $result=mysql_query($query);
    $row=mysql_fetch_object($result);
    $data = mysql_fetch_array ($result);


    if(!$row) {
    header ("Location: /user/loginfail.php?fail=0");
    }
    else
    if (md5($passwort)!=$row->passwort or $username!=$row->username) {

    header ("Location: /user/loginfail.php?fail=1");


    }
    else
    if($aktiviert==$row->aktiviert){
    header ("Location: /user/loginfail.php?fail=2");
    }
    else
    if($gesperrt==$row->gesperrt){
    header ('Location: /user/loginfail.php?fail=3');
    setcookie("loginuid", $loginuid, time()-3600, "/", "$server_name", 0);

    }
    else
    {
    header ('Location: /user/loginbereich.php');
    $loginuid=md5($username);
    setcookie("loginuid", $loginuid, time()+3600, "/", "$server_name", 0);


    $letzteaktion = time();
    $ip = $_SERVER['REMOTE_ADDR'];

    if ( empty( $_COOKIE['testcookie'] ) )
    {
    header ('Location: /user/loginbereich.php');
    $test = rand(2,999999999);
    $test1 = rand(2,999999999);
    $test2 = rand(2,999999999);
    $testcookie += $test1+$test2;
    setcookie("testcookie", $testcookie, time()+60*60*24*30, "/", "$server_name", 0);
    mysql_query("update user_daten set loginuid='$loginuid', ip='$ip', testcookie='$testcookie', letzteaktion='$letzteaktion' where username='$username'");
    }else{
    $testcookie = $_COOKIE["testcookie"];
    mysql_query("update user_daten set loginuid='$loginuid', ip='$ip', testcookie='$testcookie', letzteaktion='$letzteaktion' where username='$username'");

    }


    $userdaten1=mysql_query("select * from user_daten WHERE loginuid='$loginuid'");
    $userdaten=mysql_fetch_array($userdaten1);

    $iptest = mysql_query("SELECT * FROM user_daten WHERE ip='$ip' && username!='$username'");
    if(mysql_num_rows($iptest) > 1) {
    $letzteaktion = time();
    $userid==$row->id;
    $grund = "Doppelte IP beim Login";
    mysql_query("insert into fakeliste (userid,username,ip,wann,grund) values ('$userdaten[id]','$userdaten[username]','$ip','$letzteaktion','$grund')");
    }


    $cookietest = mysql_query("SELECT * FROM user_daten WHERE testcookie='$testcookie' && username!='$username'");
    if(mysql_num_rows($cookietest) > 1) {
    $letzteaktion = time();
    $userid==$row->id;
    $grund = "Doppeltes Pr�fcookie beim Login";
    mysql_query("insert into fakeliste (userid,username,ip,wann,grund) values ('$userdaten[id]','$userdaten[username]','$ip','$letzteaktion','$grund')");
    }



    }}



    echo"


    <div id='loginlinks'></div>
    <div id='login'>
    <form method='POST' action='/user/login.php' style='float:left;'>


    <div style='margin-top:15px; margin-left:5px'>
    <b>Login:</b>
    <br>



    <div style=\"font-size:10px; margin-top:10px;\">
    <input type=\"text\" size=\"20\" maxlength=\"20\" id=\"mockuser\" name=\"username\" value=\"Benutzername\" onFocus=\"document.getElementById('mockuser').styl e.display='none'; document.getElementById('realuser').style.display= ''; document.getElementById('realuser').focus();\">

    <input type=\"text\" size=\"20\" name=\"username\" id=\"realuser\" class=\"real\" style=\"display: none;\" onBlur=\"if(this.value=='') {document.getElementById('mockuser').style.display =''; document.getElementById('realuser').style.display= 'none';}\">
    </div>



    <div style=\"font-size:10px; margin-top:5px;\">
    <input type=\"text\" size=\"20\" id=\"mockpass\" name=\"mock\" value=\"Passwort\" onFocus=\"document.getElementById('mockpass').styl e.display='none'; document.getElementById('realpass').style.display= ''; document.getElementById('realpass').focus();\">

    <input type=\"password\" size=\"20\" name=\"passwort\" id=\"realpass\" class=\"real\" style=\"display: none;\" onBlur=\"if(this.value=='') {document.getElementById('mockpass').style.display =''; document.getElementById('realpass').style.display= 'none';}\">
    </div>
    <div style='margin-top:7px;'>
    <input type='image' src='$projekturl/images/login_03.png' style='border:0 none;' name='submit'>
    </div>

    </div>
    </form>
    </div>
    ";
    ?>
    p.s. haette ich den code in php brackets gepostet haette er mir den gekuerzt..wollte mehrere posts vermeiden.

  6. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Ken (21.06.2010)

  7. #6

    Standard

    Mal abgesehen vom schlechten Code und den ganzen SQL Injections, sollte das Cookiehandling funktionieren. Vielleicht stimmt etwas mit deiner loginbereich.php nicht...
    _n0p3_

  8. #7
    The Chosen One oder so Avatar von Apex
    Registriert seit
    16.09.2007
    Beiträge
    1.469

    Standard

    Ja ist mir im nachhinein aufgefallen, dass der Code ziemlich schlecht gecodet ist. Schaut bissl zusammengewürfelt aus. Poste mal alle PHP DAteien die was mit dem Login zutun haben, bzw die included oder derartiges sind.
    "Die Menschheit wird eines Tages zu Grunde gehen. Vermutlich aus dem gleichen Grund wie die Dinosaurier - zu viel Panzer und zu wenig Hirn."


  9. #8
    Anfänger
    Registriert seit
    20.03.2009
    Beiträge
    29

    Standard

    Problem gelöst..ne variable bei setcookie war falsch definiert..danke für eure hilfe werde den code versuchen zu verbessern..aber wie kann ich denn vor injections schuetzen? meint ihr die tabellen namen anders benennen oder wie habt ihr das gesehn?
    Geändert von pousty (21.06.2010 um 17:43 Uhr)

  10. #9
    bytebreaker Avatar von err000r
    Registriert seit
    17.05.2010
    Beiträge
    134

    Standard

    wenn ich deinen beitrag so lesen, dann solltest du entweder dir j0hnys tut durchlesen (J0hn.X3r :: Tutorials)
    der rest schade sicher auch nicht.

    so ganz grob sage ich mal: filter alles, was vom user kommt.
    dazu hat fred ein mehr oder weniger gutes system auf seinem blog, das tut seinen zweck
    das pfeist dir hier rein -= fred777 =-

    viel spass

Ähnliche Themen

  1. Per PHP Cookies stehlen
    Von abcdefg im Forum PHP
    Antworten: 5
    Letzter Beitrag: 04.09.2007, 17:28
  2. [S] Tut für Cookies
    Von NortbergxD im Forum Trashbox
    Antworten: 0
    Letzter Beitrag: 25.06.2007, 10:29

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •