Seite 1 von 1

Alternative zu $_GET

Verfasst: 15.09.2005 23:18
von Martin Truckenbrodt
Hallo,
ich bin gerade dabei meinen PHPMN phpBB Connector MOD zertifizieren zu lassen.

Als einer von zwei Punkten wurde bemängelt, dass ich $_GET (zu häufig) verwende.
Beispiel phpmn.php:

Code: Alles auswählen

...
$id = quote_smart($_GET['id']);
$topical = quote_smart($_GET['topical']);
$do = quote_smart($_GET['do']);
$edit = quote_smart($_GET['edit']);
...
und phpmn.tpl:

Code: Alles auswählen

...
	<form method="get" action="phpmn.php">
	<tr>
		<td class="row3" colspan="2" align="center">
			<b>{L_PHPMN_HTML}:</b>&nbsp;<input type="radio" name="do" value="html">&nbsp; - &nbsp;
			<b>{L_PHPMN_PLAIN}:</b>&nbsp;<input type="radio" name="do" value="plain">&nbsp; - &nbsp;
			<b>{L_PHPMN_UNSUBSCRIBE}:</b>&nbsp;<input type="radio" name="do" value="unsubscribe">
		</td>
	</tr>
	<tr>
		<td class="row3" colspan="2" align="center">
			<input type="submit" accesskey="s" name="post" class="mainoption" value="{L_PHPMN_SEND}">&nbsp;&nbsp;
			<input type="reset" accesskey="r" class="mainoption" value="{L_PHPMN_RESET}">
		</td>
	</tr>
		<input type="hidden" name="edit" value="do">
		<input type="hidden" name="id" value="{action.ID}">
		<input type="hidden" name="topical" value="{action.TOPICAL}">
	</form>
...
Wie mache ich das anders bzw. besser bzw. konform?

Danke und Gruß Martin

Verfasst: 16.09.2005 06:58
von PhilippK
Wo's geht, solltest du auf $_POST ausweichen...

Gruß, Philipp

Verfasst: 16.09.2005 08:04
von hostpalace
Mann könnte das $_GET oder $_POST auch weglassen (z.B. nur $id), ob's funktioniert, ist serverabhängig.

Verfasst: 16.09.2005 08:09
von oxpus
hostpalace hat geschrieben:Mann könnte das $_GET oder $_POST auch weglassen (z.B. nur $id), ob's funktioniert, ist serverabhängig.
Das wäre die unsicherste und schlechteste Methode.
Besser in den PHP Einstellungen register_globals = off schalten und sauber programmieren. Dann gibts auch kein Gejammer, wenn das Forum gehacht wurde ;)

Verfasst: 16.09.2005 08:26
von Martin Truckenbrodt
Hallo,
muß ich bei meinen obigen Codeschnipseln nur $_GET gegen $_POST austauschen und die method="post" setzen?

Gruß Martin

Verfasst: 16.09.2005 14:07
von fanrpg
Martin Truckenbrodt hat geschrieben:Hallo,
muß ich bei meinen obigen Codeschnipseln nur $_GET gegen $_POST austauschen und die method="post" setzen?

Gruß Martin
Im Grunde genommen, ja

Verfasst: 16.09.2005 14:13
von Blutgerinsel
hostpalace hat geschrieben:Mann könnte das $_GET oder $_POST auch weglassen (z.B. nur $id), ob's funktioniert, ist serverabhängig.
Und selbst in der tollen php.ini ist ein Comment erhalten, dass register_globals off bleiben soll damit es auch der letzte Anfänger sich nicht potenziellen Gefahren aussetzt......

Generell werden meine Formulare mittels method post versendet es sei denn, dass es aus besonderen Soll-Zustand Anforderungen dies unmittelbar erforderlich ist......

Verfasst: 16.09.2005 22:44
von Martin Truckenbrodt
Hallo Blutgerinsel und alle anderen,
hat sich erledigt: http://www.phpbb.de/viewtopic.php?t=98047

Gruß Martin

Verfasst: 16.09.2005 22:59
von Pyramide
Als Faustregel kann man sagen, alle Formulare die etwas "machen" (Kommentar verfassen, Newsletter anmelden, Benutzer registrieren, an Umfrage teilnehmen, ...) sollten per POST realisiert werden, weil es i.d.R. keinen Sinn macht (und bei Passwörtern o.ä. sogar vermieden werden soll), daß daraus entstandene URLs in Logs, Suchmaschinen, Foren etc. auftauchen. Formulare, die etwas "anzeigen" (Suchmaschine, Jumpbox bei phpBB, Bugtracker Funktion "Zeige Bug Nr. X", ...) sollten per GET realisiert werden, damit man die URLs einfacher weitergeben kann.

Was natürlich auch wichtig ist, ist Formulare als Formulare zu implementieren und Links als Links. Vermeiden sollte man also z.B. "Dropdownmenüs" mit <select>, weil Suchmaschinen keine Formulare abschicken (um nicht ungewollt Aktionen wie das Abstimmen in Umfragen auszulösen) und somit auch die über solche Menüs erreichbare Seiten nicht finden (bei Javascript erst recht nicht). Aus dem gleichen Grund sollte man auch keine Aktionen wie das Eintragen/Löschen von Daten oder verschicken von Kontakt-Emails über einfache <a href> Links zugänglich machen - nicht daß einen Suchmaschinen durch das bloße aufrufen dieser Seiten zumüllen :roll: .

Verfasst: 16.09.2005 23:19
von Martin Truckenbrodt
Hallo Pyramide,
Deine Worte machen mich als PHP Programmier Anfänger natürlich nachdenklich.

Könntest Du Dir das Skript unter http://www.martin-truckenbrodt.com/cgi/phpBB2/phpmn.php mal anschauen und ein bißchen rumklicken.

Als nicht eingeloggter (bzw. nicht registrierter) Besucher kann man IMO keine Daten verändern.
Oder siehst Du hier konkreten Handlungsbedarf, den ich als Neuling nicht erkenne?

Bin froh über jede konstruktive Kritik!

Nachtrag:
Ich habe gerade das neue Release online gestellt. Link siehe Signatur.

Gruß Martin