/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Er filen lavet af tekst?
Fra : Janus


Dato : 11-04-07 15:37

Lidt mærkeligt emne jeg har valgt, måske.
Men hey! Det virkede jo, for du læser med.

Er der mulighed for at lave en funktion der ser om en given fil er
binær eller tekst?
Jeg har søgt lidt på php.net og kan ikke finde en færdig løsning.

Jeg forestiller mig noget der kunne bruges i en if-sætning

---------
if ($fil == teksfil) // Her skal jeg vide hvilken slags fil det er
{
<a href='visindhold.php?fil=$fil'>Vis mig indholdet af denne
tekstfil</a>
}
else
{
<a href='$fil'>Vis mig selve filen</a>
}
---------

Sådan at hvis

$fil="sommerferiebilleder.jpg";

får man et link til filen og hvis

$fil="info.php";

får man et link til "visindhold.php?fil=info.php" (hvor jeg læser
filen med show_source)

Man kan selvfølgelig lave en liste med de filer den skal læse eller
IKKE læse. Men så skal man jo hele vejen rundt og have de mange andre
filtyper med.

Derfor synes jeg det kunne være snedigt, om der var en mulighed for at
få PHP selv til at vurdere om filen var til at læse.

Som det er nu viser den binære filer med en masse tekst.

--
Janus


 
 
Peter Brodersen (11-04-2007)
Kommentar
Fra : Peter Brodersen


Dato : 11-04-07 16:20

On 11 Apr 2007 07:36:57 -0700, "Janus" <newsgroup@hjerteknuser.dk>
wrote:

>Er der mulighed for at lave en funktion der ser om en given fil er
>binær eller tekst?
>Jeg har søgt lidt på php.net og kan ikke finde en færdig løsning.

To muligheder er mime_content_type() og Fileinfo:

http://dk2.php.net/manual/en/function.mime-content-type.php
http://dk2.php.net/manual/en/ref.fileinfo.php

Man kan naturligvis godt forsøge selv at indlæse filen og lave noget
snask med fx regulære udtryk eller andre metoder, men der er ingen
grund til at tage højde for alle de undtagelser, der i øvrigt er. En
horisontal tab eller et sideskift-kontroltegn ville i mine øjne ikke
være nok til at sige, at en fil ikke kun indeholder tekst.

>får man et link til "visindhold.php?fil=info.php" (hvor jeg læser
>filen med show_source)

Bemærk, at hvis du ikke tjekker indholdet af fil, så kan folk indsætte
eksterne URLs, fx "visindhold.php?fil=http://www.eksempel.dk/". I dit
tilfælde er det dog ikke værre end at noget kode vises, og det behøver
ikke at give nogen cross-site-scripting-problemer. Men det kan
stadigvæk unødvendigt.

Mere problematisk kunne det fx være, hvis en bruger bad om
"visindhold.php?fil=vigtigdatabaseconnectfilmedkodeordi.php"

--
- Peter Brodersen
Kendt fra Internet

Bertel Lund Hansen (11-04-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 11-04-07 19:41

Peter Brodersen skrev:

> Man kan naturligvis godt forsøge selv at indlæse filen og lave noget
> snask med fx regulære udtryk eller andre metoder

I teorien kunne man rende ind i en binær fil der udelukkende
bestod af teksttegn.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Peter Brodersen (11-04-2007)
Kommentar
Fra : Peter Brodersen


Dato : 11-04-07 19:57

On Wed, 11 Apr 2007 20:40:51 +0200, Bertel Lund Hansen
<unospamo@lundhansen.dk> wrote:

>> Man kan naturligvis godt forsøge selv at indlæse filen og lave noget
>> snask med fx regulære udtryk eller andre metoder
>
>I teorien kunne man rende ind i en binær fil der udelukkende
>bestod af teksttegn.

Yep. Under alle omstændigheder er det nok lettere at leve med et
kvalificeret gæt, end intet gæt (eller vedligeholdelse). En anden
mulighed er selvfølgelig blot at forholde sig til filens extension,
hvor den er til stede og antageligt korrekt.

--
- Peter Brodersen
Kendt fra Internet

Janus (11-04-2007)
Kommentar
Fra : Janus


Dato : 11-04-07 16:29

On 11 Apr., 17:19, Peter Brodersen <usenet2...@ter.dk> wrote:

>
> Mere problematisk kunne det fx være, hvis en bruger bad om
> "visindhold.php?fil=vigtigdatabaseconnectfilmedkodeordi.php"
>

Ja, det er jo så en anden problemstilling end det jeg er igang med.
Den har jeg i tanke, blandt andet ved hjælp af adgangskontrol.

Jeg vil se nærmere på det du foreslår..
--
Janus


Ralle (11-04-2007)
Kommentar
Fra : Ralle


Dato : 11-04-07 17:46

hej.. jeg ved ikk om dette er hvad du ville have, men har følgende:

filer:
visindhold.php - viser fil
vis_source.php - viser kilde af fil
index.php - viser .txt, .html, .php filer
index2.php - viser jpeg, jpg, ico, png, gif, og bmp filer

Test side: www.ralle2005.dk/nyhedsgrupper/1/index.php
www.ralle2005.dk/nyhedsgrupper/1/index.php

hvis det ikke er sådan, skriv da.. hvis det er sådan, skriv, så vil jeg
ligge alle filer i en .zip fil, og ligge den ud på ralle2005.dk

Ralle

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Janus (11-04-2007)
Kommentar
Fra : Janus


Dato : 11-04-07 20:45

On 11 Apr., 18:46, Ralle <ralle_r...@hotmail.com> wrote:

> visindhold.php - viser fil
> vis_source.php - viser kilde af fil
> index.php - viser .txt, .html, .php filer
> index2.php - viser jpeg, jpg, ico, png, gif, og bmp filer
>
> Test side:www.ralle2005.dk/nyhedsgrupper/1/index.phpwww.ralle2005.dk/nyhedsgrupper/1/index.php
>

Jeg er nok ikke helt med her..

Det er ikke en kodeviser jeg har brug for.
Jeg har lavet et script der trawler igennem en mappe og lister
indholdet af filer op. Jeg har så lavet et normalt link til filen og
et link ved siden af det normale link der bruger filen
'visindhold.php' til at vise filens indhold (f.eks: 'visindhold.php?
fil=info.php')

Alt dette virker fint allerede. Det lader til at være det dit forsøg
på at hjælpe omhandler.

Det der er mit problem er, at hvis der i mappen ligger en filtype der
ikke umiddelbart lader sig læse i almindelig tekst. (zip, jpg, gif,
png, tar, mp3, wmv og mange mange andre), prøver den alligevel og det
ser ikke så smart ud.

Jeg kan godt sidde og definere hver enkelt filtype jeg vil tillade at
vise i visindhold.php, men det er jo også rigtig mange forskellige
filtyper jeg skal have med der.

Det var derfor, jeg ønsker en måde at få PHP til at finde ud af om
filen er en tekstfil eller ej.

Din løsning ser ikke ud til at dække dette behov. Men det er svært at
danne sig et billede af, for den side du linker til virker
tilsyneladende ikke særlig godt.

--
Janus


Martin (13-04-2007)
Kommentar
Fra : Martin


Dato : 13-04-07 20:37

Janus wrote:
> Lidt mærkeligt emne jeg har valgt, måske.
> Men hey! Det virkede jo, for du læser med.
>
> Er der mulighed for at lave en funktion der ser om en given fil er
> binær eller tekst?
> Jeg har søgt lidt på php.net og kan ikke finde en færdig løsning.
>
> Jeg forestiller mig noget der kunne bruges i en if-sætning

Den klart "nemme" løsning imho, men dog også en der kan fejle :)

function checkFile($file) {
$weird_signs = array("[]","TM");
// [] skal være en firkant og TM skal være det der TM mærke
// men mit newsprogram kan ikke skrive det
// andre tegn kan så indsættes her... som i 99% af tilfældene ikke
// ville findes i en alm. tekst
$content = file_get_content($file);
for($i=0;$i<str_len($content);$i++) {
if(in_array($content[$i],$weird_signs) return false;
}
}

if(checkFile($file)) echo "Filen indeholder ikke sjove tegn";
else echo "Filen har dumme tegn";

Denne kræver self. at det er "ordentlig" tekst :)

Janus (14-04-2007)
Kommentar
Fra : Janus


Dato : 14-04-07 05:12

On 13 Apr., 21:37, Martin <n...@natten-i.dk> wrote:

> Den klart "nemme" løsning imho, men dog også en der kan fejle :)

Ja, det bliver nok lidt for tilfældigt. Den bliver ikke brugt, men
ellers tak for forslaget.

--
Janus



Søg
Reklame
Statistik
Spørgsmål : 177496
Tips : 31968
Nyheder : 719565
Indlæg : 6408491
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste