x-ray-cat Skrevet 17. september 2008 Del Skrevet 17. september 2008 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
OISNOT Skrevet 17. september 2008 Del Skrevet 17. september 2008 "links". "meny" komma? Lenke til kommentar
x-ray-cat Skrevet 17. september 2008 Forfatter Del Skrevet 17. september 2008 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
OISNOT Skrevet 17. september 2008 Del Skrevet 17. september 2008 $filnavn = $_GET['/']; tror ikke du kan kalle den '/' ? og kanskje $_REQUEST kan brukes hvis GET ikke funker... spørs på metoden på din form Lenke til kommentar
x-ray-cat Skrevet 18. september 2008 Forfatter Del Skrevet 18. september 2008 Hva bør jeg bruke istedet for '/' da? Og hva mente du med å skrive komma etter "meny" ? Lenke til kommentar
Corvinus Skrevet 18. september 2008 Del Skrevet 18. september 2008 (endret) 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 18. september 2008 av Corvinus Lenke til kommentar
x-ray-cat Skrevet 18. september 2008 Forfatter Del Skrevet 18. september 2008 Fungerer det med 'fname' hvis jeg vil at strukturen i adressefeltet skal se slik ut: nettside.com/underside/ ? Lenke til kommentar
OISNOT Skrevet 18. september 2008 Del Skrevet 18. september 2008 Da må du nok gjøre noe annet. Hvis du bruker apache: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html http://greg-j.com/2008/01/05/php-mod_rewri...me-using-_path/ Lenke til kommentar
x-ray-cat Skrevet 18. september 2008 Forfatter Del Skrevet 18. september 2008 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
Rematusen Skrevet 18. september 2008 Del Skrevet 18. september 2008 <?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
OISNOT Skrevet 18. september 2008 Del Skrevet 18. september 2008 (endret) ... hvis han bytter ut '/' med 'side' eller noe så vil det virke med index.php?side=meny Endret 18. september 2008 av OISNOT Lenke til kommentar
x-ray-cat Skrevet 18. september 2008 Forfatter Del Skrevet 18. september 2008 <?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
Rematusen Skrevet 19. september 2008 Del Skrevet 19. september 2008 <?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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå