php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.06.2007, 10:39  
Erfahrener Benutzer
 
Registriert seit: 30.05.2005
Beiträge: 222
PHP-Kenntnisse:
Fortgeschritten
Cyberbob_at_tot
Cyberbob_at_tot eine Nachricht über ICQ schicken
Standard Problem bei session Lifetime

Hallo zusammen,

habe ein Problem, was ich noch nicht unter Kontrolle bekomme, daher frage ich euch, ob ihr mir da unterstützung geben könnt!

Es geht um ein PHP MySQL Projekt, der benutzer meldet sich an und wärend der gesamten arbeit wird die Session mitgeführt. Habe die Lifetime auf 9 Stunden gesetzt, wie man hier sieht...


Code:
session
Session Support 	enabled
Registered save handlers 	files user

Directive	Local Value	Master Value
session.auto_start	Off	Off
session.bug_compat_42	On	On
session.bug_compat_warn	On	On
session.cache_expire	600	600
session.cache_limiter	nocache	nocache
session.cookie_domain	no value	no value
session.cookie_lifetime	32400	32400
session.cookie_path	/	/
session.cookie_secure	Off	Off
session.entropy_file	no value	no value
session.entropy_length	0	0
session.gc_divisor	100	100
session.gc_maxlifetime	32400	32400
session.gc_probability	1	1
session.name	PHPSESSID	PHPSESSID
session.referer_check	no value	no value
session.save_handler	files	files
session.save_path	/var/lib/php	/var/lib/php
session.serialize_handler	php	php
session.use_cookies	On	On
session.use_only_cookies	Off	Off
session.use_trans_sid	Off	Off
Trotzdem passiert es, das der Benutzer sporadisch raus geworfen wird. Nämlich durch dieses Skript...

Code:
$query	=	"SELECT pwd from user WHERE user='".$_SESSION['s_user']."'";
	    $sql_query		=	mysql_query($query);
		      if (mysql_errno()) die ("MySQL-Error: ".mysql_error());
	    $result			=	mysql_fetch_array($sql_query);
 	    extract($result);
 	    if ($pwd!=$_SESSION['s_pwd'] or $pwd=='' or $_SESSION['s_pwd']=='' )
 		    {echo"<body onload=document.location.href='fehler.php'></body>";}
Ich will damit verhindern, das kein rekusiver aufruf der Dateien möglich ist, sobald keine Session da ist, oder das Kennwort nicht mit dem gespeicherten übereinstimmt, wird auf die Fehlerseite verwiesen.

Das Problem wie es mir schein ist, das die Session plötzlich nicht mehr da ist und somit alles zutrifft, und zur Fehlerseite verwiesen wird.

Mir fehlt dazu leider nichts ein, einfach eine neue Session machen geht ja nicht!

Könnt ihr mir hierbei helfen ?

Edit:
Was noch zu erwähnen ist, der Rausschmiss erfolgt immer nach aufruf dieses Skriptes zur aktualisierung...
Code:
function ChangeCtrl()
   {
      document.getElementById("balkenfield").style.display='none';
      document.DisplayC.Display.value=ChangeC;
      if (ChangeVal==ChangeC)
      {
         parent.location.href="seeavis.php?fromrenew=ja";
      }
      else
      {
         ChangeC++;
         setTimeout('ChangeCtrl()',1000)
      }
   }
BIG BIG THX

Cyberbob
__________________
***********************************
The only winning move is not to play!
***********************************
Cyberbob_at_tot ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 05.06.2007, 12:52  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo,

ich fürchte dass bei

Code:
parent.location.href="seeavis.php?fromrenew=ja";
keine Session-ID mitgegeben wird und dadurch die Session nicht wieder aufgenommen werden kann.

Sowas solltest du aber tunlichst vermeiden:

Code:
extract($result);
Das ist unsauber und fehleranfällig!
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 05.06.2007, 12:53  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Beide Codeschnipsel beeinflußen weder die Session, noch das Cookie und können somit zumindest als direkte Fehlerquellen ausgeschlossen werden. Höchstens deren Weiterleitungen könnten den Session-Verfall beeinflußen.

Ob deine Einstellungen für die 9-Stunden-Session stimmen kann ich gerade nicht bestätigen oder widerlegen (cache_expire steht zB auf 10 Stunden), an den Einstellungen ändere ich nur sehr sehr selten etwas und wenn bin ich immer etwas verwirrt, welche Einstellung nun wirklich auch welchen Effekt hat. Nach oben hin kannst du die Session wohl auch nur wirklich sicher begrenzen, in dem du den Zeitstempel mitschleppst und vergleichst, denn auf den Garbage Collector kannst du dich nicht verlassen.

Das Problem scheint ja aber das ausloggen zu sein. Welche Skriptblöcke beenden denn die Session? Log ihre Aufrufe mal in einer Datei mit. Außerdem bietet dir die Web-Developer-Toolbar von Firefox die Möglichkeit, alle aktuellen Cookies einzusehen.Schau dort nach jedem Aufruf einmal hinein, ob das Cookie noch da ist. So kannst du gut eingrenzen wann die Session verloren geht und zwischen diesen beiden Blöcken notfalls alles mitloggen was zur Lösung führen könnte.

Bei Session- oder Cookie-Verlust ist es immer sehr schwer zu helfen, wenn -zumindest für mich gerade- kein offensichticher Fehler (bzw. relevanter Codeblock ) vorliegt.
Zergling-new ist offline  
Alt 05.06.2007, 13:29  
Erfahrener Benutzer
 
Registriert seit: 30.05.2005
Beiträge: 222
PHP-Kenntnisse:
Fortgeschritten
Cyberbob_at_tot
Cyberbob_at_tot eine Nachricht über ICQ schicken
Standard

@dr.e.
sollte man stattdessen "mysql_result" nutzen ?

Also nach dem Aufruf wird die SessionID mitgeliefert, zumindest meistens. Sonst würde es ja nicht sporadisch sein und solche Probleme machen

Gibt es anderen weiterleitungsmöglichkeiten, wo die ID 100%tig übertragen wird ?

@Zergling
Werd man sehen was ich noch rausfinden kann! Mehr als ich geschrieben habe, weis ich aber bis jetzt noch nicht!
Bei mir war am Anfang Cache_expiere auf 3 Stunden, da habe ich es auf 32400 Sekunden hochgesetzt. Es funktionierte soweit auch! Seitdem die aktualisierung drin ist, kamen die Fehler! Aber wo genau verstehe ich leider nicht!
__________________
***********************************
The only winning move is not to play!
***********************************
Cyberbob_at_tot ist offline  
Alt 05.06.2007, 13:48  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von Cyberbob_at_tot
Also nach dem Aufruf wird die SessionID mitgeliefert, zumindest meistens. Sonst würde es ja nicht sporadisch sein und solche Probleme machen
"zumindest meistens" und "sporadisch" passt ja dann wie die Faust aufs Auge. Liefer die Session-ID bei JavaScripten einfach manuell mit
Code:
session_name() . '=' . session_id()
Allerdings hast du ja Cookies aktiviert, somit sollte es daran nicht liegen. Aber nicht jeder Benutzer hat ja Cookies aktiviert.
Zergling-new ist offline  
Alt 05.06.2007, 17:47  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Zitat:
@dr.e.
sollte man stattdessen "mysql_result" nutzen ?
Nein, es geht um den Zugriff auf die Variablen, die mysql_fetch_array() zurückgibt. Das ist ein Array, und als solches sollte es auch verwendet werden. So z.B.:

PHP-Code:
<?php
$query 
"SELECT pwd from user WHERE user='".$_SESSION['s_user']."'";
$query_result mysql_query($query);
$query_data mysql_fetch_array($sql_query);
        
if(
$query_data['pwd'] != $_SESSION['s_pwd'] or $query_data['pwd'] =='' or $_SESSION['s_pwd'] =='' ){
   echo
"<body onload=document.location.href='fehler.php'></body>";

?>
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Session Problem karina_02 PHP Tipps 2008 6 18.05.2008 22:37
Problem mit Session Charly Shop Sui PHP Tipps 2006 13 25.08.2006 17:08
Und noch ein Session Problem... Weyoun PHP Tipps 2006 9 27.02.2006 22:17
Problem mit Firefox und Session PHP Tipps 2005-2 5 25.08.2005 01:14
problem mit session LA-Finest PHP Tipps 2005-2 13 18.08.2005 15:54
Session wieder aufnehmen; Problem mit GET Jacks Rache PHP-Fortgeschrittene 9 12.08.2005 14:32
[Erledigt] Problem mit Session PHP Tipps 2005-2 1 06.08.2005 19:07
Problem mit Session PHP Tipps 2005-2 13 10.07.2005 18:20
seltsames php und session problem netti PHP-Fortgeschrittene 16 01.06.2005 17:01
[Erledigt] Hilfe...PhpBB Session Problem!! PHP Tipps 2004-2 2 15.12.2004 18:28
Session Problem beim Login PHP Tipps 2004-2 6 15.12.2004 09:37
problem mit ner Session, es gehn Arrays verloren PHP-Fortgeschrittene 3 10.11.2004 18:01
[Erledigt] PHP Session Problem, dringend! PHP-Fortgeschrittene 17 21.10.2004 21:15
Session wird falsch wieder aufgenommen - Problem mit Session PHP Tipps 2004 2 16.10.2004 14:30
session problem PHP Tipps 2004 2 22.07.2004 08:39

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
session lifetime, php session lifetime, session lifetime php, session php lifetime, http://www.php.de/php-tipps-2007/44148-problem-bei-session-lifetime.html, session zeitlich begrenzen, session cookie lifetime, cookie lifetime, firefox php session lifetime, php session cookie lifetime, session livetime, session lifetime cookie, 32400 sekunden, php lifetime, firefox session lifetime, cookies deaktiviert session geht nicht, php cookie lifetime, php session life time, location.href session, php session wieder aufnehmen cookie lifetime

Alle Zeitangaben in WEZ +1. Es ist jetzt 09:51 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.