g0mpen Skrevet 16. september 2004 Del Skrevet 16. september 2004 (endret) Jobber med et hjemmesideprosjekt, faktisk min første side i php, med div's og css. Jeg bruker akkurat nå include-scriptet til jorgis (fra den artikkelen han skrev om sikker inkludering, model nr 1). Det gjør at sidene kun kan inkluderes hvis de befinner seg i samme mappe som indexfila. Dette scriptet var egentlig ganske greit, for da slipper jeg å redigere scriptet hver gang jeg legger til en link. På den annen side, skaper dette problemer ved å blokkere nyhetsscriptet mitt, som ligger i en annen mappe på serveren. Nyhetene vises når de blir inkludert direkte, men dersom jeg har "les mer" (link til full story) blir siden blokkert, og man blir flyttet tilbake til hovedsiden. Hvordan kan jeg forandre scriptet til å tillate noen bestemte mapper? Finnes det noen andre alternativer til include script? Endret 16. september 2004 av g0mpen Lenke til kommentar
jorgis Skrevet 16. september 2004 Del Skrevet 16. september 2004 Du kan fjerne if-setningen som sjekker om du inkluderer filer fra en annen mappe, men det vil føre til at du stiller døren din på vid vegg for at andre kan inkludere slemme filer. Modifisert versjon, basert på "åpen låvedør"-prinsippet: <?php error_reporting(0); $filnavn = $_GET['s']; $filendelse = '.php'; if (!$filnavn) { $filnavn = 'forside'; } if (file_exists("$filnavn". "$filendelse")) { include $filnavn . $filendelse; } else { include "404.php"; } ?> Lenke til kommentar
g0mpen Skrevet 16. september 2004 Forfatter Del Skrevet 16. september 2004 Vet ikke om jeg vil ha det hvis det betyr "fritt frem" for hackere og slikt... Lenke til kommentar
jorgis Skrevet 16. september 2004 Del Skrevet 16. september 2004 Det betyr ikke fritt frem, men det gjør at inkluderingen kan gå på tvers av mapper, noe som ikke er helt heldig. Lenke til kommentar
g0mpen Skrevet 16. september 2004 Forfatter Del Skrevet 16. september 2004 Dersom jeg ikke har noen "skumle filer" i mappene mine da? Lenke til kommentar
jorgis Skrevet 16. september 2004 Del Skrevet 16. september 2004 Da kan inntrengeren forsøke å hente "skumle filer" fra andre som har webhotell på samme server. Lenke til kommentar
g0mpen Skrevet 16. september 2004 Forfatter Del Skrevet 16. september 2004 (endret) Det kan være mange... start.no sin Edit: Hvordan kan de på noen måte skade siden min ved å inkludere en fil? Den blir jo ikke lagret, bare vist for de som bruker den rette linken... Edit2: Hvordan linker man da til en fil i en annen mappe? index.php?side=mappe/fil ??? Endret 16. september 2004 av g0mpen Lenke til kommentar
Loomy Skrevet 16. september 2004 Del Skrevet 16. september 2004 Edit: Hvordan kan de på noen måte skade siden min ved å inkludere en fil? Den blir jo ikke lagret, bare vist for de som bruker den rette linken... Tenk deg et script som lister opp og gir muligheten til å slette filer og mapper. Hvis en bruker får til å inkludere dette scriptet på din side vil han/hun mest sannsynlig være i stand til å bevege seg fritt rundt på ditt område av serveren og slette det han/hun har lyst til. Lenke til kommentar
g0mpen Skrevet 16. september 2004 Forfatter Del Skrevet 16. september 2004 Kjipt... tror jeg får satse på et alternativ da... Lenke til kommentar
Lemkin Skrevet 17. september 2004 Del Skrevet 17. september 2004 Lag en switch versjon av scriptet: switch($_GET['var']) { case 'nyheter': include 'nyheter.php'; break; // osv, en ny case for hver side, avsluttes med en break; switch Lenke til kommentar
jorgis Skrevet 17. september 2004 Del Skrevet 17. september 2004 smoothie: Seff kan switch brukes, men da får man ikke den dynamiske biten med seg. Man må altså oppdatere index.php hver eneste gang man legger til en ny fil, og det kan fort bli mye slit. Lenke til kommentar
Lemkin Skrevet 17. september 2004 Del Skrevet 17. september 2004 jeg bruker et slikt switch system, mest for sikkerheten. Om jeg ikke har teksten i en database og må inkludere andre filer, så er switch sikkert nok. Mest fordi det ikke inkluderer om det $_GET arrayet er satt. Trodde han mente et alternativ ang sikkerhet med includescriptet jeg. Lenke til kommentar
g0mpen Skrevet 17. september 2004 Forfatter Del Skrevet 17. september 2004 Nei jeg brukte et slikt script før, og det ble bare styr siden jeg måtte forandre indexfila hele tiden... Lenke til kommentar
Lemkin Skrevet 17. september 2004 Del Skrevet 17. september 2004 Enten har du en index.php som du jobber ut fra, eller så inkluderer du filer i den og jobber med de filene hver for seg. Blir jo akuratt det samme Lenke til kommentar
jorgis Skrevet 18. september 2004 Del Skrevet 18. september 2004 Nei. Istedenfor å laste opp en side, må man heller oppdatere og laste opp to sider, index.php og underside.php Lenke til kommentar
Lemkin Skrevet 18. september 2004 Del Skrevet 18. september 2004 Eller du kan ha alt i en fil, som jeg gjør Lenke til kommentar
jorgis Skrevet 18. september 2004 Del Skrevet 18. september 2004 Med 20-30 undersider, vil det bli litt pes å laste opp 800KB for hver lille oppdatering. Lenke til kommentar
Nervetattoo Skrevet 18. september 2004 Del Skrevet 18. september 2004 Tillate sider behøves ikke hardkodes selv om man vil ha de i et array. Du kan alltids lage en side-konfigurasjons-tabell i database eller bruke en ini eller xml fil til konfig. Da kan du lage et webpanel på en admin del av siden din hvor du kan se over hvilke filer som er lov og inkludere og fjerne/legge til fra der. Det er godt mulig det er for avansert i forhold til hva du ønsker, bare nevner det liksom Lenke til kommentar
jorgis Skrevet 18. september 2004 Del Skrevet 18. september 2004 Hvis man skal ha en konfig-tabell i en database er det vel like greit å heller kjøre alt av data/sider rett fra databasen, da. Problemet er at det sannsynligvis blir par-tre hakk for avansert. Lenke til kommentar
Nervetattoo Skrevet 18. september 2004 Del Skrevet 18. september 2004 Å kjøre alt av sider, dvs logikk, eller php kode, fra database vil ikke jeg mene er noen god ide. Alt av innhold kan du fint kjøre fra database derimot, og bruke templates enten lagret i database eller html/xml for utseende. Det vil være veldig fleksibelt, og samtidig mye mere avansert og lage. Men php kode hører hjemme i php filer ikke i databasen. 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å