Was kann man während der bezwungenen Fahrt mit der S-Bahn alles erreichen, weil man sich nicht aufs Auto fahren konzentrieren muss? Man findet die Lösung auf das Problem...
Im Prinzip ganz simpel, weder muss ich/irgendeiner jede PHP öffnen und bearbeiten noch ist die Anpassung an neue Mods schwer.
Lösung:
EIn mehrdimensionaler Array mit Überprüfung auf Exitenz in der Datenbank...
Ein Beispiel an der Newsseite. ( Es sind ja immer Zahlen, die eine Anzeige bewirken bsp. user-details-1
<?php
// der Mega Array
// Struktur bezogen auf die URL nach index.php?{menu0}-{menu1}....
/*
menu0 = welcher Array (index.php?news-23 = "news")
jetzt wird der Array ausgelesen mit der Reihenfolge
TABLE, menu1, menu2, menu3,.... je nach dem wieviele menus ab der URL hängen
*/
$array = array(
"news" => array("prefix_news" , "news_id"),
"user" => array("prefix_user" , "details" , "id"),
....
);
$array2 = array(
"privmsg" => array("prefix_pm", "privmsg" , "showmsg" , "id"),
....
);
// Überprüfung
function check_url_exist(){
global $array, $array2;
$url = $_SERVER['QUERY_STRING']; // URL
$url_teil = explode("-", $url); // URL splitten
if( !is_array( $array[$url_teil[0]] ) ){
return (false);
break;
}
$nutz = "array";
if( is_array( $array2[$url_teil[1]] ) ) $nutz = "array2";
if( count($url_teil) <= count($$nutz[$url_teil[0]] )){ // hat URL genauso viele Teile wie der Array
$url_exist = false;
for($i=1;$i<count($url_teil);$i++){
$erg = db_num_rows(db_query("SELECT * FROM ".$$nutz[$url_teil[0][0]]." WHERE ".$$nutz[$url_teil[0][$i]]." = ".$url_teil[$i]));
if( (int( $url_teil[$i] ) AND $erg > 0) xor ( $$nutz[$url_teil[0][$i]] == $url_teil[$i]) ){
$url_exist = true;
}else{
return (false);
break;
}
}
return ($url_exist);
}
return (false);
}
?>
Ich denke mal das wars, jetzt muss die Datei nur noch in der index.php geladen werden und die Funktion check_url_exist() ausführen und wenn "true" zurück kommt, existiert die Page.
Ich hoffe ich hab in der Eile keine Fehler eingebaut.^^
*EDIT: Mit fällt das gerade ein, dass noch ein 2te Array fehlt für sachen wie forum-privmsg, user-gbook
Zuletzt modifiziert von boehserdavid am 15.05.2008 - 17:18:54