Problemlösung gesucht: Weiterleitung per header()

S-lord

Mitglied
Da der Titel sonst zu lang geworden wäre präzisiere ich mich erst hier:

Ich habe eine Löschfunktion für meine Seite geschrieben, womit Kommentare, Shouboxeinträge und News gelöscht werden können. Funktioniert auch super. Am Ende des Scriptes soll die Startseite aufgerufen werden. Da liegt das Problem. Strukturiert ist meine Seite folgendermaßen:

In der index.php wird immer abgefangen, welche Angabe beim link gemacht wird:

index.php?link=news

Wenn nun etwas gelöscht wird ist es so, dass das Löschscript an einer Stelle in der index.php per include eingefügt wird.

PHP:
switch($link) {
					case 'news':
						if(isset($_GET['id'])) {
						  include('includes/comments.php');
						} else {
						  include('includes/news.php');
						}
						break;
      				case 'submitnews':
					  	require('includes/submitnews.php');
                		break;
					case 'delete':
					  	include('includes/deleteentry.php');
                		break;
      			  	default:
						include('includes/news.php');
               			break;
      			  }

Dieses Script sucht sich dann aus dem übergebenen Link die Variablen wie etwa die id des Eintrages heraus und löscht dann auch erfolgreich den betroffenen Eintrag.

Ein Beispiellink:
index.php?link=delete&item=news&id=8

Teil vom Script:
PHP:
	session_start();
	$item = $_GET['item'];
	$id = $_GET['id'];
	/*
        Hier fehlt ein Stück Code, ist auch irrelevant
       */
       $sql = "DELETE FROM " . $item . " WHERE id = '" . $id . "'";
	/*
        Hier fehlt ein Stück Code, ist auch irrelevant
       */
		mysql_close($verbindung);
       // Wenn alles geklappt hat =>
		$_SESSION['meldung'] = 'Der gewünschte Eintrag wurde gelöscht!';
		$_SESSION['farbe'] = 'positiv';
		header('Location: ../index.php');
	} else { // ansonsten, eben bei Fehlern =>
		$_SESSION['meldung'] = 'Es wurde kein zu löschender Eintrag angegeben!';
		$_SESSION['farbe'] = 'negativ';
		header('Location: ../index.php');
	}
?>

Da das Script ja aber nur in der index.php eingefügt ist durch include, nicht aber direkt aufgerufen wird, scheitert es die index.php per header('Location: ../index.php'); aufzurufen.

Wie bekomme ich es nun hin, dass ich die per GET bekommenen Variablen im Script verarbeiten und trotzdem nach Ablauf des Scriptes die index.php ohne Parameter automatisch aufrufen lassen kann? Ich kann natürlich auch die Werte an die .php Datei in der das Script enthalten ist direkt weitergeben, aber dieses direkte Ansteuern ist mir nicht so lieb.

Vielen Dank für eure Hilfe, wenns nicht klappt, steuer ich es eben direkt an.^^
 
Moin,

es scheint, als wäre der Pfad dein Problem.
Wenn dies Skript in der index.php eingebunden ist(derselben, zu der du weiterleiten willst), sollte dies reichen:
Code:
header('Location: index.php');
 
Moin,

es scheint, als wäre der Pfad dein Problem.
Wenn dies Skript in der index.php eingebunden ist(derselben, zu der du weiterleiten willst), sollte dies reichen:
Code:
header('Location: index.php');

Natürlich habe ich das zuvor auch schon probiert, aber da es bei einem anderen Script ähnlich ist, habe ich es erst einmal stehen lassen. Ich habe auch eine absolute Adresse versucht, klappt aber leider nicht!
Wichtig: Alles, was ansonsten um dieses header(); angewiesen wird wird auch ausgeführt, also liegt es an keinem Syntaxfehler o.Ä.. Habe bereits mit echo usw. getestet, wo das Problem liegt.
Gibt es vielleicht Einschränkungen zur Verwendung von header();?
 
Entschuldige meine ketzerische Frage. Wozu eine weiterleitung mittels Header?
Du kommst ja nachher sowieso auf index.php zurück und kannst dort deine Variablen auswerten...
 
Entschuldige meine ketzerische Frage. Wozu eine weiterleitung mittels Header?
Du kommst ja nachher sowieso auf index.php zurück und kannst dort deine Variablen auswerten...

Ne ansonsten komme ich nur auf die normale Index zurück, wenn ich im Menüpunkt wieder auf News oder irgendetwas anderes klicke. Ansonsten bleibt das Feld, in dem included wird leer, da er ja dort das deletescript einfügt, welches aber keine Ausgabe hat.

=>

Ich hab da mal was vorbereitet, guckt euch die 3 Bilder in der Reihenfolge an:
http://img5.imagebanana.com/view/f5wkn52t/test_01.jpg
http://img5.imagebanana.com/view/fceyxrkh/test_02.jpg
http://img5.imagebanana.com/view/d3tigfcw/test_03.jpg
 
Ich hatte das irgendwie falsch verstanden, glaub ich.

Was wiilst du nun....von wo aus weiterleiten, um was zu tun?

Fakt ist: wenn du weiterleitest per Header, musst du an die dort angegebene URL auch den QUERY_STRING anhängen, ansonsten sind sie Variablen futsch.
 
Also, da du nicht mit Objekten und Funktionen arbeitest...

In den includierten Dateien den HTML-Teil nicht mittels echo ausgeben sondern in eine Variable speichern.
Im index.php kannst du dann je nachdem den Code ausgeben oder nicht.
 
Ich hatte das irgendwie falsch verstanden, glaub ich.

Was wiilst du nun....von wo aus weiterleiten, um was zu tun?

Fakt ist: wenn du weiterleitest per Header, musst du an die dort angegebene URL auch den QUERY_STRING anhängen, ansonsten sind sie Variablen futsch.

QUERY_STRING?
Ich bin auf index.php?link=delete............
Und möchte, dass die index.php ohne Parameter neu geladen wird, so dass, da ohne Parameter als default Fall meiner switch-case Anweisung in der index einfach die news.php per include an selber Stelle geladen wird.
 
S-lord hat gesagt.:
QUERY_STRING?
Ich bin auf index.php?link=delete............
Und möchte, dass die index.php ohne Parameter neu geladen wird, so dass, da ohne Parameter als default Fall meiner switch-case Anweisung in der index einfach die news.php per include an selber Stelle geladen wird.

Ne ansonsten komme ich nur auf die normale Index zurück, wenn ich im Menüpunkt wieder auf News oder irgendetwas anderes klicke. Ansonsten bleibt das Feld, in dem included wird leer, da er ja dort das deletescript einfügt, welches aber keine Ausgabe hat.

Es wäre an der Zeit, dass du dich entscheidest ;)
 
Zurück