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 |
15.12.2005, 23:02:14
|
Anfänger
|
|
Registriert seit: Dec 2005
Beiträge: 8
|
|
AW: Session-Variable wird nicht übernommen
Mein Problem ist ähnlich gelagert, leider helfen mir die Hinweise hier bisher nicht.
Die genutzen Browser (IE FireFox) unterstützen Cookies, die SessionID bleibt bei jedem Seitenaufruf erhalten.
Trotzdem verschwindet beim Seitenwechsel mein Objekt aus der Session. Auch eine testweise angelegte Variable verschwindet aus der Session.
An den Einstellung in der php.ini kann es glaube ich ebenfalls nicht liegen.
Hier zur Information:
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 Off Off
Habe eine Startseite aus der ich über Includes einzelne Seitenteile für den Aufbau zusammenbastle.
Wenn jemand etwas einfällt, würde ich mich freuen davon zu lesen:)!
|
16.12.2005, 00:27:25
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Session-Variable wird nicht übernommen
Zitat:
Zitat von compuulli
Mein Problem ist ähnlich gelagert, leider helfen mir die Hinweise hier bisher nicht.
|
Deine Infos helfen ebenfalls nicht.
Windows oder Linux?
PHP3, 4 oder 5?
Modul oder CGI?
register_globals On oder Off?
open_basedir gesetzt?
Falls ja: befindet sich der session.save_path mit in der Verzeichnisliste?
Hast Du auch ein Script?
|
16.12.2005, 09:47:25
|
Anfänger
|
|
Registriert seit: Dec 2005
Beiträge: 8
|
|
AW: Session-Variable wird nicht übernommen
Läuft als Modul nicht als CGI
Geändert von compuulli (16.12.2005 um 09:55:05 Uhr)
|
16.12.2005, 09:50:12
|
Anfänger
|
|
Registriert seit: Dec 2005
Beiträge: 8
|
|
AW: Session-Variable wird nicht übernommen
Sorry, war wohl etwas spät gestern!
Linux,
php-Version 4.3.6
register_globals ON
open_basedir no value no value
session.save_path /tmp /tmp
PHP-Code:
//index.php
<?php
// starten der Session
session_start();
// ausgabe zur Kontrolle
echo session_id();
// Klasse für die Session
include './KLASSE/NUTZER.php';
//je nachdem, welcher Parameter übergeben wird, werden verschiedene
//Seiteninhalte geladen.
if ($nextside=="") {
include 'header.html';
include 'leftside.html';
include 'centerside.html';
include 'rightside.html';
}
elseif ($nextside=="anmeldung") {
include 'header.html';
include 'leftside.html';
// die centesideanmeldung teilt die Anmeldung dabei in Schritte auf!
include 'centersideanmeldung.php';
include 'rightside.html';
}
?>
centersideanmeldung.php
PHP-Code:
// im ersten Schritt wird das Objekt noch nicht benötigt!
if($schritt==1){
include 'anmeldenschritt1.php';
}
elseif ($schritt==2) {
//im Schritt 2 wird jetzt ein Nutzer angelegt.
$neuernutzer = new NUTZER;
$neuernutzer->setAnrede($anrede);
$neuernutzer->setFirmenname($firmenname);
$neuernutzer->setVorname($vorname);
$neuernutzer->setName($name);
$neuernutzer->setStrasse($strasse);
$neuernutzer->setPlz($plz);
$neuernutzer->setOrt($ort);
$neuernutzer->setEmail($email);
$neuernutzer->setTelefon($telefon);
$neuernutzer->setFax($fax);
$neuernutzer->setMobiltel($mobiltel);
echo get_class($neuernutzer);
// Der Nutzer wird in der Session registriert!
if(! session_register($neuernutzer)){
echo "Nutzer wurde nicht in der Session gespeichert!";
}
// Der Nutzer durchleuft jetzt einen test, ob Daten i.O. sind
if($neuernutzer->testNutzerdaten()){
//echo "SCHRITT 2";
//ist dies der Fall, kommt er hier an. (OBJEKT EXISTIERT in Session)
include 'anmeldenschritt2.php';
}
else{
//ist dies nicht der Fall, kommt er hier an (OBJEKT EXISTIERT in Session)
include 'anmeldenschritt1.php';
}
}
elseif($schritt==3){
//Beim nächsten Seitenaufruf, wenn der Test erfolgreich war, wird
// Schritt 3 geladen. Dann verschwindet des Objekt aus der Session!
// Ebenso verschwindet das Objekt auf der Startseite also Index o. Paras
// Kontrolle ob Login noch frei und Passwörter übereinstimmen!
//wenn ja soll dies erfolgen
include 'anmeldenschritt3.php';
}
else{
include 'anmeldeneinloggen.php';
}
?>
Hoffe dass ist jetzt präziser DANKE!
Ach ja, open_besedir dient doch dazu den Zugriff auf ein bestimmtes Verzeichnis zu beschränken oder?
Dann kann dies doch mit der Session nicht zusammenhängen oder täusche ich mich?
Geändert von compuulli (16.12.2005 um 10:06:21 Uhr)
|
16.12.2005, 15:07:50
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Session-Variable wird nicht übernommen
Zitat:
Zitat von compuulli
register_globals ON
[...]
Hoffe dass ist jetzt präziser DANKE!
|
Jou.
Komplettes EDIT:
Dein Script kann so nicht funktionieren. Du speicherst mit session_register ein Objekt in der Session. Das klappt so nicht.
- stell um auf register_globals = Off
- wenn Du unbedingt ein Objekt verwenden willst, dann beachte das:
29.13. Wie speichere ich Objekte in Sessions?
http://www.php-faq.de/q/q-sessions-objekte.html
- btw: Arrays lassen sich sehr bequem in der Session ablegen:
PHP-Code:
session_start();
$_SESSION = $_POST;
Geändert von meikel (†) (16.12.2005 um 15:21:52 Uhr)
|
16.12.2005, 16:37:47
|
Anfänger
|
|
Registriert seit: Dec 2005
Beiträge: 8
|
|
AW: Session-Variable wird nicht übernommen
HAB DIE LÖSUNG :)
Eigentlich müsste ich mich schämen, aber Du hast mich auf die richtige Fährte gebracht, auch wenn Dein Lösungsansatz nicht richtig war.
Aus früheren Projekten wusste ich, dass man auch ganze Objekte in der Session speichern kann, ohne das diese in ein Array umgewandelt werden müssen.
2 Fehler haben sich jetzt in meinem Script eingeschlichen.
1. Fehler
session_register ist falsch, habe $neuernutzer anstatt 'neuernutzer' übergeben.
2. Fehler
Die Klasse muss vor dem session_start() mit include eingelesen werden.
register_globals ist wieder ON
Deine Lösung war zwar nicht richtig, hat mich aber auf meine eigene Dummheit hingewiesen. Viel mir nach deiner letzten Antwort hier wie Schatten von den Augen.
Danke für die Hilfe!
Manchmal ist man einfach so verbohrt, dass man nicht darauf kommt:)
Geändert von compuulli (16.12.2005 um 16:40:03 Uhr)
|
16.12.2005, 17:45:02
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Session-Variable wird nicht übernommen
Zitat:
Zitat von compuulli
Aus früheren Projekten wusste ich, dass man auch ganze Objekte in der Session speichern kann, ohne das diese in ein Array umgewandelt werden müssen.
|
Aus eigener Erfahrung: Es bringt mir nix, Objekte in der Session zu speichern, auch wenn es möglich ist. Ich verwende Template-, DB-, Auth- und Sessionklasse incl. der jeweiligen Modulklassen für den geforderten Request. Die Templateklasse arbeitet mit assoziativen Arrays sehr effizient.
Zitat:
Deine Lösung war zwar nicht richtig,
|
Sie ist anders, aber nicht falsch. Ich verwende grundsätzlich Parameter-Arrays, weil die sich wesentlich bequemer als Objekte verarbeiten lassen.
|
16.12.2005, 22:16:16
|
Anfänger
|
|
Registriert seit: Dec 2005
Beiträge: 8
|
|
AW: Session-Variable wird nicht übernommen
Da treffen dann wohl 2 Philosophien aufeinander.
Ich für meinen Teil arbeite lieber mit Objekten. Bin ich von Java her gewohnt.
Deine Lösung, konnte mein Problem allerdings nicht beseitigen, da es nicht an register_globals gelegen hat und auch nicht daran, dass ich ein Objekt in der Session speichern wollte. Ich habe beide Varianten ausprobiert.
Es war einfach nur das falsche übergeben der Variablen an die Session. Eigentlich ein echter Anfängerfehler. Dieser Fehler und das zu späte includen der Klasse war das eigentliche Problem an meinem Script.
Trotzdem bin ich für die Tips dankbar, Sie haben mich zum nachdenken angeregt und fließen vieleicht in Zukunft in mein Programm ein. Das Forum hier hat mir beim Stöbern schon geholfen.
Also Danke nochmals für die Tips und die Hilfe!
|
17.12.2005, 02:05:06
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Session-Variable wird nicht übernommen
@compuulli
> Da treffen dann wohl 2 Philosophien aufeinander.
Philosophie? Ich bin nur ein schreibfauler Hund, der Objekte wie Bausteine verwendet. Ein normales PHP Script muß unter Last in max. 50 ms das letzte Byte zum Client geschickt haben. Eigentlich schon zuviel: bei 100 gleichzeitigen Zugriffen würde das schon stolze 5s dauern.
> Es war einfach nur das falsche übergeben der Variablen an die Session.
Beachte bitte das:
http://de.php.net/session_register
und das auch:
http://test.php-help.info/session-7.1/ register_globals = Off
http://test.php-help.info/session-7.2/ register_globals = On
Ich hatte mal eine längere Diskussion mit einem Fragesteller, der sich darüber beklagt hatte, daß Formularvariable auf einmal die Werte aus der Session beinhalteten.
Geändert von meikel (†) (17.12.2005 um 02:05:37 Uhr)
|
21.12.2005, 11:32:19
|
Junior Member
|
|
Registriert seit: Jun 2004
Ort: Weiden i.d.Opf.
Alter: 46
Beiträge: 315
|
|
AW: Session-Variable wird nicht übernommen
Hi,
ich bins nochmal...
Momentan erfolgt die Session-Übergabe per URL. An den Stellen, wo es nötig ist, übergebe ich die SID-Konstante. Dem alten "Problemrechner" ist das so recht, da funktioniert es. Aber irgendwo da draususen gibt es einen PC, auf dem es nicht funktioniert. In Der DB werden die Session-Daten von diesem Rechner nicht gespeichert. Bei allen anderen PC's funktioniert es aber bisher. An was könnte das noch liegen? Bitte Hilfe, Danke.
Wie darf ich eigentlich diesen Code verstehen?
PHP-Code:
header('Location: http://host/script.php?' .
(SID == '' AND ini_get('session.use_trans_sid'))
session_name() . '=' . session_id() );
Wird session_name() und session_id() angefügt, wenn SID und session.use_trans_sid leer bzw. 0 sind und ansonsten wird SID angefügt, oder ist das nur eine Überprüfung von SID und wird diese gar nicht angefügt, wenn sie nicht leer ist? Sorry, aber diese Schreibweise ist mir nicht so vertraut.
Geändert von Zudecke (21.12.2005 um 11:56:58 Uhr)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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 16:17:55 Uhr.
|