04. august 2001 - 14:20Der er
18 kommentarer og 4 løsninger
Lidt PHP-spm.... HASTER MEGET!!!
Hej,
Jeg blev henvist til eksperten.dk af en kammerat. Nu får vi at se hvad I kan :-)
Jeg har lidt spm ang. PHP:
1. Hvad er forskellen på include og require. 2. Hvorfor kan jeg ikke dele en string op i 3 med substr? 3. Kan jeg undgå at min conn. til databasen bliver set? Jeg har fx den til at ligge i hent/conn.inc.php. Skal jeg bruge .htaccess til det? Og i så fald, hvordan? 4. Er det muligt at læse en linie af gange fra en fil (fx tekst.txt)? Sådan at den første linie bliver brugt som overskrift og de efterfølgende er selve teksten?
2. Hvad er det helt præcist du vil her? 3. Ja. Der er to løsninger: Læg din \"conn.inc.php\" uden for web-scope, eller konfigurer din webserver til at \".inc.php\"-filer ikke må ses. 4. Ja, selvfølgelig.
1\'eren vil jeg lige se om en anden ikke vil svare på... ;-)
nephilim >> det er punktummet, der gør den skjult - ikke \".ht\". ht er bare Apaches navngivningskonvention - f.eks. \"htaccess\" -> \"HyperText Access\" (ikke noget jeg ved, kun et gæt).
lundsfryd >> I min httpd.conf står der: <Files ~ \"^\\.ht\"> Order allow,deny Deny from all </Files>
Det betyder, at filer der starter med \".ht\" ikke må sendes.
At en fil starter med punktum er Apache ret ligeglad med. Bash, derimod (og sikkert også alle andre shells) viser ikke filer der starter med punktum, medmindre man beder den om det. Men det er ret irrelevant i denne sammenhæng.
1: Lidt kryptisk ... require bruges når du eks. skal bruge en fuktion der bliver defineret i en anden fil. Hvis man require en fil bliver indholdet af filen ikke \"stoppet ind\". Den bliver kun læst.
Derimod hvis man bruger include så stopper php indholdet af filen ind ...
Prøv en gang at oprette to filer: *****test.test.php******* bla bla bla ... ****************************
*****test.include_vs_require.php****** Følgende kan man se i sourcen ved en require: <?php require(\"test.test.php\"); ?> <br><br> Følgende kan man se i sourcen ved en include: <?php include(\"test.test.php\"); ?> **************************************
lundsfryd >> Jeg tror vist du er den eneste der snakker om operativsystem og shell i dette PHP-forum. Jeg har i øvrigt indtryk af at de fleste her kører Windows eller webhotel uden shell-access, og så er det endnu mere ligegyldigt. Og så er sikkerheden i at kalde en fil noget med punktum foran faktisk MEGET dårligere, end at lægge nøglen under måtten.
Men OK, hvis \"desvarre\" snakker om shell\'s og ikke PHP, og han ikke mener af hensyn til sikkerhed med for at øge overskueligheden når han kører en \"ls -l\", så er tippet da OK...
Jeg vil såmen bare gøre opmærksom på, at der ikke er noget SIKKERHEDSMÆSSIGT i at lade et filnavn starte med punktum. Men at lade filnavnet starte med \".ht\" (som nephilim foreslog) vil på en standard apache betyde, at man ikke kan hente filen gennem webserveren.
nephilim >> Du må nok lige præcisere lidt her... \"PHP kan da sagtens bruge filen\" - trods hvad? At den starter med punktum, eller at den starter med \".ht\", eller hvad? Og hvad mener du med at en bruger ikke kan se den? Indtaste den i browseren, eller se den via shell?
ja php kan godt bruge .ht filer, men en bruger der via en browser ser i det directory kan ikke se den, da det er serveren der sender listen. oh en bruger kan også se den i shell, da det ikke er apache der sender det.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.