Gå til innhold

PhP include


Anbefalte innlegg

Kopier dette scriptet inn der du skal ha menyen:

<!--meny-->
<?php

$MenuPath = "./inc_filer/meny.inc";

include("$MenuPath");

?>
<!--/meny-->


 Du trenger bare å forandre denne linjen:

 $MenuPath = "./inc_filer/meny.inc";

 Du må bare forandre teksten mellom gåsetegnene.

 Her skal du angi banen/stien til INC-filen som skal fungere som meny relativt 
 til index.php.

 Menyen lagres som en separat inc-fil slik at den korresponderer med verdien for 
 $MenuPath.

 Linkene i meny.inc må angis slik:

 <a href="index.php?side=hoved">Hovedsiden</a>
 <a href="index.php?side=neste">Neste Side</a>

 Teksten etter likhetstegnet må tilsvare filnavnet på en inc-fil i inc_mappe 
 (eller hva du nå enn kaller den). index.php vil da kalles opp på nytt og sette 
 inn denne filen der scriptet nedenfor ligger.

 ********************************************************************************

 Kopier dette scriptet inn der du skal ha teksten som inkluderes:

<!--innhold-->
<?php

$IncludeDir    = "./inc_filer";
$DefaultPath  = "./inc_filer/hoved.inc";
$FileExtension = ".inc";

if (isset($side)) {
$side        = stripslashes(strip_tags($side));
$Forbidden1  = ereg("\.\./", $side);
$Forbidden2  = ereg("/", $side);
$IncludePath = $IncludeDir . "/" . $side . $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>Server Error 404</h1>\n";
   echo "<p>Finner ikke den forespurte siden.</p>\n";
   }
 }
}
else {
include("$DefaultPath"); 
}

?>
<!--/innhold-->


 De tre verdiene du trenger å forandre på, er disse:

 $IncludeDir    = "./inc_filer";
 $DefaultPath  = "./inc_filer/hoved.inc";
 $FileExtension = ".inc";

 Du må bare forandre teksten mellom gåsetegnene.

 I $IncludeDir angir du mappen hvor INC-filene befinner seg relativt til 
 index.php.

 I $DefaultPath angir du banen/stien til den INC-filen som skal fungere som 
 hovedside.

 I $FileExtension angir du hvilken filendelse du vil ha på filene som skal 
 inkluderes. Husk også at du eventuelt må forandre filnavnet på hovedsiden i 
 $DefaultPath samt filnavnet på menyen i $MenuPath tilsvarende.

 NB! HVIS INCLUDE-FILENE DINE SKAL INNEHOLDE PHP-SCRIPTS SOM DU IKKE ØNSKER AT 
 ANDRE SKAL FÅ INNSYN I, SÅ BØR DU BRUKE FILENDELSEN .php. GRUNNEN TIL DETTE ER 
 AT .inc-FILER OG .txt-FILER BEHANDLES SOM VANLIGE TEKSTDOKUMENTER SOM KAN ÅPNES 
 I EN NETTLESER. MED .php-ENDELSE VIL SCRIPTET I INCLUDE-FILEN KJØRES OG GI EN 
 OUTPUT.

 $Forbidden1 og $Forbidden2 vil forhidre at de besøkende inkluderer filer fra 
 andre områder eller foldere enn den du har angitt i $IncludeDir.

Har prøv dette scriptet, men linker jeg til noen som helst side så ender jeg bare opp med hovedsiden uansett hva jeg gjør.

Lenke til kommentar
Videoannonse
Annonse

Et problem kan være denne:

 

if (isset($side))

 

dersom register globals er off (som den default er) så må du f.eks. bruke isset($_REQUEST['side'])

 

Det kan ofte være lurt å bruke empty, siden den isset dersom den ikke har noen verdi, som f.eks. hvis den ligger i adresse linjen index.php?side=

 

Bruk:

if (!empty($side))

Lenke til kommentar

Hvis det der var en slags lær include i php-sak, så vil jeg komme med et veldig enkelt bidrag, B|Real.

<?php
$q = $_GET['q'];
if (!$q) {
$q = home;
}
$include = "./innhold/$q.php";
if (!file_exists($include)) {
$q = 404;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="ehk.css" type="text/css">
<title>Be real ® - <?php echo($q); ?></title>
</head>
<body>
<p>Meny: <a href="?q=home">Home</a> » <a href="?q=about">About</a> » <a href="?q=contact">Contact</a></p>
<p><?php include("innhold/$q.php"); ?></p>
</body>
</html>

Den lagrer du som index.php.

 

Deretter lager du en mappe som du kaller "innhold". I den lagrer du følgende filer:

home.php - blir den siden som blir inkludert hvis ikke annet er valgt.

about.php - Skriv noe drit, og den blr inkludert med about-linken

contact.php - you get the picture

404.php - Den skriver du "Kan ikke finne siden", elns, og blir inkludert hver gang noen skriver feil link etter index.php?q=

Lenke til kommentar

Toolshed:

Scriptet ditt funker bra! Takk for hjelpen!

 

Men, jeg har lastet ned dette php fotoalbumet. LINK

 

Hvilke forandringer må jeg gjøre i gallery/index.php for at det skal funke optimalt.

Jeg får denne feilmeldingen.

 

Warning: fopen("links.txt", "r") - No such file or directory in .../public_html/gallery/index.php on line 19

 

Warning: Supplied argument is not a valid File-Handle resource in .../public_html/gallery/index.php on line 19

 

Warning: Supplied argument is not a valid File-Handle resource in .../public_html/gallery/index.php on line 20

Tar med koden osgå, men tror ikke feilen ligger her. Fordi, jeg får opp home.php og 404.php.

I index.php

<?php
$q = $_GET['q'];
if (!$q) {
$q = index;
}
$include = "./gallery/$q.php";
if (!file_exists($include)) {
$q = 404;
}
?>

<body>  
 <p>Meny: <a href="?q=index">Home</a> » 
 <a href="?q=index">Bilder</a> » <a href="q=contact">Contact</a></p>   <p><?php include("gallery/$q.php"); ?></p>  
</body>

 I gallery/index.php

19
20 $gal = $HTTP_GET_VARS["gal"];   
21 $pic = $HTTP_GET_VARS["pic"]; 

 

Håper ikke dette ble altfor rotete.

 

MVH

EZAccess

Lenke til kommentar
Toolshed:

Scriptet ditt funker bra! Takk for hjelpen!

 

Men, jeg har lastet ned dette php fotoalbumet. LINK

 

Hvilke forandringer må jeg gjøre i gallery/index.php for at det skal funke optimalt.

Jeg får denne feilmeldingen.

 

Warning: fopen("links.txt", "r") - No such file or directory in .../public_html/gallery/index.php on line 19

 

Warning: Supplied argument is not a valid File-Handle resource in .../public_html/gallery/index.php on line 19

 

Warning: Supplied argument is not a valid File-Handle resource in .../public_html/gallery/index.php on line 20

Tar med koden osgå, men tror ikke feilen ligger her. Fordi, jeg får opp home.php og 404.php.

I index.php

<?php
$q = $_GET['q'];
if (!$q) {
$q = index;
}
$include = "./gallery/$q.php";
if (!file_exists($include)) {
$q = 404;
}
?>

<body>  
 <p>Meny: <a href="?q=index">Home</a> » 
 <a href="?q=index">Bilder</a> » <a href="q=contact">Contact</a></p>   <p><?php include("gallery/$q.php"); ?></p>  
</body>

 I gallery/index.php

19
20 $gal = $HTTP_GET_VARS["gal"];   
21 $pic = $HTTP_GET_VARS["pic"]; 

 

Håper ikke dette ble altfor rotete.

 

MVH

EZAccess

hva er "chmod" på links.txt? og sånn forøvrig: eksisterer fila i det hele tatt?

Lenke til kommentar
Er det en lokal server eller et webhotell?

Hvis det er et webhotell kan det hende at du må lagre filen i base dir mappen for å kunne gjøre endringer på den.

han bruker home.no.net og fullpath till .txt fila er:

/mnt/home2/c/ca/candyman/public_html/gallery/

 

men tror jeg fant feilen nå og det har med at du må bruke fullpath:

 

når du går rett i gallery mappa finner gallery/index.php txt fila fordi vi da er i samme mappe, men når du går gjennom index fila fra mappa over gallery så er vi i en annen mappe og txt fila's plassering blir da relativ til øverste index fil (alle andre include/linker o.l. i gallery/index.php blir også dette), så lær deg å bruke fullpath overalt hvor du includerer noe...

Lenke til kommentar

basedir har ikke noe med fullpath eller noe å gjøre - det er en sikkerhetsfunksjon som begrenser hvile filer php kan røre, avhengig av hvor de er plassert. Hvis basedir er satt må filene være innenfor den mappen.

 

"så lær deg å bruke fullpath overalt hvor du includerer noe..." - ikke ille ment i det hele tatt, men ikke gjør det! Da blir scriptet helt avhengig av hvor du bygger det og det vil ta lang tid å endre scriptet hvis du flytter det. Eventuelt kan du opprette en $dir = "/path/to/scripts/" i en config fil, men så lenge include ikke er avhengig av full path så er det ikke nødvendig - sier ikke at du ikke burde sjekke det for bugs kan finnes - men er det et problem burde du varsle webhotellet ditt slik at de oppdaterer php.

Endret av ????????
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...