Seite 1 von 1
$_GET oder $_POST oder doch $_REQUEST?
Verfasst: 06.01.2005 13:35
von Fabse
Hi!
Ich hab da mal ne grundsätzliche frage. Was sollte man bei eigenen Scripten nutzen?
$_GET
$_POST
$_REQUEST
Verfasst: 06.01.2005 13:57
von itst
Kommt drauf an [tm]
$_GET enthält nur URL-Parameter
$_POST enthält nur Parameter, die per POST übertragen wurden (oft sind das Formulare, method="post")
$_REQUEST enthält sowohl als auch und außerdem noch Cookie-Parameter (aus $_COOKIE):
Siehe auch
http://de2.php.net/en/language.variables.predefined
Verfasst: 06.01.2005 14:00
von Fabse
Ja, das weiß ich ja.
Nur welches sollt ich eurer meinung verwenden. Ich benutz jetzt immer $_REQUEST für mein CMS. Aber in vielen anderen Scripten wird immer $_GET genommen. Deshalb hab ich jetzt mal nachgefragt.
Gruß, Fabse
Verfasst: 06.01.2005 14:06
von itst
Benutz das Array, in dem die Daten drin sind, die Du brauchst. Wenn Du Cookie-Vars brauchst, nimm $_COOKIE, wenn Du URL-Parameter brauchst, nimm $_GET usw. Das sorgt für sauberen Code und weniger Fehlerquellen.
Verfasst: 06.01.2005 14:07
von larsneo
ich würde über eine zentrale funktion $_REQUEST und ggfs. zusätzlich noch $_FILES aus den GPC-daten ziehen...
prinzipiell solltest du dich allerdings auch um input-validierung kümmern, man kann in deinem CMS derzeit recht einfach eine sql-injektion vornehmen

Verfasst: 06.01.2005 14:11
von itst
Wenn Du nur $_REQUEST benutzt, könnte es Dir passieren, das Variablen überschrieben werden, siehe
http://de2.php.net/manual/en/ini.sect.d ... bles-order
Verfasst: 06.01.2005 14:13
von Fabse
Oki, danke euch für die schnellen Antworten!
Gruß, Fabse
Verfasst: 06.01.2005 19:33
von Pyramide
Ich bevorzuge $_REQUEST, sofern die Möglichkeit besteht, daß die Daten sowohl per POST als auch per GET reinkommen könnten. Also z.B. wenn ein Formular standardmäßig per POST übertragen wird, man aber auch eine direkte Verlinkung ermöglichen will. Bei der phpBB-Suche beispielsweise ist dies nicht bei allen Parametern der Fall - dadurch kann man z.B. nicht auf eine Suche verlinken, die nach Themen statt Beiträgen sucht (und iirc auch nicht nach dem zu durchsuchenden Forum einschränken)

.
Wenn man diese Verlinkung jedoch gewollt verhindern möchte oder die Verwendung von POST-Formularen nicht vorgesehen oder gar unangebracht ist (z.B. wenn es warscheinlich ist, daß jemand die Seite per F5 aktualisieren möchte), macht jedoch auch $_GET Sinn. $_POST verwende ich eigentlich nur, um zu prüfen ob ein Formular abgesendet wurde (à la
if(isset($_POST['submit'])))