Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Also ich habe folgende Problematik.

Ich habe ein cms System gebaut. Was mir noch fehlt, ist das man selber die Startseite festlegt. Alle neu generierte seiten urls werden in der mysql gespeichert.

Diese ist so aufgebaut:

ID | Seitentitel | URL | Linkname | Start |

in der spalte url steht z.b. ?sys=cms&side=1 als beispiel. Das ist die url für die links auf der Page halt. In der Zeile Start steht halt 1 für = Startseite oder 0 für = nicht start seite.

Der komplette Code ist in einer Datei. ist etwas bei 800 Zeilen mit lauter if anweisungen ect.

Es gibt wirklich nur 4 Dateien: header,containt(code),footer und settingdatei

Ich muss nun irgendwie sagen wenn übergebene varibalen oder keine variablen in url dann rufe die startseite auf.

Filter hab ich dafür schon fertig das er überprüft ob die seite da ist. Nun ist nur die Frage wie ich -> ?sys=cms&side=1 aus der MYsql in -> $sys="cms";side="1"; umwandle. vorallem alle urls sind anders.

Ich möchte ungern mit reload arbeiten und die header bearbeiten. Weil dann kurz kein ciontaint auf der Seite zu sehn ist! Und das ist nicht so gut wenn man das sieht :)

Bin über jede hilfe dankbar. Hab blackout :(

Geschrieben

in der spalte url steht z.b. ?sys=cms&side=1 als beispiel.

[...]

Filter hab ich dafür schon fertig das er überprüft ob die seite da ist. Nun ist nur die Frage wie ich -> ?sys=cms&side=1 aus der MYsql in -> $sys="cms";side="1"; umwandle. vorallem alle urls sind anders.

also das mit den Parametern ist schonmal für Suchmaschinen schlecht ;) Ein Robot nutzt keine Parameter, eine Suchmaschine findet also immernur deine Startseite (ganz ohne Parameter).

Deine Parameter bekommst du mit print_r[$_GET] (also ausgegeben <ahttp://devipb.fachinformatiker.de/uploads/emoticons/default_wink.png' alt=';)'> ) Mit $_GET["sys] bekommst du den sys-Parameter etc. $sys ist bääh, weil Register Globals dafür notwendig ist und man das nicht mehr macht.

Also wegen den Suchmaschinen: Entweder nutzt du mod_rewrite (beim Apache oder etwas ähnliches beim IIS) um deine URL aufzulösen. Die URL würde dann z.B. so aussehen: index.php/sys,cms/side,1

siehe: http://www.modrewrite.de/

Oder du machst das selber mit php, dann muss aber AcceptPathInfo in der config auf On sein. Die URL oben ruft dennoch index.php auf, dort musst du allerdings zuerst den Request-String auseinanderfriemeln.

EDIT:

Hier mal etwas Code, wie ich das gemacht hab (SEF = SearchEngineFriendly):

(eine Url sieht bei mir wie oben aus, nur dass ich noch einen Namen.html hinten anhänge (einfach wegen der Optik))


function SEFToURL()
{

$URLString = $_SERVER["REQUEST_URI"];
// Portalseite und erstes / entfernen
$sef_first_pos = strpos($URLString, "/", 1);
$URLString = substr($URLString, $sef_first_pos+1);
// letztes / und angehängter Seitenname entfernen

$sef_last_pos = strrpos($URLString, "/");
$URLString = substr($URLString, 0, $sef_last_pos);

// Parameter aufteilen
$arParam = explode('/', $URLString);
// Alle Param + Werte auswerten
for($x=0;$x<count($arParam);$x++)
{
$value = split(",", $arParam[$x]);
$_GET[$value[0]] = $value[1];
}

}
[/php]

Geschrieben

Hi ich hab mir auch vor einiger Zeit ein CMS gebastelt und hab mir darüber natürlich auch gedanken gemacht!

Meine Lösung ist folgende:

ich hab in der Tabelle zusätzlich nen Flag "startpage" mit 0 als defaultwert.

Bei der gewünschten Startseiet wird der Wert im CMS admin Menu mittels einer Checkbox auf 1 gesetzt und alle anderen auf 0.

Der pageaufruf sieht sio aus:

www.xyz.de

Sollte nun beim pageaufruf keine pid übergeben werden (zb. xyz.de?pid=34 )

dann soll er automatisch die zeile auslesen wo der flag auf 1 ist

if(isset($_GET[pid])

{

$sql = "SELECT * FROM tabelle WHERE pid = $_GET[pid]";

}

else

{

$sql = "SELECT * FROM tabelle WHERE startpage = 1";

}

dann Query auf $sql

Das funktioniert einwandfrei :)

cu mcmaiers

Geschrieben

@JesterDay

das passt,das weiss ich. auf sowas musst du nicht hinweisen. wozu gibts denn die suchmaschinen datein? außerdem ist das nicht mein prob :)

@McMaiers

danke das hab ich soweit ja auch schon. aber was ist wenn der user ?pid=sdfwersdr aufruft. die gibt es ja nicht. dann ist aber get[pid] gesetzt und er ruft nicht deine default seite auf.

bei mir wird ja nochmehr übergeben als beispielsweise pid :)

Geschrieben

habs mir jetzt einfach gemacht. habe einfach eien zuzätliche Mysql spalte gemacht wo die $sys vaiablen drinsteht :D

Super easy und geht :P

Das mit der selbstgenerierten Fehlerseite ist auch noch eine Idee ^^ Dann hat er egal welche Datei er versucht aufzurufen immer die Startseite :D bzw eine weitereltiung drauf :)

was ich ja noch lustig finde ist das ich auf dem apache gdlib hab um thumb's von Bildern zu erstellen.

Auf Windowssystemen gehts 1a aber auf linux sieht man garnix lol

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...