Wie kann ich mit PHP eine 301 Weiterleitung einleten?

Hallo,

Wie kann ich mit PHP eine 301 Weiterleitung einleten?

Hintergrund: Ich übergebe an eine Detailseite per Get sowohl des Titel, als auch die id des Artikels, der angezeigt werden soll. Das funktioniert auch bestens, jedoch suche ich in der Datenbank nur nach der id

[code]$id = $_GET[‘id’];

$abfrage = "SELECT -XXXX- FROM -XXXX- WHERE id = $id ";[/code]

Den Titel übergebe ich leicht geschönt mit folgender “Funktion”:

$gesucht = array(" ", "ä", "ü"); $ersetzen = array("-", "ae", "ue"); $newphrase = str_replace($gesucht, $ersetzen, $row->title);

In der Detailseite steht folgender Code:

[code] $gesucht = array(" “, “ä”, “ü”);
$ersetzen = array(”-", “ae”, “ue”);
$newphrase = str_replace($gesucht, $ersetzen, $row->title);

	$title = $_GET['title'];
	
	if ($newphrase != $title)
	{
		echo "header(’HTTP/1.1 301 Moved Permanently’);
		header(’Location: localhost/ebook/news.php?title=".$title."&id=".$id."’);";
 	}[/code]

Das Problem ist, dass so nur der Code in der If Schleife angezeigt, aber nicht weitergeleitet wird.

Hintergrund des Ganzen: Ich möchte den Titel in der URL haben, jedoch soll man nicht mit verschiedenen, manipulierten Texten, Duplicate Content erstellen können.

Bin über jede Hilfe dankbar,

Tim

Echo gibt nunmal Strings aus…
http://if-schleife.de/

Ja, das ist schon klar.

Das Problem ist ja, dass der Aufruf von
news.php?title=Gaaaanz-wichtig&id=3 und
news.php?title=Ganz-wichtig&id=3 das selbe ausliefert.

Die Ausgabe kommt weiter unten in einer while-Schleife.

[code] $id = $_GET[‘id’];

	$abfrage = "SELECT id, title, introduction, content FROM blog WHERE id = $id ";
	
	
    $ergebnis = mysql_query($abfrage);
	

	$gesucht = array(" ", "ä", "ü");	
	$ersetzen = array("-", "ae", "ue"); 
	$newphrase = str_replace($gesucht, $ersetzen, $row->title);
    
	$id = $_GET['id'];
	$title = $_GET['title'];
	
	if ($newphrase != $title)
	{
		echo "header(’HTTP/1.1 301 Moved Permanently’);
		header(’Location: localhost/ebook/news.php?title=".$title."&id=".$id."’);";
 	}
	while($row = mysql_fetch_object($ergebnis))
           {
           Ausgabe
           }
    [/code]

Ich will ja vor der Ausgabe sicherstellen, dass die URL mit diesem Inhalt einmalig ist.

Hat jemand eine bessere Idee?

MfG

Tim

// Edit: Mit fällt gerade auf, dass ich oben garnicht mit $row->title darauf zugreifen kann.

Nee, dein Problem ist, dass du nicht den header sendest, sondern PHP-Code mit echo ausgibst.:

[quote] echo "header(’HTTP/1.1 301 Moved Permanently’); header(’Location: localhost/ebook/news.php?title=".$title."&id=".$id."’);";[/quote]
http://www.google.de/search?q=php+header+301

  • Location erwartet einen absoluten URI
  • Informiere dich über Sql-Injections.

[quote]// Edit: Mit fällt gerade auf, dass ich oben garnicht mit $row->title darauf zugreifen kann.
[/quote]
Weil du das Ergebnis nicht fetchst.

Ok, um die MySQL Injection kümmer ich mich, danke für die Info :ps:

Wie würdest du den Titel in die URL bekommen?

Tim

http://support.google.com/webmasters/bin/answer.py?hl=de&answer=139394

// Gelöst