$_GET Regeln für die Variable ?

Tucker

Erfahrenes Mitglied
Gibt es irgendwelche Regeln für die Variable $_GET?
Oder darf man z.B. nur eine bestimmte Anzahl an Variablen an die URL anhängen?

Ich frage dies, weil ich grad voll stutzig geworden bin. Schreibe zur Zeit an einem Forum und muss dort teilweise 4-5 Variablen an die Url anhängen. Dann kommen die Fehlermeldungen, dass die Variablen nicht exostieren.

GHelft mir bitte.
 
Die Anzahl der Variablen ist egal.
Entscheidend ist die Gesamt-Länge des Query-Strings, die ist(bei jedem Browser unterschiedlich) begrenzt....mehr als 2KB dürfte da kritisch werden.

Wenn es weniger ist, prüfe lieber erst, ob die Variablen korrekt in der URL stehen und richtig abgefragt werden.
 
Code:
http://www.cabe2010.de/a_jugend/forum/add_topic.php?&beitrag_id=1aktion=moderieren&forum=Anregungen&thread_id=1

Das steht in der URL, mehr nicht. Trotzdem sagt es mit, dass entweder die thread_id oder die aktion nicht existiert.

Ich könnte ja mal das Script posten, is eben nur arg lang.
 
An der Anordnung hat sich nichts geändert, fatalus' Vorschlag ist nur korrekt geschrieben.
Code:
http://www.cabe2010.de/a_jugend/forum/add_topic.php?&beitrag_id=1&aktion=moderieren&forum=Anregungen&thread_id=1
                                 [...]add_topic.php?beitrag_id=1&aktion=moderieren&forum=Anregungen&thread_id=1
 
Ja, bei mir stand das & nicht. Es aber trotzdem nicht.
Jetzt reicht es mir. ich geb euch noch mal due url:
Code:
http://www.cabe2010.de/a_jugend/forum/add_topic.php?beitrag_id=0&aktion=mod&forum=Anregungen

Und hier das zugehörige Script.
PHP:
<?php
if ($_GET["aktion"] == "mod")
{
	if (isset($_GET["beitrag_id"]= && isset($_GET["forum"]))
	{
	
		/*******************/
		/* Thema schließen */
		/*******************/
		
		if ($_POST["moderieren"] == "close")
		{
			...
		}
		
		/*********************/
		/* Thema wideröffnen */
		/*********************/
		
		elseif ($_POST["moderieren"] == "open")
		{
			...
		}
		
		/*****************/
		/* Thema löschen */			
		/*****************/
		
		elseif ($_POST["moderieren"] == "delete" && isset ($_GET["beitrag_id"]) && !isset($_GET["thread_id"]))
		{
			...
		}	
		
		/*******************/
		/* Antwort löschen */
		/*******************/
		elseif (isset($_GET["thread_id"]) && $_POST["moderieren"] == "delete")
		{
			...
		}		
	}
	else
	{
			$meldung.="Es wurden nicht alle Variablen weitergegeben.";
			if (!isset($_GET["beitrag_id"]))
			{
				$meldung.="<br>die beitrag id";
				$meldung.="<br>".$_GET["beitrag_id"];
			}
			elseif (!isset($_GET["forum"]))
			{
				$meldung.="<br>das Forum";
			}
			$meldung=urlencode($meldung);
			ob_start();
			header ("Location: ../index.php?datei=index&pfad=forum&forum=".$_GET["forum"]."&beitrag_id=".$_GET["beitrag_id"]."&beitrag=".$_POST["titel"]."&meldung=".$meldung."");
			ob_end_flush();
		}		
}
else
{
	if (isset($_GET["forum"]) && isset($_POST["verfasser"]) && isset($_POST["v_mail"]) && isset($_POST["nachricht"]) && isset($_POST["titel"]))
	{
		if ($_GET["aktion"] != "antworten")
		{
			
			...
		}
		else
		{
			
			...
		}
					 
	}
	else
	{
		$meldung="Es fehlt eine Variable";
		$meldung=urlencode($meldung);
		header ("Location: ../index.php?datei=index&pfad=forum&forum=".$_GET["forum"]."&beitrag_id=".$_GET["beitrag_id"]."&beitrag=".$_GET["beitrag"]."&meldung=".$meldung."");
	}
}
?>

Vielleicht hab ich ja irgendwo im Script ein Fehler. Der müsste dann aber so ziemlich am Anfang oder am Ende liegen.

Edit: Ich habe den Quellcode noch mal eingeschränkt. Es stehen nur noch die If- CLauses da. Vielleicht kann nun jemand erkennen, waum die entnahme nicht .
 
Zuletzt bearbeitet:
lass dir $_GET MAL PER print_r() ausgeben...dann siehst du, was ankommt....du wirst sehen, dass alles da ist.

Ansonsten.....

if($_GET["beitrag_id"] && isset($_GET["forum"]))
.....mit if($_GET["beitrag_id"] ) prüfst du, ob diese Variable TRUE ist...

Da diese Variable jedoch 0 ist...was für PHP gleichbedeutend ist mit FALSE, trifft diese Abfrage nicht zu, und du kommst in den else-Abzweig.

Wenn in dem else-Abzweig steht, dass eine Variable fehlt, ist das dein Bier....
die korrekte Meldung wäre dort:
Die Beitrags-ID ist "FALSE" oder es wurde kein Forum angegeben.....denn dies sind die Bedingungen, unter welchen man in diesen Abzweig kommen kann.
 
Zurück