Avatar billede desvaerre Nybegynder
04. august 2001 - 14:20 Der 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?

Jeg takker på forhånd for alle de GODE svar :-)

Med venlig hilsen
  Søren Desed
Avatar billede sunlock.dk Nybegynder
04. august 2001 - 14:22 #1
2. Måske fordi substr kun kan dele op i 2...

::sunlock.dk::
Avatar billede nephilim Nybegynder
04. august 2001 - 14:22 #2
include vil inkludere filen, og hvis den ikke eksisterer, vil den bare gå videre, det vil req ikke, efter hvad jeg har forstået..
Avatar billede nephilim Nybegynder
04. august 2001 - 14:23 #3
4. ja jeg har lavet et news script der gør det. når du læser filen ind, kommer den jo ind i et array, og så tager du baere den linie du skal bruge
Avatar billede nephilim Nybegynder
04. august 2001 - 14:24 #4
$s=chop($fa[0]);
vil give $s den første linie
Avatar billede nephilim Nybegynder
04. august 2001 - 14:25 #5
$fa = file(filen);
Avatar billede myplacedk Nybegynder
04. august 2001 - 14:26 #6
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å... ;-)
Avatar billede nephilim Nybegynder
04. august 2001 - 14:28 #7
3. eller måske bare bruge fil navnet med .ht foran eftersom det sikkert er sat til ikke at vises, hvis det er en apache
Avatar billede lundsfryd Nybegynder
04. august 2001 - 21:42 #8
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).
Avatar billede myplacedk Nybegynder
04. august 2001 - 22:22 #9
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.
Avatar billede myplacedk Nybegynder
04. august 2001 - 22:22 #10
Forresten, det er ikke noget jeg har skrevet. Det er med som standard. :)
Avatar billede lundsfryd Nybegynder
05. august 2001 - 03:54 #11
myplacedk >> Jeps, men jeg snakker ikke om Apache men om operativsystemer/shells - og her betyder punktummet, at filen er skjult (som du siger).

Altså: Punktummet er \"systemets\", og ht er Apaches... det var det, jeg prøvede at skrive før :-)
Avatar billede jensgram Nybegynder
05. august 2001 - 12:09 #12
3: i .htacces skrives:
php_value auto_prepend_file din/mappe/data.inc.php
Avatar billede repsac Nybegynder
05. august 2001 - 12:18 #13
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\"); ?>
**************************************

Håber det hjalp dig lidt ... se evt. manualen ... www.php.net/require www.php.net/include
Avatar billede repsac Nybegynder
05. august 2001 - 12:22 #14
2. Hvorfor kan jeg ikke dele en string op i 3 med substr?
- det kan man da sagtens!

$var = \"bommelom, malerpensel og åstehamp(s)\";

$del_1 = substr($var, 0, 5);
$del_2 = substr($var, 6, 10);
$del_3 = substr($var, 11, 36);

echo \'$del_1 indeholder: \'.$del_1.\'<br>\';
echo \'$del_2 indeholder: \'.$del_2.\'<br>\';
echo \'$del_3 indeholder: \'.$del_3;
Avatar billede myplacedk Nybegynder
05. august 2001 - 12:26 #15
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.
Avatar billede nephilim Nybegynder
05. august 2001 - 15:24 #16
php kan da sagtens bruge filen, men en bruger kan ikke \"se\" filen.
Avatar billede myplacedk Nybegynder
05. august 2001 - 17:47 #17
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?
Avatar billede nephilim Nybegynder
05. august 2001 - 19:01 #18
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.
Avatar billede nephilim Nybegynder
05. august 2001 - 19:02 #19
men man skulle jo nok bruge ls -l for at få den vist i shell, da den jo som sagt tidligere ikke viser .* filer
Avatar billede nephilim Nybegynder
05. august 2001 - 19:04 #20
ls -a mener jeg
Avatar billede repsac Nybegynder
10. august 2001 - 16:55 #21
Hmm ... da spørgsmålet hastede meget, så var det måske også på tide at lukke det da du har fået svar/løsninger på det hele ... (?) ... :)
Avatar billede desvaerre Nybegynder
16. august 2001 - 08:10 #22
Undskyld... POINT-TID!!!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester