Session Variablen auch definieren?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beispiel
code
datum
definition
erlaubt klassen
file
filtern
geschmacksache
index
klasse
klasse definieren
machen
notiz
null
performance
session
speichern
string
url
wichtigen daten
-
Hallo,
Ich beschäftige mich ja gerade mit OOP und dabei wurde ich heute von einer Notiz:
Notice: Undefined index: user in /var/www/.../..../htdocs/index.php on line 18
drauf hingewiesen das in in der Zeile:
$user = $_SESSION['user'];
user nicht definiert ist. Aber muss ich denn Sessions auch in der Klasse definieren oder wie macht man das?
Und allgemein ist es klever bzw. erlaubt Klassen in Sessions zu speichern?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hi,
einfach per Definition:
$_SESSION["var"] = $var;
du musst halt wie immer session_start(); oben reinschreiben ;)
Nein, das ist nicht gerade clever, weil du dann vor dem session_start(); die klasse eingebunden haben musst und zudem bei großen Klassen die Performance extrem einbricht.
Grüße
Daniel -
igruber schrieb:
Hi,
einfach per Definition:
$_SESSION["var"] = $var;
Ähm,
du musst halt wie immer session_start(); oben reinschreiben ;)
Ähm das ist mir schon klar und das
mach ich doch in dem Beispiel, ich meine die Varibalen Defnition in Klassen z.B:$_SESSION["var"] = $var;
public $username;
Nein, das ist nicht gerade clever, weil du dann vor dem session_start(); die klasse eingebunden haben musst und zudem bei großen Klassen die Performance extrem einbricht.
Grüße
Und wie soll ich es dann machen? Immer wieder eine neue Klasse?... -
Hi,
// edit
in Klassen kannst du nur fest stehende Werte einbauen:
public $username = "myname";
Am besten funktioniert das mit dynamischen Werten über einen Konstruktor:
<?php class user { public $user; public function __construct($user) { $this->user = $user; } } $user = new User("Daniel");
hoffe, hab dich nun richtig verstanden, sonst korrigier mich wieder :)
Zu den Sessions:
Also entweder das, oder nur die wichtigen Daten aus der Session wieder rausholen.
Was ich in solchen Fällen mach, ein kleines Script, das auch große Daten schnell auf der Festplatte mit einer id sichert und dann wieder zurückholt..
Hier mal mein Code:
<?php define("ROOT", "./"); // site-root, for example /www/var/mysite/ define("cache/"); // cache directory in site-root, for example cache/ for /www/var/mysite/cache/ /** * if you want to store very much data in the session, session will slow down page dramatically, so we store just a key and then store it external in a file *@name session_store *@access public *@param string - key *@param data */ function session_store($key, $data) { if(isset($_SESSION["store"][$key])) $random = $_SESSION["store"][$key]; else $random = randomString(10); // create file $file = new File(ROOT . CACHE_DIRECTORY . $random . ".goma"); $file->write(serialize($data)); unset($file); $_SESSION["store"][$key] = $random; return true; } /** * gets data from session-store * *@name session_restore *@access public *@param string - key */ function session_restore($key) { if(isset($_SESSION["store"][$key])) if(file_exists(ROOT . CACHE_DIRECTORY . $_SESSION["store"][$key] . ".goma")) return unserialize(file_get_contents(ROOT . CACHE_DIRECTORY . $_SESSION["store"][$key] . ".goma")); else return false; else return false; } /** * checks if a store exists * *@name session_store_exists *@access public *@param string - key */ function session_store_exists($key) { if(isset($_SESSION["store"][$key])) if(file_exists(ROOT . CACHE_DIRECTORY . $_SESSION["store"][$key] . ".goma")) return true; else return false; else return false; }
Grüße
Daniel
Beitrag zuletzt geändert: 11.7.2011 21:34:26 von igruber -
testworld schrieb:
so:
...
... oder wie macht man das?$user = $_SESSION['user'];
das ist allerdings nur das 'wie' auf deine frage. ich würde das nicht so reinknallen. (vorher filtern!)$user = (empty($_SESSION['user'])) ? null: $_SESSION['user'];
Und allgemein ist es klever bzw. erlaubt Klassen in Sessions zu speichern?
geschmacksache. hier ein beispiel.
lg -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage