Session- Time.

crazy_chicken

Erfahrenes Mitglied
Hallo Zusammen, hab wieder ein Problem mit Session time.
Ich will es so machen, dass z.B. nach 20sek inaktiver zeit der User sich noch mal anmelden muss. Also die zeit abläuft. Ich habe es mir folgedermassn vorgestellt:

Index.php(Auschnitt)
<a href="index2.php">weiter</a>
PHP:
if(isset($_POST['einloggen'])){
  $username=$_POST["user_name"];
  $passwort=md5($_POST["user_passwort"]);
  $result = mysql_query("SELECT * FROM `Users` WHERE Email='$username' ") or die(mysql_error());
  $row = mysql_fetch_array($result);
  $usernamedb=$row['Email'];
  $userpasswortdb=$row['Passwort'];
  if($username==$usernamedb && $passwort==$userpasswortdb){
      mysql_query("UPDATE `usr_web301`.`Users` SET `Status` = '$timestamp' WHERE Email ='$username' ;") or die(mysql_error()); 
      echo "eingellogt: ".$username;
      session_start();
      $_SESSION['foo'] = $username;
      $timestamp=time();
      mysql_query("UPDATE `usr_web301`.`Users` SET `Status` = '$timestamp' WHERE Email ='$username' ;") or die(mysql_error()); 
     

   }

   }
  else{
           

     echo "Falsche Daten";
  }

PHP:
................
if($aktuellTime-10<$logInTime){
echo "Zeit ok!<br> die aktuelle zeit: ".$aktuellTime."<br>log in time: ".$logInTime;

}
else{
echo "Name-Destroyed: Zeit ABGELAUFEN!";
session_destroy();
}

Es funktioniert. Aber wenn die Zeit abläuft, und ich eine Seite zurück auf index.php gege (über Browser), dann wird die UserTime auf aktuell gesetzt, und er ist dann wieder eingeloggt.
Wie kann man es vermeiden? oder ist das ein ganz falscher ansatz?

Daanke im Voraus.
 
Zuletzt bearbeitet:
Beim Einloggen müsstest du einfach prüfen, ob der User schon eingeloggt ist, wenn ja, führst du halt keine weiteren Aktionen aus ;)
 
Hai, danke erst mal, aber mein Problem:
User loggt sich ein und ist somit eingeloggt. geht auf seiten idex 2php. bleibt da über 20 sec inaktiv.
wenn er die seite aktualisiert, dann steht :"zeit abgelafen". ABER
dann kann er mit dem Browser auf zurück gehen---->index.php und seine Daten werden auf aktuelle zeit gesetzt. ---> und er ist wieder drin d.h. eingeloggt.
ich hoffe die problemstelllung ist klar.=)
 
Wir nehmen an ich logge mich ein. in der datenbank habe ich noch eine spalte Status(On/Off). mein status wird auf on gesetzt weil davor auf OFF war. dann besuche ich andere seiten. lasse seite 1 stunde inaktiv. in einer stunde will ich weiter und kommt einer fehlermeldung ausgeloggt und Status wird auf off gesetzt.
Problem:
Mit dem Browser gehe ich solange zurück, bis ich bei index.php lande, und die aktion wird noch malausgeführt, username etc. sind ja noch gespeichert. und da status off ist, wird er auf ON gesesetzt...

Meinst du das so?
 
Nein,

ich meine das so:
PHP:
if(isset($_POST['einloggen'])){
  session_start();
  if( isset($_SESSION['foo']) ){
    die('Fehler: Du bist bereits eingeloggt.');
  }
  $username=$_POST["user_name"];
  $passwort=md5($_POST["user_passwort"]);
  $result = mysql_query("SELECT * FROM `Users` WHERE Email='$username' ") or die(mysql_error());
  $row = mysql_fetch_array($result);
  $usernamedb=$row['Email'];
  $userpasswortdb=$row['Passwort'];
  if($username==$usernamedb && $passwort==$userpasswortdb){
      mysql_query("UPDATE `usr_web301`.`Users` SET `Status` = '$timestamp' WHERE Email ='$username' ;") or die(mysql_error()); 
      echo "eingellogt: ".$username;
      $_SESSION['foo'] = $username;
      $timestamp=time();
      mysql_query("UPDATE `usr_web301`.`Users` SET `Status` = '$timestamp' WHERE Email ='$username' ;") or die(mysql_error()); 
     

   }

   }
  else{
           

     echo "Falsche Daten";
  }
 
diese bedingung stimmt ja noch, deswegen wird die Zeit jedes mal, wenn man mit dem Browser zurück auf diese Seite geht aktuelisiert. :
PHP:
if($username==$usernamedb && $passwort==$userpasswortdb)


Könnte man irgenwie folgene zwei variablen nach einem aufruf unwiederruflich zerstören(nach einem script-aufruf)****?
PHP:
$username=$_POST["user_name"];
  $passwort=md5($_POST["user_passwort"]);
 
Zuletzt bearbeitet:
Zurück