Titel vergleichen

tommy1967

Mitglied
Hallo,

ich habe mal eine Frage.

Ich habe in der URL einen Titel, der automatisch für jede Seite aus der Datenbank geholt wird.

Nun habe ich aber ein Problem, denn die Seiten lassen sich mit und ohne den Titel im Link aufrufen.

Beispiel:

id-5197-seitentitel.html (nur so soll das aufrufbar sein)
id-5197-.html (so nicht)

Aber auch wenn ich beim Titel einfach einen Buchstaben weglasse (id-5197-seientitel.html , wird die Seite noch aufgerufen.

Wie kann man sowas verhindern? Kann man das vergleichen?

Also wenn der Titel in der URL identisch mit dem Titel in der Datenbank ist, URL aufrufen.

Wenn der Titel in der URL nicht identisch mit dem Titel in der Datenbank ist, etwas anderes machen.

Leider habe ich keine Ahnung, wie ich das angehen muss.
 
Zuletzt bearbeitet:
hab nicht viel Zeit aber so in etwas sollte es möglich sein...
PHP:
<?php
$arrUrlFragments = parse_url(getenv("HTTP_REFERER"));
$SplitPath = split("-",$arrUrlFragments["path"])
$SplitFile = split(".", $SplitPath[2])

$SplitFile[0] sollte nun den Namen enthalten, wenn nicht kannst du dir ja nun dem entsprechende fehlerbehandlungen ausdenken...
 
Also wenn der Titel in der URL identisch mit dem Titel in der Datenbank ist, URL aufrufen.

Wenn der Titel in der URL nicht identisch mit dem Titel in der Datenbank ist, etwas anderes machen.
Der Ansatz ist doch schon richtig. Das „etwas anderes“ kannst du durch eine permanente Weiterleitung auf die richtige Adresse ersetzen.
 
Hmmm, also so ganz schnalle ich das nicht.

Wie vergleiche ich den Titel denn?

Ich hole den Titel per Abfrage aus der Datenbank. Gut, das ist ja kein Problem. Aber wie schaut die Abfrage für den Vergleich aus?

Eine IF-Abfrage? Oder was genau muss ich tun?
 
PHP:
//Name der gewollten Seite
$arrUrlFragments = parse_url(getenv("HTTP_REFERER"));
$SplitPath = split("-",$arrUrlFragments["path"])
$pathName = split(".", $SplitPath[2])
//Datenbankabfrage:
$q = "SELECT id FROM site WHERE path = '$pathName'";
$res = mysql_query($q);

//Header-Infos
$host  = $arrUrlFragments['scheme'];
$uri   = rtrim(dirname($arrUrlFragments['host']), '/\\');

if( mysql_fetch_array($res) ){
  //Diese Seite gibt es
  header("Location: http://$host$uri/" .getenv("HTTP_REFERER"));
}else{
  //Diese Seite gibt es NICHT
  header("Location: http://$host$uri/index.php");
}

Ungetestet, aber ich denke du erkennst, wie es sein sollte...
 
Guten Morgen,

einer schreibts falsch und der andere schreibts falsch ab. Nen Lehrer würde sich jetzt freuen. :rolleyes: Blöde Frage, wieso kommt Ihr auf die Idee das $_SERVER['HTTP_REFERER'] da irgendwie für nen Vergleich taugt? Da steht die Seite drin von der aus man auf die nächste kommt und die ist hier vollkommen irrelevant. Gesucht wird hier nach $_SERVER['REQUEST_URI']!

Also hier mal das Beispiel:
PHP:
$pagetitel = "http://vollständiger Pfad zu/id-5197-seitentitel.html";
If ($_SERVER['REQUEST_URI'] == $pagetitel){
/** Aufruf erfolgreich und demnach Seite anzeigen **/
}else{
/** Aufruf nicht erfolgreich und demnach entweder richtig umleiten oder zurück zu index **/
header("Location: http://www.irgendwas.de/index.php")
}
(Bitte darauf zu achten das $_SERVER['REQUEST_URI'] den vollständigen Pfad zur angeforderten Seite enthällt.) Obiges Beispiel muss natürlich in jede Seite in der geprüft werden soll und sowohl $pagetitel als auch die header URL sind anzupassen. Ansonsten sollte es das tun was ursprünglich mal die Fragestellung war.
Achja, hier wird keine URL Zerlegt insofern mags nicht so schön sein wie obige Beispiele, macht aber nix :)
 
Ich habe das mal so getestet.

Code:
$pagetitel = "http://www.meineDomain.de/id-1234-seitentitel.html";
If ($_SERVER['REQUEST_URI'] == $pagetitel){
echo"Ja";
}else{
echo"Nein";
}

Ausgabe ist immer ein "Nein", ganz egal ob die URL und der Titel richtig oder falsch sind.
 
Zurück