/ 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
Problemer med at kenkende fil-type...
Fra : Jeppe Christensen


Dato : 25-01-06 16:31

Jeg har en form som ser således ud:

<form class="form" method="post" action="?do=add_galleri"
enctype="multipart/form-data">

<input size="24" type="file" class="input_text"/>

<input type="submit"/>

</form>

Når filen så bliver sendt videre vil jeg gerne tjekke om det er
en billede fil. Dette gør jeg således:

$from = $_FILES['fil']['tmp_name'];
$type = strtolower(end(explode(".", $_FILES['fil']['name'])));

      if(!$type == "jpg" || !$type == "jpeg" || !$type == "gif")
      {
      header("Location:
?show=add_galleri&error=picture&user=$_REQUEST[user]&name=$_REQUE
ST[name]");
      exit;   
      }   else {
    $add_galleri = "INSERT INTO galleri_names(name, user, userid,
time) values('$_REQUEST[name]', '$_REQUEST[user]', '1', '$now')";
    mysql_query($add_galleri);
      }

Problemet er så at når jeg f.eks. uploader en jpeg fil så
udskriver den headeren, selvom det kun burde gøre det hvis det
ikke var jpeg.

Håber i kan hjælpe..

mvh. Jeppe Christensen

--
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

 
 
Frederik Dam Sunne (25-01-2006)
Kommentar
Fra : Frederik Dam Sunne


Dato : 25-01-06 17:51

Jeppe Christensen wrote:
> Jeg har en form som ser således ud:
>
> <form class="form" method="post" action="?do=add_galleri"
> enctype="multipart/form-data">
>
> <input size="24" type="file" class="input_text"/>
>
> <input type="submit"/>
>
> </form>
>
> Når filen så bliver sendt videre vil jeg gerne tjekke om det er
> en billede fil. Dette gør jeg således:
>
> $from = $_FILES['fil']['tmp_name'];
> $type = strtolower(end(explode(".", $_FILES['fil']['name'])));
>
>       if(!$type == "jpg" || !$type == "jpeg" || !$type == "gif")
>       {
>       header("Location:
> ?show=add_galleri&error=picture&user=$_REQUEST[user]&name=$_REQUE
> ST[name]");
>       exit;   
>       }   else {
>     $add_galleri = "INSERT INTO galleri_names(name, user, userid,
> time) values('$_REQUEST[name]', '$_REQUEST[user]', '1', '$now')";
>     mysql_query($add_galleri);
>       }
>
> Problemet er så at når jeg f.eks. uploader en jpeg fil så
> udskriver den headeren, selvom det kun burde gøre det hvis det
> ikke var jpeg.
>
> Håber i kan hjælpe..
>
> mvh. Jeppe Christensen
>
Prøv at kigge på denne her bandit:
if(!$type == "jpg" || !$type == "jpeg" || !$type == "gif")

Den giver ikke så meget mening.

Mvh,

Frederik

Jeppe Christensen (25-01-2006)
Kommentar
Fra : Jeppe Christensen


Dato : 25-01-06 18:15

> Prøv at kigge på denne her bandit:
> if(!$type == "jpg" !$type == "jpeg" !$type == "gif")
>
> Den giver ikke så meget mening.

Har ændret den til:
if(!$type == "jpg" || !$type == "jpeg" || !$type == "gif")

men det virker stadigvæk ikke...

--
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

Leif Neland (26-01-2006)
Kommentar
Fra : Leif Neland


Dato : 26-01-06 15:31

Jeppe Christensen wrote:
>> Prøv at kigge på denne her bandit:
>> if(!$type == "jpg" !$type == "jpeg" !$type == "gif")
>>
>> Den giver ikke så meget mening.
>
> Har ændret den til:
> if(!$type == "jpg" || !$type == "jpeg" || !$type == "gif")
>
> men det virker stadigvæk ikke...

Udtrykket er altid sandt.

Udtrykket er sandt, hvis mindst et af elementerne er sande.

Hvis $type = "gif", er f.ex. !$type=="jpg" sandt. Og omvendt.
Og hvis $type = "hest" er alle 3 elementer sande.

Så enten
if (!($type == "jpg"|| $type == "jpeg" || $type == "gif")) /* sandt hvis
ikke det er mindst en af de kendte typer */
eller
if(!$type == "jpg" && !$type == "jpeg" && !$type == "gif") /* sandt hvis det
er forskellig fra alle de kendte typer */

Altså enten negeringen (!) udenfor parentes eller byt || med &&
Det giver samme resultat, bare forskellig måde at formulere det.

Men det er nok mere læseligt med array:

$billedtyper = array('gif','jpg','jpeg','png');
if (!(in_array($type,$billedtyper))

Og så har du forøvrigt glemt png-billeder.

Leif



Kasper Johansen (25-01-2006)
Kommentar
Fra : Kasper Johansen


Dato : 25-01-06 20:23

Hej Jeppe.

Hvis det er et billede du gerne vil genkende, så prøv det her:

<?
$billededata = GetImageSize("migbillede.jpg");
print_r($billededata);
?>


Funktionen læser specifikke billedeoplysninger, i stedet for bare
filnavnet. Kig helt specifikt på MIME.

http://php.net/getimagesize


--
Med venlig hilsen
Kasper Johansen

Jeppe Christensen (25-01-2006)
Kommentar
Fra : Jeppe Christensen


Dato : 25-01-06 20:44

> Hvis det er et billede du gerne vil genkende, så prøv det her:
>
> <?
&gt; $billededata = GetImageSize("migbillede.jpg");
&gt; print_r($billededata);
&gt; ?>
>

Hmm jae men tænkte på hvis det nu på et tidspunkt var noget andet en
billeder man kunne uploade, og i dette tilfælde stadigvæk bruge
grundstenene fra det script jeg ikke kan få til at virke nu.

Så prøver bare at komme frem til en løsning på hvorfor scriptet ikke
helt virker.

Men eller mange tak for hjælpen, selvom det ikke bare var specifikt
et billede.

--
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

Jeppe Christensen (25-01-2006)
Kommentar
Fra : Jeppe Christensen


Dato : 25-01-06 22:15

Har løst problemet ved at bruge:

   $mime = $_FILES["userfile"]["type"];
      
   if($mime == 'image/gif' || $mime == 'image/jpeg'){ echo "<br>Dette er
en accepteret fil!"; } else { echo "<br>Dette er ikke en accepteret
fil!";}

mvh. Jeppe Christensen



--
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

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste