DogKult Geschrieben 21. März 2006 Geschrieben 21. März 2006 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 Zitieren
geloescht_JesterDay Geschrieben 21. März 2006 Geschrieben 21. März 2006 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 http://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] Zitieren
McMaiers Geschrieben 21. März 2006 Geschrieben 21. März 2006 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 Zitieren
DogKult Geschrieben 21. März 2006 Autor Geschrieben 21. März 2006 @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 Zitieren
McMaiers Geschrieben 21. März 2006 Geschrieben 21. März 2006 Hi bei mir wird dann geschaut ob das Query ein ergebnis zurückliefert. Wenn ja, is es eh ok, und wenn nicht dann kommt eine selbst definierte 404 Fehler Page ... :floet: Zitieren
DogKult Geschrieben 21. März 2006 Autor Geschrieben 21. März 2006 habs mir jetzt einfach gemacht. habe einfach eien zuzätliche Mysql spalte gemacht wo die $sys vaiablen drinsteht Super easy und geht Das mit der selbstgenerierten Fehlerseite ist auch noch eine Idee ^^ Dann hat er egal welche Datei er versucht aufzurufen immer die Startseite 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 Zitieren
geloescht_JesterDay Geschrieben 21. März 2006 Geschrieben 21. März 2006 auf sowas musst du nicht hinweisen. wozu gibts denn die suchmaschinen datein? Hm... hab jetzt lange gegrübelt... aber was meinst du mit "suchmaschinen datein"? Etwa die robots.txt? :confused: Zitieren
Empfohlene Beiträge
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.