php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.07.2006, 10:48  
Benutzer
 
Registriert seit: 28.11.2003
Beiträge: 37
Diet
Standard Session logout bei Frames

Hallo, habe ein frameset mit 3 frames unter anderem ein Rubrikframe. Wenn ich nun die Session beenden will wird eine neue Seite geladen und der Inhalt von $_SESSION wird gelöscht . Dies geht auch da ich probehalber die Sessionsdaten aufgerufen habe und sie gelöscht sind.

Aber wenn ich im Browser auf "zurück" klicke wird die Session wieder aufgenommen und alle Daten in $_SESSION sind noch vorhanden so daß ich im Rubrikframe weiterklicken kann als wäre nichts gelöscht worden.

Hier der logout-Code:
PHP-Code:
session_start();  
if(
$_POST['anforderung']=="logout")//session beenden----
 
{

    
$_SESSION = array();
    if (isset(
$_COOKIE[session_name()])) 
     {
    
setcookie(session_name(), ''time()-42000'/');
     }
   
session_destroy();
    
  } 
Hier das Form zum Logout und aufrufen einer neuen Seite:
PHP-Code:
   print"

Zum abmelden klicken Sie bitte auf den Button</p>"
;
   print
"

<form action=\"index.php5?"
.strip_tags(SID)."\" method=\"post\" target=\"_top\">";
   echo
'<input type="hidden" name="anforderung" value="logout" >';
   echo
'<input type="Submit"  value="abmelden">';
   echo
'</form></p>'
Wie kann so etwas sein, wenn das Sessionsarry einmal gelöscht ist dürfte es sich doch nicht mehr füllen?

Danke euch für die Hilfe im voraus!
Diet ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 28.07.2006, 11:11  
Gast
 
Beiträge: n/a
Standard

Seltsam.
Was sagt phpinfo() zu session.save_handler?
Und welche PHP Version wird verwendet? Welches OS?

Der entsprechende Code für save_handler=files sieht so aus
Code:
PS_DESTROY_FUNC(files)
{
	char buf[MAXPATHLEN];
	PS_FILES_DATA;

	if (!ps_files_path_create(buf, sizeof(buf), data, key))
		return FAILURE;
	
	ps_files_close(data);
	
	if (VCWD_UNLINK(buf) == -1) {
		return FAILURE;
	}

	return SUCCESS;
}
Die Sessiondatei wird geschlossen und anschließend gelöscht.
Klappt das nicht (also return FAILURE), wird ein E_WARNING "Session object destruction failed" ausgelöst. Passiert das mit error_reporting(E_ALL) ?
 
Alt 28.07.2006, 11:31  
Benutzer
 
Registriert seit: 28.11.2003
Beiträge: 37
Diet
Standard

session.save_handler=files
Versio=PHP 5.1.1 mit Apache und Win XP
Diet ist offline  
Alt 28.07.2006, 11:36  
Gast
 
Beiträge: n/a
Standard

Und die Skripte für die frames sind auch vor dem logout beendet gewesen?

Ansonsten bin ich überfragt.
 
Alt 28.07.2006, 11:37  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Zitat:
Zitat von Bruchpilot
Klappt das nicht (also return FAILURE), wird ein E_WARNING "Session object destruction failed" ausgelöst. Passiert das mit error_reporting(E_ALL) ?
Wie stehts hiermit?

Nachtrag: Wird das Script, das die Session zerstört innerhalb eines Framesets aufgerufen, in dem andere Script quasi zeitgleich aufgerufen werden und die so eigentlich zerstörte Session wieder aufnehmen?
xabbuh ist offline  
Alt 28.07.2006, 11:55  
Benutzer
 
Registriert seit: 28.11.2003
Beiträge: 37
Diet
Standard

Wenn ich obigen Code von Bruchpilot eingebe wird parse error, unexpected '{' in line 31 angezeigt also dort wo unter "PS_DESTROY_FUNC(files)" das erst "{" steht

Das Script wird innerhalb des mittleren Frames aufgufen und ruft die Hauptseite wieder auf, target="_top" , hier der Code dieser Seite

PHP-Code:
include("arb-inc/arb-header.inc.php5");


if(!empty(
$_POST['login_ok']))
{
echo
'<frameset  rows="165,*" border="0"  framespacing="0" >';
print
"<frame src=\"oben.php5?".strip_tags(SID)."\" name=\"oben\" marginwidth=\"0\"  marginheight=\"0\" scrolling=\"no\" noresize=\"noresize\">";
echo
'<frameset cols="200,*">';
print 
"<frame name=\"rubrik\" src=\"rubrik.php5?".strip_tags(SID)."\">";
print 
"<frame name=\"mitte\" src=\"text.php5?".strip_tags(SID)."\"></frameset>";

echo
'</frameset>';
}
else
//login formular
{
echo
'<body topmargin="0" marginwidth="0"  marginheight="0">';
echo
'

[img]bilder/banner.jpg[/img] </p>'
;

include (
"./arb-tpl/form-login.tpl");

echo
'</body>';

Alle Framescripte werden vor Logout beendet.
Diet ist offline  
Alt 28.07.2006, 12:10  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Diet
Wenn ich obigen Code von Bruchpilot eingebe wird parse error, unexpected '{' in line 31 angezeigt also dort wo unter "PS_DESTROY_FUNC(files)" das erst "{" steht
Wie kommst Du auch darauf? Das ist der PHP Quellcode - das was PHP ausmacht - kein Skript für PHP.

Die Frage war, was mit error_reporting(E_ALL); passiert.
 
Alt 28.07.2006, 12:25  
Benutzer
 
Registriert seit: 28.11.2003
Beiträge: 37
Diet
Standard

Allso brauche ich den Code nicht einzugeben?
habe jetzt
PHP-Code:
print error_reporting(E_ALL); 
nach (siehe oben)
PHP-Code:
session_destroy(); 
eingegeben und als Ergebnis 2039 angezeigt bekommen.
Diet ist offline  
Alt 28.07.2006, 12:32  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Bruchpilot
Seltsam.
Wie ich schon paarmal schrieb:
ein session_write_close(); nach dem $_SESSION = array(); garantiert, daß die Sessiondaten auch im Sessionfile gelöscht werden. Dann isses egal, wann genau PHP das Sessionfile killt.

Allerdings isses sinnfrei, eine Session innerhalb eines Framesets zu löschen, weil man nicht weiß, was die anderen Scripte für einen Unfug treiben, wenn sie vom Client requestet werden (target top).
 
Alt 28.07.2006, 12:42  
Benutzer
 
Registriert seit: 28.11.2003
Beiträge: 37
Diet
Standard

Auch mit session_write_close(); gehts nicht.
Gibt es den eine Möglichkeit den Zurück-Button des Browsers auszuschalten?
Diet 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 bei session Lifetime Cyberbob_at_tot PHP Tipps 2007 5 05.06.2007 17:47
session nach seitenwechsel leer... GELight PHP Tipps 2006 8 17.09.2006 15:17
Session Logout Login Navigation TailerD PHP Tipps 2006 10 24.06.2006 17:12
[Erledigt] php session problem :( PHP Tipps 2005-2 5 21.10.2005 16:37
Bei Session - verfall socke PHP Tipps 2005-2 12 01.09.2005 02:30
Session wird nicht angelegt PHP Tipps 2005-2 7 24.07.2005 13:35
Kreieren einer Session PHP Tipps 2005 11 28.05.2005 15:16
Frames oder keine Frames? PHP Tipps 2005 1 19.05.2005 12:28
Session - logout nixdorf PHP Tipps 2005 10 13.02.2005 19:13
[Erledigt] Formulardaten in einer Session speichern, per Link übergeben PHP Tipps 2004-2 2 29.12.2004 15:47
[Erledigt] Hilfe...PhpBB Session Problem!! PHP Tipps 2004-2 2 15.12.2004 18:28
eine Session für alle Frames PHP Tipps 2004-2 10 04.12.2004 15:49
session in einem frameset PHP-Fortgeschrittene 4 18.11.2004 14:55
Session automatisches Logout? PHP Tipps 2004 1 03.07.2004 23:26

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
session abmelden, why \time() -42000\, logout nicht mehr frameset, frameset nach abmeldung, abmelden von frames html, ajax session object destruction failed, php session logout frame, php5 echo \<frameset, session logout bei schließen, php logout neue seite, php logout (session) & html frames, php logout mit frames, logout bei frames, php logout frameset, php striptags sid, probleme beim logout mit frames php, logout neue seite php, welche php version war 2006 gültig, php session logout frames

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:10 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.