kostenloser Webspace werbefrei: lima-city


dauerhafte Login

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    tshaika

    tshaika hat kostenlosen Webspace.

    kann mir jemand helfen

    und zwar wenn ich eingeloggt bin und dann auf andere seite gehe und dann zuruck zu index.php es loggt sich immer aus
    ich brauche so login so lange bis user ausgeloggt hatt oder die seite verlassen hat ich hab Autologout.php

    aber es funktoniert egend wie nicht richtig:confused:

    hier sind die PHPs:-D

    index.php
    http://tshaika.lima-city.de/index.txt

    autologout.php

    <?php
        error_reporting(E_ALL);
    	include("mysql.php");
    
        // Prüfen, ob ein Autologin des Users stattfinden muss
        if(isset($_COOKIE['Autologin']) AND !isset($_SESSION['UserID'])){
            $sql = "SELECT
                            ID
                    FROM
                            User
                    WHERE
                            Autologin = '".mysql_real_escape_string($_COOKIE['Autologin'])."'
                   ";
            $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
            $row = mysql_fetch_assoc($result);
            if(mysql_num_rows($result) == 1)
                doLogin($row['ID'], '1');
        }
    
        // Online Status der User aktualisieren
        if(isset($_SESSION['UserID'])){
            $sql = "UPDATE
                            User
                    SET
                            Letzte_Aktion = '".time()."'
                    WHERE
                            ID = '".$_SESSION['UserID']."'
                   ";
            mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
        }
    
        // User ohne Autologin ausloggen
        $sql = "UPDATE
                        User
                SET
                        SessionID = NULL,
                        Autologin = NULL,
                        IP = NULL
                WHERE
                        '".(time()-60*20)."' > Letzte_Aktion AND
                        Autologin IS NULL
               ";
        mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
    
        // Kontrollieren, ob ein automatisch ausgeloggter User noch eine gültige Session besitzt
        if(isset($_SESSION['UserID'])){
            $sql = "SELECT
                            SessionID
                    FROM
                            User
                    WHERE
                            ID = '".$_SESSION['UserID']."'
                   ";
            $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
            $row = mysql_fetch_assoc($result);
            if(!$row['SessionID']){
                $_SESSION = array();
                session_destroy();
            }
        }
    ?>


    DANKE VORAUS

    Beitrag zuletzt geändert: 12.3.2013 12:24:12 von tshaika
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Am einfachsten und unsichersten legst du UserID und das Passwort im Keks ab.

    Edit:
    Der gute Mann meint wohl http://php.net/manual/en/features.cookies.php

    Beitrag zuletzt geändert: 12.3.2013 13:08:13 von adrians
  4. h**s

    hi tshaika,

    wo ist das
    session_start()
    geblieben ?
  5. Autor dieses Themas

    tshaika

    tshaika hat kostenlosen Webspace.

    hcms schrieb:
    hi tshaika,

    wo ist das
    session_start()
    geblieben ?

    in seitenkopf.php ganz oben bei verbindungen!!
  6. session_start();
    ganz oben und wenn login erfolgreich machst du so
    $_SESSION['login'] == TRUE;


    und in den dateien der logincheck:
    if($_SESSION['login'] == TRUE)
    {
    echo 'eingeloggt';
    } else {
    echo 'ausgeloogt';
    }
  7. Autor dieses Themas

    tshaika

    tshaika hat kostenlosen Webspace.

    infinitywar schrieb:
    session_start();
    ganz oben und wenn login erfolgreich machst du so
    $_SESSION['login'] == TRUE;


    und in den dateien der logincheck:
    if($_SESSION['login'] == TRUE)
    {
    echo 'eingeloggt';
    } else {
    echo 'ausgeloogt';
    }


    Meinst du so

    <?php
    include ("seitenkopf.php");
    	session_start();
     
        if(isset($_POST['submit']) AND $_POST['submit']=='Einloggen'){
            // Falls der Nickname und das Passwort übereinstimmen..
            $sql = "SELECT
                            ID
                    FROM
                            User
                    WHERE
                            Nickname = '".mysql_real_escape_string(trim($_POST['Nickname']))."' AND
                            Passwort = '".md5(trim($_POST['Passwort']))."'
                   ";
            $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
            // wird die ID des Users geholt und der User damit eingeloggt
            $row = mysql_fetch_assoc($result);
            // Prüft, ob wirklich genau ein Datensatz gefunden wurde
            if (mysql_num_rows($result)==1){
          .......................und so Weiter.........................
    
     }
            else{
    		?>
    				<p>
                       Sie konnten nicht eingeloggt werden.<br>
                       Nickname oder Passwort fehlerhaft.<br>
                       Zurück zum <a href=<?php echo $_SERVER['PHP_SELF'];?>">Login-Formular</a>
    				</p>
    <?php
            }
        }
        else{
    ?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
        <table>
            <tr>
                <td><p>Nickname: </p></td>
                 <td><input type="text" name="Nickname" maxlength="32"></td>
            </tr>
            <tr>
                <td><p>Passwort: </p></td>
                <td><input type="password" name="Passwort"></td>
                </tr>
            <tr>
                <td><p>eingeloggt bleiben: </p></td>
                <td><input type="checkbox" name="Autologin" value="1"></td>
            </tr>
            <tr>
                <td><a href=" verifiziere.php">Passwort vergessen</a></td>
                <td><input type="submit" name="submit" value="Einloggen"></td>
            </tr>
        </table>
    </form>
    <?php
        }
    include("seitenfuss.php");
    ?>
    
    
                 doLogin($row['ID'], isset($_POST['Autologin']));
    			 $_SESSION['login'] == TRUE;
    			 if($_SESSION['login'] == TRUE)
    			{
    			echo 'eingeloggt';
    		} else {
    		echo 'ausgeloogt';
    		}
  8. Das $_SESSION['login'] == TRUE; musst du dorthin hauen wo er den Login checkt und es erfolgreich ist ansonsten OK ;)
  9. Eine session muss/sollte vor dem Erzeugen einer Ausgabe erfolgen d.h. eigentlich immer direkt nach <?php:

    <?php
    session_start();
    
    include 'seitenkopf.php';
    
    // ....
  10. Vielleicht reicht die Lifetime nicht aus. Versuch die mal wie in der PHP Dokumentation beschrieben zu setzten.
  11. Auf lima-city musst du bei cookies umbedingt deine url angeben sonst klappt es nicht.

    Ein Tipp: MYSQL-Injections sind sehr effektiv und können viel kaputt machen. Benutze vor der abfrage mysql_real_escape().
  12. tee

    Moderator Kostenloser Webspace von tee

    tee hat kostenlosen Webspace.

    nilsmargotti schrieb:
    Ein Tipp: MYSQL-Injections sind sehr effektiv und können viel kaputt machen. Benutze vor der abfrage mysql_real_escape().
    mysql_real_escape_string() dat is.

    Man beachte des weiteren den roten Vermerk was die Zukunft der Funktion angeht, sowie der Verweis auf die empfohlene Alternative für MySQLi

    Edit:

    Für die Benutzer, die Cookies deaktiviert haben, solltest du die Session_ID jeweils mit einem hidden field übergeben, andernfalls werden diese dauerhaft nur das Loginfenster betrachten können! :thumb:

    MfG T

    Beitrag zuletzt geändert: 15.3.2013 16:47:05 von tee
  13. h**s

    tee schrieb:
    Für die Benutzer, die Cookies deaktiviert haben, solltest du die Session_ID jeweils mit einem hidden field übergeben, andernfalls werden diese dauerhaft nur das Loginfenster betrachten können! :thumb:


    naja eigentlich sollte der server die sessionid automatisch als transparenten get-link an jede relative url hängen wenn cookies nicht zur verfügung stehen...
  14. hcms schrieb:
    tee schrieb:
    Für die Benutzer, die Cookies deaktiviert haben, solltest du die Session_ID jeweils mit einem hidden field übergeben, andernfalls werden diese dauerhaft nur das Loginfenster betrachten können! :thumb:


    naja eigentlich sollte der server die sessionid automatisch als transparenten get-link an jede relative url hängen wenn cookies nicht zur verfügung stehen...


    Eben nicht, sonst wär's automatisch aktiviert. Siehe auch session.use_trans_sid

    Sollte der Server das also deaktiviert haben, müsste man an dieser Stelle scriptseitig nachhelfen. Wobei die Leute gern URLs mitsamt SID versenden und sich am Ende wundern, dass da irgendwer in ihrem Account rumpfuscht.

    Beitrag zuletzt geändert: 15.3.2013 17:13:29 von fabo
  15. tee

    Moderator Kostenloser Webspace von tee

    tee hat kostenlosen Webspace.

    hcms schrieb:
    naja eigentlich sollte der server die sessionid automatisch als transparenten get-link an jede relative url hängen wenn cookies nicht zur verfügung stehen...
    Du meinst, wenn in der php.ini session.use_trans_sid aktiviert ist, was nicht immer zwingend der Fall sein muss. Es ist jedem selbst überlassen, ob er sich darauf verlassen möchte.

    Des weiteren übergebe ich persönlich die ID einer Session lieber via Post als via Get, aber war schlussendlich nur ein gut gemeinter Ratschlag meinerseits.

    Edit:
    Da war einer schneller, doofe Handytastatur :-)

    MfG T

    Beitrag zuletzt geändert: 15.3.2013 17:27:03 von tee
  16. Autor dieses Themas

    tshaika

    tshaika hat kostenlosen Webspace.

    Sorry das so lange gedauert

    ich habe paar tips von gefolft aber funktioniert immer noch nicht richtig es loggt sich bei nexte click aus
    kann mir noch mall helfen

    hier noch mall alle PHPs auf einen Blick

    http://tshaika.lima-city.de/MeinDATA.txt
    Danke
  17. tshaika schrieb:
    Sorry das so lange gedauert

    ich habe paar tips von gefolft aber funktioniert immer noch nicht richtig es loggt sich bei nexte click aus
    kann mir noch mall helfen

    hier noch mall alle PHPs auf einen Blick

    http://tshaika.lima-city.de/MeinDATA.txt
    Danke


    In Wirklichkeit bist du eingeloggt, jedoch wird das nicht gezeigt.

    Und so eine Abfrage musst du auf jeder deiner Seiten machen.
    Das heißt du kannst diese Datei nicht für www.meineseite.de/index.php?s=seite1 nehmen und bei www.meineseite.de/index.php?s=seite2 nicht mehr.

    if($_SESSION['login'] == TRUE)
    {
    	Hier dein HTML Code o.ä. für eingeloggt.	
    } else {
            Hier dein HTML Code o.ä. für ausgeloggt.	
    }




    Und lass das aus deinem Code mal raus:
    <?php
    session_unset();
      $_SESSION=array();
    ?>




    Fürs ausloggen nimmst du diesen Befehl.
    session_destroy();
    header(Location: index.php); // Kannst du auch weglassen und einen Meta Code hinschreiben.
  18. Autor dieses Themas

    tshaika

    tshaika hat kostenlosen Webspace.

    mir ist noch was aufgefahlen

    wenn ich einlogge dann kommt index.php und nicht de/index.php?s=

    ich dennke dass ist das problemm
  19. tshaika schrieb:
    mir ist noch was aufgefahlen

    wenn ich einlogge dann kommt index.php und nicht de/index.php?s=

    ich dennke dass ist das problemm


    Dann mach es so.
    <meta http-equiv="refresh" content="0; URL=index.php?s=home">
  20. tshaika schrieb:
    mir ist noch was aufgefahlen

    wenn ich einlogge dann kommt index.php und nicht de/index.php?s=

    ich dennke dass ist das problemm


    Falls du gerade header() zum weiterleiten benutzt, steht in header() wohin er weiterleiten soll. Dann einfach index.php durch de/index.php?s= ersetzen.
  21. Autor dieses Themas

    tshaika

    tshaika hat kostenlosen Webspace.

    midwar schrieb:
    tshaika schrieb:
    mir ist noch was aufgefahlen

    wenn ich einlogge dann kommt index.php und nicht de/index.php?s=

    ich dennke dass ist das problemm


    Falls du gerade header() zum weiterleiten benutzt, steht in header() wohin er weiterleiten soll. Dann einfach index.php durch de/index.php?s= ersetzen.


    nein ich habe nicht gefunden

    das lauft Über SESSION

    kannst bitte bitte mir helfen?

    die php findes du hier

    http://tshaika.lima-city.de/MeinDATA.txt


    Beitrag zuletzt geändert: 22.3.2013 20:23:09 von tshaika
  22. 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!