Gå til innhold

Har veldig mange filer i et include script


Anbefalte innlegg

Jeg bruker dette include scriptet

<?php
$IncludeDir    = "./inc";
$DefaultPath   = "./inc/index.inc";
$FileExtension = ".inc";

if (isset($page)) {
$page        = stripslashes(strip_tags($page));
$Forbidden1  = ereg("\.\./", $page);
$Forbidden2  = ereg("/", $page);
$IncludePath = $IncludeDir . "/" . $page . $FileExtension;

 if ($Forbidden1 OR $Forbidden2) {
 echo "<h1>Advarsel</h1>\n";
 echo "<p>Forespørsler på tvers av definerte \n";
 echo "områder er ikke tillatt.</p>\n";
 }
 else {
   if (@fopen("$IncludePath", "r")) { 
   include ("$IncludePath"); 
   }
   elseif (!(@fopen("$IncludePath", "r"))) {
   echo "<h1>404</h1>\n";
   echo "<p>Cannot find the page.</p>\n";
   }
 }
}
else {
include("$DefaultPath"); 
}

?>

I inc mappa har jeg veldig mange .inc filer. Det blir veldig rotete. Jeg vil sortere dem i mapper. Går dette ann? Isåfall, how?

Lenke til kommentar
Videoannonse
Annonse

Du kan f.eks. legge til $mappe ($_GET['mappe'])

 

NB: husk å legge til en kontroll for mappenavnet.

 

Du sjekker variablen $page med ereg for å sjekke at det ikke er noen skumle tegn der - men du sjekker ikke etter alle skumle tegn. Hvis $page kun får inneholde bokstaver kan du f.eks. eregi("^[a-zæøå]+$", $page (eventuelt ereg - avhengig av om du vil godta store og små bokstaver, nb det kan også legge til i forventede tegn)

Lenke til kommentar

prøv dette scriptet

 

dynamic.php -->

error_reporting(E_ALL ^ E_NOTICE);
$basepath = '/etc/httpd/htdocs';

function fixpath($file) {
$file = preg_replace('/\.{2,}/', '', $file);
 return $file;
}

function dynamic($inc_dir='', $inc_ext='', $var_name='', $default_page, $error_msg='') {
global $basepath;
 if (!empty($_POST[$var_name])) {
     	$var = fixpath($_POST[$var_name]);
 } elseif (!empty($_GET[$var_name])) {
     	$var = fixpath($_GET[$var_name]);
//}elseif (!empty($_SERVER['QUERY_STRING'])) {
 //  $var = fixpath($_SERVER['QUERY_STRING']);
 } else {
     	$var = $default_page;
 }

$sub = basename($_REQUEST['sect']) . '/';
if (!empty($sub) && is_dir($basepath."/".$inc_dir.$sub)) $inc_dir .= $sub;
 $file = $basepath."/".$inc_dir.$var.$inc_ext;
//echo "<h2>$file</h2>";
if (file_exists($file)) {
 $dateen = date('Y-m-d', filemtime("$file"));
 $dateno = date('H:i:s d-m-Y', filemtime("$file"));
     	if (!include_once($file)) {
           echo $error_msg;
     	}
 } else {
 $dateen = "";
 $dateno = "";
     	echo $error_msg;
 }
}

 

 

index.php -->

echo("<div class=\"news\">");
 dynamic('files/', '.php', 'page', 'home', 'Filen finnes ikke!');
/*
files/ = hovedmappenavnet, 
page = variabel som du kaller siden med
home = default_page
filen finnes ikke! = error_msg
*/
echo("</div>");

 

så lager du en hovedmappe for filene som du kaller files og inni denne deler du opp akkurat som du vil i undermapper,

 

da blir linken f.eks:

?sect=about&page=about

"?sect=about" --> her bestemmer vi hvilken undermappe vi leter i

&page=about --> her bestemmer vi hvilken fil vi skal finne i undermappen

 

du kan også skrive linken sånn

?page=about

 

hvis about.php ligger rett i /files/...

Endret av magikern
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...