Jonas Skrevet 10. juni 2004 Del Skrevet 10. juni 2004 (endret) Hallo Planen var å sette inn et script så jeg kan skrive f eks index.php?side=prosjekter.html. Har tenk ut hvordan det skal settes opp, men å sette det opp klarer jeg ikke Noen som vil hjelpe meg? Noe sånn som dette tenkte jeg: side = get(side) If side = "" Then inkluder_hovedsiden Else If page_exist(side) = True Then på_en_eller_annen_måte_includere_ "side" Else includere_en_404_fil End If End If Takker for alle svar Jonas Endret 10. juni 2004 av Jonas Lenke til kommentar
Loomy Skrevet 10. juni 2004 Del Skrevet 10. juni 2004 (endret) Et enkelt, sikkert, men ikke særlig "dynamisk": switch($_GET['side']) { case main: include("./inc/main.php"); break; case en_annen_side: include("./inc/enannenside.php"); break; case enkulside: include("./inc/enkulside.php"); break; default: include("./inc/main.php"); /* Side som inkluderes hvis side ikke er oppgitt eller hvis den ikke eksisterer */ break; } EDIT: Hvis du vil ha et litt mer dynamisk og avansert kan du ta en titt på siden min. Link i signatur.. Endret 10. juni 2004 av Loomy Lenke til kommentar
Jonas Skrevet 10. juni 2004 Forfatter Del Skrevet 10. juni 2004 Tusen takk Fikk det til nå! Lenke til kommentar
Gjest Slettet-df17e Skrevet 10. juni 2004 Del Skrevet 10. juni 2004 Her er ett enkelt include script jeg har lagd.. <?php $_GET['side'] = 'main'; } if (file_exists($_GET['side'].".php")) { include($_GET['side'].".php"); } else { echo ('404! Finne ikke filen'); } ?> da vil linkene dine bli index.php?side=sidendin Er jeg ikke snill Lenke til kommentar
Torbjørn Skrevet 10. juni 2004 Del Skrevet 10. juni 2004 Lemen: nei, du har nettopp blåttlagt alle hans phpfiler. dinfil.php?side=/path/til/hvilken/somhelst/phpfil vil medføre at du blindt inkluderer og kjører alle phpfiler som ligger på serveren. Lenke til kommentar
Nervetattoo Skrevet 10. juni 2004 Del Skrevet 10. juni 2004 En generell sak når det gjelder include skript og sikkerhet. Du ønsker ikke at brukeren selv skal kunne kjøre et hvilket som helst skript, det er flere måter å unngå dette på. En bra måte er å legge alle filer som tillates inn i et array og sjekke om siden er tillat før du inkluderer: $allowed_includes = array('index', 'about', 'test'); if (in_array($_GET['page'], $allowed_includes)) { // inkluder siden } Det er bare et eksempel for å sende forhåpentligvis noen i rett retning. Lenke til kommentar
Jonas Skrevet 10. juni 2004 Forfatter Del Skrevet 10. juni 2004 Hva er det Lemen har gjort? Med scripte mitt kan man ikke kjøre hvilken som helst php-filer fordi alle html-filene ligger i en egen mappe! Jeg skriver bare slik for å inkludere:side=main. Da åpnes Files/main.html. Da får man ikke tilgang til annet enn html filene .. tror jeg hvertfall Lenke til kommentar
Pangaea Skrevet 10. juni 2004 Del Skrevet 10. juni 2004 Man får tilgang til alle php-filene, som kan være litt risikofylt. Bruker denne koden, syns den ser grei ut... if(isset($_GET['page'])) { $page = "./pages/".$_GET['page'].".php"; if(is_file($page)) { //page is set, and exists $page_inc = $page; } else { //$page is set, but doesn't exist $page_inc = "./error/404.php"; } } else { //$page is not set $page_inc = "./pages/home.php"; } include($page_inc); Lenke til kommentar
TorS Skrevet 10. juni 2004 Del Skrevet 10. juni 2004 Pangaea: Hvis man bruker koden din kan man få tilgang til alle php-filer... Du kan da bare skrive f.eks. index.php?page=../phpfil for å få tilgang til ei phpfil som ligger i hovedkatalogen din. Jonas kan tydeligvis bare inkludere html-filer, og da kan man ikke kjøre noen andre php-filer med skriptet Lenke til kommentar
Cucum(r) Skrevet 10. juni 2004 Del Skrevet 10. juni 2004 Jeg bruker disse to: <? if (!isset ($_GET['id'])) { $_GET['id'] = 'vis'; } if (file_exists($_GET['id'].".php")) { include($_GET['id'].".php"); } else { echo ('<p>404. <br /> No Such file</p>'); } ?> <? $url_array = explode ("/", $REQUEST_URI); $var1 = $url_array [1]; $var2 = $url_array [2]; $var3 = $url_array [3]; $var4 = $url_array [4]; $var5 = $url_array [5]; ?> Lenke til kommentar
Pangaea Skrevet 10. juni 2004 Del Skrevet 10. juni 2004 (endret) Hmm, hvordan fikser jeg skriptet så man bare kan lese fra pages katalogen da? Edit: Fjernet "." så det ble "/pages/" istedenfor "./pages/". Er det nok, eller er det bare jeg som ikke vet hva jeg skal skrive for å "knekke" koden? Endret 10. juni 2004 av Pangaea Lenke til kommentar
TorS Skrevet 10. juni 2004 Del Skrevet 10. juni 2004 Hvis det ikke er så mange sider det er snakk om er det mulig å lage en switch-setning, men hvis det er mange sider, eller noe annet som gjør at det blir tungvint å gjøre det manuelt kan du vel få php til å finne alle filer i mappa, og bare velge blant de. Lenke til kommentar
Pangaea Skrevet 10. juni 2004 Del Skrevet 10. juni 2004 Med over 100 filer blir det nok uaktuelt manuelt Fint lite av andre php-filer uansett, bare satte de i en katalog for oversikten sin skyld. Ellers er det vel bare include-filer og index. Ikke bra om include filene blir lesbare da akkurat... Lenke til kommentar
The Red Devil Skrevet 11. juni 2004 Del Skrevet 11. juni 2004 legg til ein enkel str_replace som fjerner alle "/" i variablen, deretter se om filen eksisterer, eller eventuelt to ".." vist du har filer i foldere som ligger i "page" folderen. if(isset($_GET['page'])) { $page = str_replace("/","",$_GET['page']); $page = "./pages/".$page.".php"; if(is_file($page)) { //page is set, and exists $page_inc = $page; } else { //$page is set, but doesn't exist $page_inc = "./error/404.php"; } } else { //$page is not set $page_inc = "./pages/home.php"; } include($page_inc); Lenke til kommentar
Pangaea Skrevet 11. juni 2004 Del Skrevet 11. juni 2004 (endret) Tusen takk, nå funker det Edit: Sorry for å kapre tråden Jonas, men håper du har fått noe fornuftig ut av den likevel Endret 11. juni 2004 av Pangaea Lenke til kommentar
RottePostei Skrevet 11. juni 2004 Del Skrevet 11. juni 2004 inkludering av .html-filer eller for den saks skyld en hvilken som helst filending, er skummelt det også, ettersom en ondsinnet nisse f.eks. kan legge php-kode i en html-fil og inkludere denne. Ettersom filen inkluderes vil koden kjøres til tross for at filen er en html. Den vil ikke kjøres dersom filen lastes direkte, men ved include skjer altså dette. Lenke til kommentar
Jonas Skrevet 11. juni 2004 Forfatter Del Skrevet 11. juni 2004 inkludering av .html-filer eller for den saks skyld en hvilken som helst filending, er skummelt det også, ettersom en ondsinnet nisse f.eks. kan legge php-kode i en html-fil og inkludere denne. Ettersom filen inkluderes vil koden kjøres til tross for at filen er en html. Den vil ikke kjøres dersom filen lastes direkte, men ved include skjer altså dette. Hva er det du prøver å si? At en nisse skal inkludere filer fra en annen side? Det går ikke.. Eller mener du at en har tenkt til å "hacke" ftp'en og endre noen av filene mine? Da hjelper jo ingen ting... Lenke til kommentar
Torbjørn Skrevet 11. juni 2004 Del Skrevet 11. juni 2004 uansett av hva han mener er filnavnet ingen indikasjon på om det kjøres php eller ikke. include kjører fila som om det var gyldig phpkode uavhengig av filendelsen. hvis det er en fyr som har bruker på samme server, så kan han lage hvilke filer han vil og kjøre de gjennom ditt includeskript bare Lenke til kommentar
Jonas Skrevet 11. juni 2004 Forfatter Del Skrevet 11. juni 2004 (endret) uansett av hva han mener er filnavnet ingen indikasjon på om det kjøres php eller ikke. include kjører fila som om det var gyldig phpkode uavhengig av filendelsen. hvis det er en fyr som har bruker på samme server, så kan han lage hvilke filer han vil og kjøre de gjennom ditt includeskript bare Jeg har konto på start, men faktisk så tror jeg ikke det går ann. Fordi index fila mi ligger i hoved mappa og "inkluder-bare" filer ligger i mappen "sider". For å inkludere skriver man bare navnet på fila. Hvis du skriver main så åpener den Sider/main.html. Så man kan bare inkludere sider i den mappa. Edit: Eller kan man skriver ".." og komme til hovedmappa? Kan jeg bruke Findus sitt eksempel for å forhindre det da? Endret 11. juni 2004 av Jonas Lenke til kommentar
Jonas Skrevet 11. juni 2004 Forfatter Del Skrevet 11. juni 2004 (endret) Ok, nå har jeg lagt inn Findus sitt eksempel og ".."-trikset fungerer ikke Men jeg har et problem. I eksempelet hans er det sånn at hvis jeg skriver noe som ikke er i array'et, inkluderes ingen ting og div'en blir tom. Jeg vil inkludere en side da! Kan noen hjelpe meg? Her er skriptet: <?php if (isset($_GET['page'])) { $page = "Sider/".$_GET['page'].".html"; if(is_file($page)) { //blabla $allowed_includes = array('main', 'prosjekter', 'artikler', 'kontakt'); if (in_array($_GET['page'], $allowed_includes)) { //page is set, and exists include($page); } //blabla } else { //$page is set, but doesn't exist include("Sider/404.html"); } } else { //$page is not set include("Sider/main.html"); } ?> Det som står mellom "blabla" er koden som trenger en "else". Edit: Det viste seg at jeg ike trengte det allikavel. Bare jeg som surre litt her nå Endret 11. juni 2004 av Jonas 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å