Current Page:  
Forum » Programmierung » Ilch Mods » Seite vor dem Aufrufen auf Existenz prüfen


STAND_30_05_08 - Seite vor dem Aufrufen auf Existenz prüfen
[BU]BöhserOnkel männlich

Admin
und Administrator

General of The Army


User Pic


Zurzeit:  aktiv
Dabei seid:  16.11.07
Beiträge:  156
Warnungen:  0
# 17.05.2008 - 14:49:04
    zitieren



Hey, Leutz!

Stand 30.05.2008 21:04 Uhr

BENUTZUNG AUF EIGENE GEFAHR - ICH ÜBERNEHME KEINE HAFTUNG FÜR SCHÄDEN, weil die Funktion noch nicht pefekt ist...

Es gibt ja leider noch ein paar Lücken im Script.
Bsp:
index.php?news-10000000000000000 existiert und man kann Kommentare posten
index.php?user-details-10000000000000000000 gibts auch, mit Fehlermeldungen
index.php?gbook-show-100000000000000000 auch da, Kommetare möglich
....

Wen das stört, und nicht will das einer einem die ganze DB mit Mist zuballert, kann sich diese Funktion zu nutzen machen.

1. 2 Neue Dateien url.php und url_array.php
include/includes/func/url.php
 Php von Datei nclude/includes/func/url.php
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
  <?php
#   Copyright by David Schwarz
#   Support www.baduncles.de

defined ('main') or die ( 'no direct access' );

function 
check_url_exist(){
 include(
"url_array.php");
 
$url $_SERVER['QUERY_STRING']; // URL
 
$url preg_replace("^-p([0-9]+)^"""$url);
 
$url_teil explode("-"$url); // URL splitten
 
$url_exist false;
### Seiten mit einem Teil
 
if( count($url_teil) == XOR count($url_teil) == ){
     if( 
file_exists("/include/contents/".$url_teil[0].".php") OR $url_teil[0] == "start" OR $url_teil[0] == "" ){
      
$url_exist true;
     }else{
   return(
false);
   break;
  }
 }else{
### Statische Seiten mit Optionalem Ende
  
$check "";
  for(
$a=0;$a<count($url_teil);$a++){
   
$check .= $url_teil[$a]."-";
   
$b $a+1;
   if( 
array_key_exists($check$static_sites) OR in_array($check$static_sites) ) {
      if( 
$url_teil[$b] != "" AND is_array($static_sites[$check]) ){
     if( 
in_array($url_teil[$b]  ,$static_sites[$check]) ){
         
$a $b;
        
$url_exist true;
     }else{
        return(
false);
      break;
     }
    }
    
$url_exist true;
   }elseif(
$b == count($url_teil)){
    
$url_exist false;
   }
  }
 }
 if(
$url_exist){
     return(
true);
     break;
 }

 
$nutz = $$url_teil[0];

 if( 
is_array($nutz[$url_teil[1]]) ){ // Unterarray prüfen
  
$nutz $nutz[$url_teil[1]];
 }elseif( 
is_array($nutz['ID']) AND preg_match('/[0-9]+/'$url_teil[1]) ) {
     
$nutz $nutz['ID'];
 }

 if( 
is_array($nutz) ){
  
$max max(count($nutz),count($url_teil)); // maixmaler Wert der URL
  
for($i=1;$i<$max;$i++){
   
$b $i-1;
   if( (
is_int($nutz[$i]) AND ($url_teil[$b] == "" OR $nutz[$i] == $url_teil[$b] ) ) OR
       ( (
$nutz[$i] != "" AND $url_teil[$b] != "") AND
         ( ( 
$nutz[$i] == $url_teil[$b] )           OR
           ( @
db_num_rows(db_query("SELECT * FROM ".$nutz[0]." WHERE ".$nutz[$i]." = '".$url_teil[$b]."'")) >= )
          )
        )
      ){
    
$url_exist true;
   }else{
    return(
false);
    break;
   }
  }
 }
### Sicherheits else wegen Seiten, die noch keinen Array haben,kann später gelöscht werden 
 
else{
     return(
true);
     break;
 }
### Sicherheits else wegen Seiten, die noch keinen Array haben,kann später gelöscht werden
 
return ($url_exist);

}

?>


 Php von Datei nclude/includes/func/url_array.php
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
  <?php

defined 
('main') or die ( 'no direct access' );

$static_sites = array("start","news-atom-","news-rss-",
                      
"user-regist-" => array(2),"user-2-","user-3-","user-13-","user-8-",
                      
"user-suche-""user-login-","user-logout-""user-profil-" ,
                      
"user-usergallery-""user-remind-",
                      
"gbook-" => array(1,2),
                     );
$map = array("prefix_user""map""uid""id");
$news = array("prefix_news""news""news_id");
$gbook = array("prefix_gbook""gbook""show""id");
$phgstats = array("prefix_phgstats""phgstats""id"); ### Nur auf baduncles.de Verfügbat, nicht verwenden
$user = array("details"     => array("prefix_user""user""details" "id"),
              
"mail"        => array("prefix_user""user""mail" "id"),
              
"usergallery" => array("prefix_user""user""usergallery" "id"),
              );

?>


Erklärung:
Variable = Name der PHP Datei im include/contents Ordner ( news.php => $news )
Jetzt wird etwas komplizierter

Arrayaufbau

!!! IMMER DEN LÄNGSTEN LINK NEHMEN !!!

$static_sites ist für statische Seiten, wie user-regist-2 oder gbook-1, gibt es mehrere statische Seiten mit einer variablen Endung, müssen diese in einen Array gepackt werden. Siehe gbook

Gibt es zu einer Seite keinen Unterordner/Unterseiten wie bei news.php ist es ganz einfach
$news = array("TABELLENNAME in der DB", "1. Teil der URL = news", "2. Teil der URL = eine ID aus der DB = FELDNAME = news_id" ) ;
Wenn ein Teil der URL variable ist muss der Bezug zur DB genommen werden. Ist es jedoch ein fester Wert und eine Zahl wie bei user-regist-2 dann intval(ZAHL).

Jetzt kommt der schwere Teil, gibt es einen Unterordner, wie bei user.php müssen dafür einzelne Arrays definiert werden. Und dann wieder ganz normal.
Bsp:
$user = ("NAME des Verweises zur Datei im Unterordner = details" => array("TABELLENNAME in der DB", "1. URLteil = user", "2. URLteil = details", "3. URLteil = id , weil wieder dynamisch" ) ,
"regist" => array( "NIX weil kein DB bezug", "user", "regist", JETZT ist es ein fester Wert und zwar 2 der vorkommen kann, also nur intval(2) ),
) ;

2. In die include/includes/loader.php eintragen
 Php
1:
2:
3:
4:
5:
  <?php
...
# load something else
require_once ('/include/includes/func/url.php');
?>


3. Jetzt die Änderung für die MultiPages, ganz wichtig
include/includes/func/db/mysql.php
 Php von Datei include/includes/func/db/mysql.php
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
  <?php
...
function 
db_make_sites ($page ,$where ,$limit ,$link ,$table$anzahl NULL) {
    
  
$hvmax 4// hinten und vorne links nach page 
    
$maxpage ''; if ( empty ($MPL) ) { $MPL ''; }
    if ( 
is_null $anzahl ) ) {
    
$resultID db_query "SELECT COUNT(*) FROM prefix_".$table." ".$where );    
    
$total    db_result($resultID,0);
  } else {
    
$total $anzahl;
  }

## URL Page /p??? exists
  
if($page "1"){
   
$anfang = ($page-1)*$limit;
   if(
db_num_rows(db_query("SELECT * FROM prefix_".$table." ".$where." LIMIT ".$anfang.",".$limit )) == 0){
?>
<script language="JavaScript" type="text/javascript">
<!--
 location.href="/error.htm";
-->
</script>
<?php
    
unset($anfang);
    break;
   }
  }
## URL Page /p??? exists

  
if ($limit $total) {  
      
$maxpage $total $limit;  
      if (
is_double($maxpage)) {  
          
$maxpage ceil($maxpage);  
        }
        
$ibegin $page $hvmax;
        
$iende  $page $hvmax ;

      
$vgl1 $iende $ibegin;
        
$vgl2 = ($hvmax 2) + 1;
        if ( 
$vgl1 <= $vgl2 ) {
          
$iende $vgl2;
        }
        
$vgl3 $maxpage - ($vgl2 -1);
        if (
$vgl3 $ibegin ) {
          
$ibegin $vgl3;
        }
        
        if (
$ibegin 1) {
          
$ibegin 1;
        }
        if (
$iende $maxpage) {
          
$iende $maxpage;
        }
        
$vMPL '';
        if (
$ibegin 1) {
          
$vMPL '<a href="'.$link.'-p1">&laquo;</a> ';
        }
        
$MPL 'Seite '.$vMPL.'[ ';
        for(
$i=$ibegin$i <= $iende$i++) {  
      if(
$i == $page) {  
                
$MPL .= $i;  
            } else {  
              
$MPL .= '<a href="'.$link.'-p'.$i.'">'.$i.'</a>';
            }
      if (
$i != $iende) {
              
$MPL .= ' | ';
            }
        }
        
$MPL .= ' ]';
        if (
$iende $maxpage) {
          
$MPL .= ' <a href="'.$link.'-p'.$maxpage.'">&raquo;</a>';
        }
  }
    return 
$MPL;

}
?>



4. In die index.php einbinden
Ich denke mal, wenn man das erstmal anfängt und sich das zu den Array ein paar mal durchgelesen hat, kann man das.
 Php von Datei index.php
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
  <?php

#   Copyright by: Manuel Staechele
#   Support: www.ilch.de

define 'main' TRUE );

//Konfiguration zur Anzeige von Fehlern
//Auf http://www.php.net/manual/de/function.error-reporting.php sind die verfügbaren Modi aufgelistet
error_reporting(E_ERROR E_WARNING E_PARSE);
ini_set('display_errors','On');

session_name  ('sid');
session_start ();

require_once (
'/include/includes/config.php');
require_once (
'/include/includes/loader.php');

### Check url exists
if(!check_url_exist()){
?>
<script language="JavaScript" type="text/javascript">
<!--
location.href="/error.htm";
-->
</script>
<?php
 
break;
 }
....
?>


error.htm, dort hochladen, wo auch die index.php und admin.php ist
 Html
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
 <html>
<head>
</head>
<body>
<script language="JavaScript" type="text/javascript">
<!--
alert("Die von Ihnen angeforderte Seite existiert nicht!nSie werden auf die Startseite weitergeleitet.");
location.href="index.php";
-->
</script>

</body>
</html>


NACHTRAG: Ist noch nicht ausgereift, aber auf dem besten Wege dort hin...

Falls was unklar ist oder ihr den array nicht gebastelt kriegt, einfach fragen.

Mit böhsen Grüßen
[BU]BöhserOnkel

"Gli eroi vivono a lungo, ma le leggende non muoiono mai..."

DistanzierungDer Betreiber und die Moderatoren dieses Forums distanzieren sich hiermit ausdrücklich von dem von [BU]BöhserOnkel am 17.05.2008 - 14:49:04 verfassten Beitrag. Sollte dieser Beitrag Ihre Rechte verletzen bitten wir um Benachrichtigung
offline Nachricht senden
offline0 User

offlinemicpt
offlineBiber
offlinelouis123
offline[BU]BöhserOnkel
offlineDaKilla=EFS=

online1 Gast

SiteStatistic 
Visitors
Entirely: 238931
Today: 47
Yesterday: 152
Maximum: 536
Entries
Guestbook: 53
Forum: 
  -Posts: 329
  -Threads: 104
User
Reg User: 105
Mann -Male: 34
Frau -Female: 1
User in Map: 11
Online: 4
... mehr
Today:20 . May . 2012
Time:03 : 51 o'clock
Your IP:38.107.179.236


Biber:
09.05.2012 12:37 Uhr

jop
micpt:
06.05.2012 16:09 Uhr

noch jemand hier auf der seite von den Bad Uncles ??
Bacardi:
19.01.2012 17:42 Uhr

Glückwunsch BöhserOnkel :)
Biber:
03.01.2012 11:15 Uhr

frohes*^^ natürlich
Biber:
01.01.2012 04:30 Uhr

freues neues an alle
Archiv

-=NAM=- Silent Forces Blacktitans

  |  Sitemap  |   Top  |   Search  |   Impressum  |   Contact  |  
Seite generiert in 0.786 Sekunden | Querys: 49
Nach einem Begriff suchen ... Login