Avatar billede kgp43 Nybegynder
23. april 2004 - 16:46 Der er 13 kommentarer og
1 løsning

Mål trafik på et billede (eller en anden fil)

Hejsa,

Jeg er ved at lave en side, hvor brugere har mulighed for at uploade forskellige fil typer.

Det skal laves sådan, at filer der ikke er blevet loadet i 30 dage, automatisk slettes. Brugeren har mulighed for at linke direkte til filerne fra forums mv.

Er det muligt at lave?
(Links, artikler mv)
Avatar billede kgp43 Nybegynder
23. april 2004 - 16:50 #1
Altså: Automatisk sletning efter 30 dage, resten er ikke noget problem.
Avatar billede taskmgr Nybegynder
23. april 2004 - 16:56 #2
Det er skam muligt... :)

Du kan f.eks. logge med et timestamp i en database når der bliver kigget på en fil. Så kører du et script en gang om dagen (eks), som tjekker filerne op imod databasen, og sletter de filer der ikke er blevet kigget på i 30 dage.

Forstår du pointen? :)
Avatar billede kgp43 Nybegynder
23. april 2004 - 17:00 #3
Hvordan vil du gøre det, når brugeren linker til et billede med <img scr="http://www.savefile.com/img/1.jpg">?

Kan man ikke kun gøre det, ved at gøre billederne tilgængelige på en side?
Avatar billede dennismp Nybegynder
23. april 2004 - 18:24 #4
Du kan lade det gå igennem et script.. sådan at

<img src="http://www.savefil.com/img.php?f=1.jpg">

Så kan img.php se således ud:

<?php
$f = $_GET['f'];

// Check om filen er aktiv. evt via database
// tjek at $f er et filnavn man kan tilgå

if( $nottooold ) {
    header("Content-type: image/jpeg");
    readfile("sti/til/billeder/" . $f);
    ..
    opdatér database
}
else {
    lav fejlmeddelelse
}
?>
Avatar billede kgp43 Nybegynder
23. april 2004 - 18:31 #5
Det skal jeg lige teste, men det kan først blive på mandag :(
Lyder da lovende :)
Avatar billede kgp43 Nybegynder
30. maj 2004 - 12:17 #6
Hej igen,

Sidst jeg kiggede var dette spørgsmål forsvundet (pga ekspertens nedetid), men kan se de har fundet en backup.

Vedr dette her:
"header("Content-type: image/jpeg");"
- Kan du bare tilføje andre billede typer? ex. png, gif etc?
Avatar billede dennismp Nybegynder
30. maj 2004 - 13:05 #7
jep. Du kan gøre det for alle filer du browser kender som mime-type. Men det giver jo mest mening at skrive image/jpeg ved jpeg-filer osv :-)
Avatar billede kgp43 Nybegynder
30. maj 2004 - 13:24 #8
Vil det så se sådan ud:

header("Content-type: image/jpeg, image/gif, image/png, image/bmp");
Avatar billede dennismp Nybegynder
30. maj 2004 - 13:29 #9
Nej..

Een fil har jo kun een time, så det vil enten være
header("Content-type: image/jpeg");
eller
header("Content-type: image/png");
eller
header("Content-type: image/gif");

..

du kan jo ikke sende to billeder oveni hinanden.
Avatar billede kgp43 Nybegynder
30. maj 2004 - 13:49 #10
Okay, er dette så rigtigt:

<?php
$f = $_GET['f'];

// Check om filen er aktiv. evt via database
// tjek at $f er et filnavn man kan tilgå

if( $nottooold ) {
    header("Content-type: image/jpeg");
    readfile("sti/til/billeder/" . $f);
    ..
    opdatér database
}
elseif( $nottooold ) {
    header("Content-type: image/gif");
    readfile("sti/til/billeder/" . $f);
    ..
    opdatér database
}
elseif( $nottooold ) {
    header("Content-type: image/png");
    readfile("sti/til/billeder/" . $f);
    ..
    opdatér database
}
elseif( $nottooold ) {
    header("Content-type: image/bmp");
    readfile("sti/til/billeder/" . $f);
    ..
    opdatér database
}
else {
    lav fejlmeddelelse
}
?>
Avatar billede dennismp Nybegynder
30. maj 2004 - 13:56 #11
Nej da den altid vil vælge den første if() hvis $nottooold er sandt.

Du skal kigge på filen og se hvilken type det er .. Det kan du gøre ved at kigge på extension (fx er filen .jpg så er det image/jpeg du skal sende som mime-type), eller du kan bruge getimagesize() som (bl.a.) returnerer filetype.


Fx:

$mime[1] = 'image/gif';
$mime[2] = 'image/jpeg';
$mime[3] .. se dokumentationen for getimagesize()'s type-felt
if( $nottooold ) {
  list($width, $height, $type, $attr) = getimagesize($f);
  header("Content-type: " . $mime[$type]);
  readfile("sti/til/billeder/$f");
}
else {
  fejl
}

Du skal også lige overveje hvad der sker, hvis brugeren skriver "???.php?f=../test.jpg (så slipper han ud af dit directory - og det er måske ikke så smart)
Avatar billede kgp43 Nybegynder
30. maj 2004 - 14:00 #12
Okay, jeg kigger lige på det.

Ligger du lige et svar, spørgsmålet er temmelig gammelt og har fået svar på det ønskede :)
Avatar billede dennismp Nybegynder
30. maj 2004 - 14:04 #13
Ok - men bare forsæt hvis du har problemer med at få det til at virke.. :)
Avatar billede kgp43 Nybegynder
30. maj 2004 - 14:08 #14
Det vil jeg gøre :)
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