CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos

|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP 
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |

14.07.2007, 12:35:22
|
Anfänger
|
|
Registriert seit: Feb 2005
Beiträge: 71
|
|
$_SESSION macht Ärger im Firefox
Hallo!
Ich habe folgendes Problem:
(Ausschl) in Firefox wird der komplette Array $_SESSION bei der Navigation durch ein Formular gelöscht. Hierbei kann man von drei Formularseiten über einen (weiteren Formular-) Button jeweils eine Seite zurück gehen. Die Formularfelder sollten, sofern Werte gespeichert sind) die Daten aus $_SESSION direkt wieder einfügen. gelangt man wieder auf die erste Seite des Formulars wird mittels Funktion $_SESSION nach dem Einfügen der Daten geleert.
Diese Fkt - nenne wir sie mal X - wird nur auf der ersten Seite aufgerufen... Das habe ich mehrfach schon kontrolliert. Aber sobald sie irgendwo in meinem Skript auftaucht, wird $_SESSION nach jedem senden mittels $_POST gelöscht... Was ist da los? Ich versteh die session nicht mehr :-( So wird X aufgerufen:
PHP-Code:
$_SESSION = delete_form_data($_SESSION);
__________________
Gruß von der Nordsee
Geändert von Isocrateus (14.07.2007 um 12:39:20 Uhr)
|

14.07.2007, 12:49:57
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: $_SESSION macht Ärger im Firefox
Mit diesem Code-Schnippsel kann Dir hier auch keiner weiter helfen.
|

14.07.2007, 13:11:30
|
Anfänger
|
|
Registriert seit: Feb 2005
Beiträge: 71
|
|
AW: $_SESSION macht Ärger im Firefox
Na gut, das Skript sieht wie folgt aus:
PHP-Code:
function content(){
$this_form_id = 14787;
$step = $_POST["step"];
If (empty($step)||$step==1)
{
$errors = check_form($_POST,$this_form_id);
$form = create_form($this_form_id,1,$errors);
$content = $form;
$_SESSION = delete_form_data($_SESSION);
}
If ($step==2)
{
$errors = check_form($_POST,$this_form_id);
$form = create_form($this_form_id,2,$errors);
$content = $form;
}
If ($step==3)
{
$errors = check_form($_POST,$this_form_id);
$form = create_form($this_form_id,3,$errors);
$content = $form;
}
If ($step==4)
{
}
return $content;
}
Wobei wiederum checkform() die per post übersandten Daten in $_SESSION registriert und create_form einfac hnur dynamisch die Formularseiten erzeugt. delete_form_data($_SESSION) sieht so aus:
PHP-Code:
function delete_form_data($session){
foreach ($session as $var => $value){
unset($session[$var]);
}
return $session;
}
Im Übrigen funktionierts prima in IE oder Opera...
__________________
Gruß von der Nordsee
|

14.07.2007, 17:02:44
|
 |
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 76
Beiträge: 4.001
|
|
AW: $_SESSION macht Ärger im Firefox
Zitat:
$_SESSION = delete_form_data($_SESSION);
|
Was soll der Unfug?
Das tuts auch:
PHP-Code:
$_SESSION = array();
|

14.07.2007, 17:16:12
|
Anfänger
|
|
Registriert seit: Feb 2005
Beiträge: 71
|
|
AW: $_SESSION macht Ärger im Firefox
Okay, aber selbst wenn ich die Fkt delete usw. durch
PHP-Code:
$_SESSION = array()
im obigen Skript ersetze, bleibt das Problem. Lösche ich allerdings auch diese Zeile heraus, funktioniert alles wie gewollt... Mit der Ausnahme, dass alle Daten aus dem Formular weiterhin gespeichert bleiben und angezeigt werden, was sie beim erneuten Aufruf natürlich nicht sollten. Würde mich sehr freuen, wenn jemandem dazu noch etwas einfällt... :-)
__________________
Gruß von der Nordsee
Geändert von Isocrateus (14.07.2007 um 17:17:34 Uhr)
|

14.07.2007, 19:35:26
|
 |
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: $_SESSION macht Ärger im Firefox
Zitat:
Zitat von Isocrateus
Okay, aber selbst wenn ich die Fkt delete usw. durch
PHP-Code:
$_SESSION = array()
im obigen Skript ersetze, bleibt das Problem. Lösche ich allerdings auch diese Zeile heraus, funktioniert alles wie gewollt... Mit der Ausnahme, dass alle Daten aus dem Formular weiterhin gespeichert bleiben und angezeigt werden, was sie beim erneuten Aufruf natürlich nicht sollten.
|
Dann wird diese Zeile aus welchen Gründen auch immer bei jedem Seitenaufruf ausgeführt. Woran das liegt, können wir dir aber nicht sagen, solange du uns vorenthälst, wie die Zeilen um den Funktionsaufruf herum aussehen.
|

14.07.2007, 20:25:22
|
Anfänger
|
|
Registriert seit: Feb 2005
Beiträge: 71
|
|
AW: $_SESSION macht Ärger im Firefox
Also check_from sieht so aus:
PHP-Code:
function check_form($post_vars,$form_id){
@session_start();
foreach ($post_vars as $var => $value){
if ($var!="step") $_SESSION[$var] = $value;
}
}
Und die Funktion content() wird in der indexdatei einfach aufgerufen per echo in einem Template ausgegeben. Da kann der Fehler nicht liegen. Im Prinzip wird sie irgendwie aufgerufen, aber kein anderes Skript auf dem Server ruft sonst irgendwo diese Funktion auf. Im Interexplorer funktionierts ja auch, der Fehler muss also irgendwo in $_SESSION selbst liegen..., oder?
__________________
Gruß von der Nordsee
|

14.07.2007, 20:42:06
|
 |
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 76
Beiträge: 4.001
|
|
AW: $_SESSION macht Ärger im Firefox
Zitat:
Zitat von Isocrateus
Okay, aber selbst wenn ich die Fkt delete usw. durch
PHP-Code:
$_SESSION = array()
im obigen Skript ersetze, bleibt das Problem.
|
1. mehr als die paar Schnipsel kenne ich ja nicht
2. ebenfalls ist Deine PHP Config komplett unbekannt
3. die Ausrede, die Fehlfunktion wäre browserabhängig, kannste knicken:
27.6. Mein Script funktioniert nicht mit Browser XY!
http://www.php-faq.de/q/q-html-validieren.html
Zitat:
Würde mich sehr freuen, wenn jemandem dazu noch etwas einfällt... :-)
|
Mehr Script, mehr Config.
php version:___
register_globals:___
+ Deine komplette Session-Config
Welchen DOCTYPE verwendest Du?
Gibt es ein Onlinebeispiel?
Zusatz:
Deine function check_form() ist gefährlich. Besonders dann, wenn register_globals = On sein sollte.
Geändert von meikel (†) (14.07.2007 um 20:46:11 Uhr)
|

17.07.2007, 22:31:12
|
Anfänger
|
|
Registriert seit: Feb 2005
Beiträge: 71
|
|
AW: $_SESSION macht Ärger im Firefox
Abend!
Habe in Erfahrung gebracht, dass ich PHP 4.4.4 mit - da liegt wohl die Schwierigkeit - register_globals = on laufen habe...
Die Session-Config (wenns denn folgendes sein sollte...?) sieht folgender maßen aus:
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 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
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 1440 1440
session.gc_probability 1 1
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /tmp /tmp
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid On On
Ein Online-Beispiel kann ich leider nicht geben.
Aber mir ist schleierhaft, weshalb grundsätzlich sobald session_destroy oder $_SESSION = array() irgendwo im Skript (unabhängig von Fkt oder Schleife) auftaucht $_SESSION gelöscht bzw überschrieben wird.
Dass check_form noch sehr unsicher ist, dachte ich mir allein aufgrund der nicht verhandenen Eingabeüberprüfung schon ;-)
Doctype ist außerdem xhtml (Mekre gerade, dass ich mich garnicht auskenne - *sry*)
__________________
Gruß von der Nordsee
Geändert von Isocrateus (17.07.2007 um 22:32:26 Uhr)
|

17.07.2007, 23:06:25
|
 |
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 76
Beiträge: 4.001
|
|
AW: $_SESSION macht Ärger im Firefox
Zitat:
Zitat von Isocrateus
Habe in Erfahrung gebracht, dass ich PHP 4.4.4 mit - da liegt wohl die Schwierigkeit - register_globals = on laufen habe...
|
Genauso isses. PHP importiert während session_start() die Variablen aus dem Session File.
Steht register_globals auf Off, ist alles in Butter. Steht das Flag auf On, importiert PHP zusätzlich noch den Inhalt von $_SESSION in den globalen Namensraum. Und genau da fangen die Probleme an, weil ja dort auch die Formularvariablen aufschlagen. Und nicht nur das: alle Variablen, die PHP exportiert hat - $_SESSION['var'] -> $var, sichert PHP dann am Scriptende auch wieder. Leider kenne ich hier die Reihenfolge nicht, ob PHP dabei die Indizes in $_SESSION mit den gleichnamigen Variablen überschreibt - oder umgekehrt.
Fazit:
schalte das Flag aus, wenn Du darfst, oder nerve die Hotline so lange, bis die es gemacht haben. Sonst hat Du nämlich sehr schlechte Karten!
Zitat:
Die Session-Config
session.bug_compat_42 On On
session.bug_compat_warn On On
|
Beide Flags müssen ebfalls ausgeknipst werden, wenn register_globals = Off ist.
Zitat:
session.use_trans_sid On On
|
Damit kann es ggf. auch Probleme geben, falls Du JavaScript verwendest. PHP versucht dann, bevor der Apache den Kram abschicken darf, an alle Links die Session Daten dranzukleben, wenn der Client keinen Keks haben wollte. Die Frage ist nur, wie intelligent sich PHP dabei anstellt, alle richtigen Stellen zu finden.
Ich bin mißtrauisch und erledige das lieber im PHP-Script unter Verwendung der PHP-Konstante SID.
Zitat:
Dass check_form noch sehr unsicher ist, dachte ich mir allein aufgrund der nicht verhandenen Eingabeüberprüfung schon ;-)
|
Naja, die Funktion nimmt unbesehen das, was sie kriegt.
Dazu noch register_globals = On - das ist so wie ein "Freilos für Cracker". <ggg>
Geändert von meikel (†) (17.07.2007 um 23:12:12 Uhr)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 10:51:17 Uhr.
|