PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "Globale" Variablen in PHP ??


Maverick-X
2002-11-13, 07:12:52
Hi,

wie kann ich Daten die von einem PHP-Prog. in einem Aufruf des entsprechenden Frames erstellt werden für den nächsten Aufruf zwischenspeichern ??

TomPo
2002-11-13, 08:48:00
wie ich das verstanden habe, hat das nichts mit globalen variablen zu tun.

werte speichern über mehrere seiten hinweg kann man auf verschiedene weisen machen: cookies, sessions, get/post oder auch mit einer datenbank. für deinen fall bieten sich die ersten beiden möglichkeiten an.

Wudu
2002-11-13, 21:56:14
Eine Session ist beim Framesystem bestimmt vorteilhaft, viele cookies schreiben bei ner Seite, macht weniger Sinn!

TomPo
2002-11-13, 23:17:20
Originally posted by Wudu
Eine Session ist beim Framesystem bestimmt vorteilhaft, viele cookies schreiben bei ner Seite, macht weniger Sinn!

ja, da hast du recht. es kommt aber natürlich auch auf den zweck an. eine "warenkorb" für eine e-commerce lösung ist natürlich in einer session besser aufgehoben; benutzeridentifikation und userparameter besser in einem cookie.

der beste lerneffekt wird allerdings erzielt, wenn man beide wege mal versucht ;)

Wudu
2002-11-14, 23:53:09
wird er sowiso müssen!

Maverick-X
2002-11-15, 07:51:01
erst mal Danke für die schnellen Antworten ...

Es sind recht viele Werte (ein Feld mit über 1000) die ich zwischenspeichern will, gibt es da große Geschwindikeitsunterschiede zwischen Cookies und Sessions ?

Weitere Frage: Cookies kann man doch "abschalten" (dass sie nicht akzeptiert werden), kann sowas bei Sessions auch "passieren".

Maverick-X
2002-11-15, 08:03:56
und noch eine Hinterher:
Was ändert sich bei Sessions wenn ich "register_globals" auf "off" hab.

Kurgan
2002-11-15, 11:44:47
Originally posted by Maverick-X
erst mal Danke für die schnellen Antworten ...

Es sind recht viele Werte (ein Feld mit über 1000) die ich zwischenspeichern will, gibt es da große Geschwindikeitsunterschiede zwischen Cookies und Sessions ?

Weitere Frage: Cookies kann man doch "abschalten" (dass sie nicht akzeptiert werden), kann sowas bei Sessions auch "passieren".

nein, kann nicht: cookies werden auf dem client gespeichert, sessions auf dem server

Kurgan
2002-11-15, 11:53:20
Originally posted by Maverick-X
und noch eine Hinterher:
Was ändert sich bei Sessions wenn ich "register_globals" auf "off" hab.


register_globals boolean
Dieser Schalter bestimmt, ob die EGPCS-Variablen (Environment, GET, POST, Cookie, Server) als globale Variablen registriert werden oder nicht. Sie sollten dies ausschalten, wenn der globale Bereich Ihrer Skripte nicht durch Benutzerdaten gestört werden soll. Diese Einstellung ist insbesondere dann sinnvoll, wenn sie mit track_vars verwendet wird. In diesem Fall kÖnnen alle EGPCS-Variablen durch $HTTP_ENV_VARS, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS und $HTTP_SERVER_VARS angespochen werden.

*auszug aus php-homepage-manual (http://www.php-homepage.de/manual/)

TomPo
2002-11-15, 17:22:20
Originally posted by Maverick-X
Es sind recht viele Werte (ein Feld mit über 1000) die ich zwischenspeichern will, gibt es da große Geschwindikeitsunterschiede zwischen Cookies und Sessions ?


da ja sessions, wie schon gesagt, auf dem server liegen und cookies beim client, ist vorallem bei großen datenmengen die session vorzuziehen. modemsurfer finden es nicht so toll, wenn der http-header (mit dem cookies übertragen werden) groß ist und sie erst nach gewisser zeit die webseite sehen.

hierfür bietet sich also wegen der datenmenge und dem zweck eine session an - denn sicherlich brauchst du dieses array nicht, um den surfer anhand eines cookies wiederzuerkennen. ;)

Originally posted by Maverick-X
Weitere Frage: Cookies kann man doch "abschalten" (dass sie nicht akzeptiert werden), kann sowas bei Sessions auch "passieren".

cookies kann jeder browser akzeptieren oder auch abweisen. daher sollten darin auch nur verzichtbare daten gespeichert werden. sessions können jedoch auch, je nach einstellung in der php.ini des servers, ausgeschaltet werden. die einstellungen der php.ini kann man jedoch recht leicht überprüfen, indem man eine php-datei schreibt, die nur den funktionsaufruf

<?
phpinfo();
?>

enthält.

für weitere fragen kann ich dir nur die offizielle php-webseite unter http://www.php.net empfehlen. dort gibt es auch eine deutsche dokumentation.

Kurgan
2002-11-15, 17:39:36
ich weiss ja nicht wie ihr das seht, aber bei solchen datenmengen würd ich wohl eher in eine db schreiben .. .ich weiss ja nciht wieviel daten der user selber einzugeben hat, aber bei mehr als 3 sollte man besser speichern

TomPo
2002-11-15, 18:01:35
eigentlich hängt die entscheidung, ob in eine datenbank schreiben oder nur per session speichern, nicht von der datenmenge ab, sondern vielmehr von der art der daten. beide verfahren speichern auf der festplatte des webservers (oder halt auf dem rechner, auf dem die datenbank läuft), daher gibt es keine geschwindigkeitsunterschiede. sessions jedoch verfallen, nachdem der browser geschlossen wird, hingegen bleiben daten in der db logischerweise erhalten.

sinnvoll für eine session sind diese schon genannten "warenkörbe" oder die IP des clients, damit die session nicht so leicht von fremden übernommen werden kann.

eine datenbank hingegen sollte immmer benutzt werden, wenn die daten permanent gespeichert werden sollen, also zum beispiel newsbeiträge oder threads beim 3dcenter-forum.

Captain America
2002-11-15, 18:41:40
Originally posted by TomPo
sessions jedoch verfallen, nachdem der browser geschlossen wird, hingegen bleiben daten in der db logischerweise erhalten.


Das stimmt nicht ganz, man kann PHP so einstellen dass die Sessions nie verfallen, also bis in die Unendlichkeit und auch nachdem das Browserfenster geschlossen wurde, einstellen.

AFAIK bleiben Sessions standardmässig 30 minuten aktiv, auch nachdem man das Browserfenster schliesst.

Maverick-X
2002-11-20, 11:46:16
@ll: die Daten kommen schon von einer Datenbank (extra Server) und sollen zwischengespeichert werden solang der User keine anderen Daten anfordert, um unnötige Datenbankzugriffe zu vermeiden.