Gå til innhold

Får ikke inkludert meny når jeg bruker sikker inkludering.


Anbefalte innlegg

Hei.

 

Jeg har laget en egen fil som heter meny.php.

 

Filen ligger i rootmappa sammen med index.php.

 

Jeg får inkludert den når jeg bruker

 

<?php include("meny.php"); ?>

 

Men jeg ønsker å bruker det ene scriptet for sikker inkludering som er beskrevet i hardware sin guide for sikker bruk av includescript.

 

Jeg har da prøvd å få det til å fungere ved å erstatte

<?php include("meny.php"); ?>

med:

 

<?php
error_reporting(0);
$filnavn = $_GET['s'];
$tillatt = array("index", "articles", "links". "meny");
$filendelse = '.php';
if (in_array($filnavn, $tillatt)) {
 include $filnavn . $filendelse;
}
else {
 include '404.php';
}
?>

 

Men jeg får ikke til å inkludere meny.php i index.php når jeg går fram på denne måten.

 

Kan noen hjelpe meg med å få inkludert menyen med å bruke skriptet for sikker inkludering?

 

Setter pris på hjelpen :)

Lenke til kommentar
Videoannonse
Annonse

Slik ser scriptet ut i index.php:

<?php error_reporting(0);
	$filnavn = $_GET['/'];
	$tillatt = array("index", "articles", "links", "meny");
	$filendelse = '.php';
	if (in_array($filnavn, $tillatt)) {
	  include $filnavn . $filendelse;
	}
	else {
	  include '404.php';
	}
	?>

 

Hva er feil/må endres får å få det til å fungere?

 

Skal det være komma etter "meny" ?

Lenke til kommentar

Bruk noe som ikke er reservert for annet bruk, '/' er en identifikator for katalogstruktur, prøver man på det igjennom en hyperlink f.eks. med ?/=foo vil nettleseren bare hyle til deg at den ikke finner den mappen/filen.

 

Kan bruke 'fname' f.eks.?

 

Han mente , mellom links og meny for å skille de to parameterne. Punktum er sammensetting-operator for strenger.

Endret av Corvinus
Lenke til kommentar

Jeg vil helst at adressene blir www.hovedside.com/underside/ fremfor www.hovedside.com/underside.php.

 

Men i første omgang vil jeg få php-inlcude sciptet til å fungere.

 

Vil det da fungere hvis jeg skriver filnavn i $filnavn = $_GET['/']; ?

 

Altså $filnavn = $_GET['filnavn.fil]; ?

Lenke til kommentar
<?php error_reporting(0);
	 $filnavn = $_GET['/'];
	 $tillatt = array("index", "articles", "links", "meny");
	 $filendelse = '.php';
	 if (in_array($filnavn, $tillatt)) {
	   include $filnavn . $filendelse;
	 }
	 else {
	   include '404.php';
	 }
	 ?>

 

 

EN måte å gjøre det på:

Erstatt index.php fila sitt innhold med dette:

<?php
  if($_GET['side'] == "articles") {
	  include_once 'articles.php';
  }
?>

 

Så skriver du i URL:

?side=articles

 

Så kommer articles.php opp.

Men det finnes mye annet ferdiglagd du kan bruke;)

Lenke til kommentar
<?php error_reporting(0);
	 $filnavn = $_GET['/'];
	 $tillatt = array("index", "articles", "links", "meny");
	 $filendelse = '.php';
	 if (in_array($filnavn, $tillatt)) {
	   include $filnavn . $filendelse;
	 }
	 else {
	   include '404.php';
	 }
	 ?>

 

 

EN måte å gjøre det på:

Erstatt index.php fila sitt innhold med dette:

<?php
  if($_GET['side'] == "articles") {
	  include_once 'articles.php';
  }
?>

 

Så skriver du i URL:

?side=articles

 

Så kommer articles.php opp.

Men det finnes mye annet ferdiglagd du kan bruke;)

 

Jeg har ikke noen underside som heter articles.php eller links.php. Men jeg har tenkt å ha undersider som heter linker.php og om.php

 

Jeg ønsker at adressen til undersiden om skal være: www.nettside.com/om/ fremfor www.nettside.com/om.php

og adressen til linker skal være: www.nettside.com/linker/ fremfor www.nettside.com/linker.php

 

Hvordan får jeg det til med mod_rewrite?

 

Jeg har også en meny i meny.php som jeg ønsker å få til å inkludere med bruk av det sikre eksempelet hvor jeg bruker array...

 

Er det noen som kan beskrive hvordan jeg må gå fram for å få dette til?

 

:)

Lenke til kommentar
<?php error_reporting(0);
			$filnavn = $_GET['/'];
			$tillatt = array("index", "articles", "links", "meny");
			$filendelse = '.php';
			if (in_array($filnavn, $tillatt)) {
			  include $filnavn . $filendelse;
			}
			else {
			  include '404.php';
			}
			?>

 

 

EN måte å gjøre det på:

Erstatt index.php fila sitt innhold med dette:

<?php
		 if($_GET['side'] == "articles") {
			 include_once 'articles.php';
		 }
   ?>

 

Så skriver du i URL:

?side=articles

 

Så kommer articles.php opp.

Men det finnes mye annet ferdiglagd du kan bruke;)

 

Jeg har ikke noen underside som heter articles.php eller links.php. Men jeg har tenkt å ha undersider som heter linker.php og om.php

 

Jeg ønsker at adressen til undersiden om skal være: www.nettside.com/om/ fremfor www.nettside.com/om.php

og adressen til linker skal være: www.nettside.com/linker/ fremfor www.nettside.com/linker.php

 

Hvordan får jeg det til med mod_rewrite?

 

Jeg har også en meny i meny.php som jeg ønsker å få til å inkludere med bruk av det sikre eksempelet hvor jeg bruker array...

 

Er det noen som kan beskrive hvordan jeg må gå fram for å få dette til?

 

:)

 

 

Jepp.

 

1)

Slett alt på serveren din. (alle filene)

 

2)

Lag en index.php fil på rotnivå, med dette innholdet:

 

<?php

 /* I N N S T I L L I N G A R */
 /* Lim inn på toppen av dokumentet
 * Forandre variablane etter dine ønsker */

 $handlername = 'side'; // her blir linkane ?side=xxx. Forandre til det du bruker
 $defaultSide = 'index.php'; // den fila som blir inkludert dersom inga side er etterspurt i URL-en
 $includePath = 'sider/'; // stien til mappa sidene som skal inkluderast ligg i
 $errorPage = 'error/error404.php'; // fila som blir inkludert dersom ei side som ikkje ligg i mappa blir etterspurt
 $filendelse = '.php'; // filendelsen på filane som skal inkluderast

 /* S C R I P T S T A R T */
 /* Første delen henter variabelen i url-en og alle filnavn i mappa du skal inkludere frå */
 /* Treng ikkje endrast */

 $URLside = &$_GET[$handlername]; // lagar ein enklare variabel for variabelen sendt gjennom url-en

 $rep = opendir($includePath); // åpnar mappa som er satt i $includePath
 while ($file = readdir($rep))
 {
 if($file != '..' && $file !='.' && $file !='' && !is_dir($file)) // unngår mapper
 {
 $filer[]=$file; // legg alle filane i mappa inn i $filer-arrayet
 }
 }
 closedir($rep); // lukker mappa



 if (!isset ($URLside)) // viss det ikkje blir sendt ein variabel gjennom url-en for å bestemma kva side som skal inkluderast
 {
 $side = $includePath . $defaultSide; // blir filen satt i $defaultSide inkludert
 } else {
 $side = $URLside . $filendelse; // legg til filendelsen satt i $filendelse for å

 if (in_array ($side, $filer)) { // sjekker om den etterspurte sida er i arrayet
 $side = $includePath . $side; // inkluder sida
 } else { // ellers
 $side = $includePath . $errorPage; // inkluder filmeldinga, satt i $errorPage
 }
 }


 /* I N K L U D E R I N G S D E L */
 /* Lim inn der innhaldet skal inkluderast */

 include_once $side; // inkluderer sida som er bestemt gjennom diverse testar

 ?>

 

 

3)

lag en mappe som heter "sider" slik at du legger sidene dine i denne /sider/ mappen. (links.php osv..).

I index filen over, så inkluderer den /sider/index.php som default.

 

4)

lag en .htaccess fil som har innholdet:

 

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteBase /
 RewriteRule ^([^/.]+)/?$ index.php?side=$1
 </IfModule>

 

5)

gå til root i web-leseren å lag linker slik, i filen (/sider/index.php):

<a href="/links/">linker</a> samme som ?side=links. prøv å trykk på linken for å se om det fungerer..

 

-------------------------

 

Bare si ifra, vis du ikke får det til ;)

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å
×
×
  • Opprett ny...