/ 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 IF sætning.
Fra : Mikkel Jakobsen


Dato : 30-09-07 06:55

Hej Ng.

Jeg er ved at lave en upload kode, hvor jeg kan uploademellem
1 og 5 billeder på en gang.
selve upload koden virker fint nok.

Nu vil jeg bare kontrollere at alle filer der uploades er jpeg
billeder.

Jeg skal opnå:

- Alle filer skal være af typen 'image/jpeg'
- eller 'image/pjpeg' for IE
- eller '' , da det kan ske jeg kun uploader 2 billeder.

men når $fil_mine_type feks. er 'application/octet-stream'
uploader den alligevel, jeg har set mig blind på fejlen.



Kode..

if     (
            ($fil_mine_type[0] == 'image/pjpeg') || ($fil_mine_type[0]
=='') || ($fil_mine_type[0] == 'image/jpeg') &&
            ($fil_mine_type[1] == 'image/pjpeg') || ($fil_mine_type[1]
=='') || ($fil_mine_type[1] == 'image/jpeg') &&
            ($fil_mine_type[2] == 'image/pjpeg') || ($fil_mine_type[2]
=='') || ($fil_mine_type[2] == 'image/jpeg') &&
            ($fil_mine_type[3] == 'image/pjpeg') || ($fil_mine_type[3]
=='') || ($fil_mine_type[3] == 'image/jpeg') &&
            ($fil_mine_type[4] == 'image/pjpeg') || ($fil_mine_type[4]
=='') || ($fil_mine_type[4] == 'image/jpeg')
          )
          {}else
          { $fejl_mime_type = "<li><p>Alle filer SKAL være
JPEG/jpg</li>";}


Mikkel


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

 
 
Johan Holst Nielsen (30-09-2007)
Kommentar
Fra : Johan Holst Nielsen


Dato : 30-09-07 10:43

Mikkel Jakobsen wrote:
> Hej Ng.
>
> Jeg er ved at lave en upload kode, hvor jeg kan uploademellem
> 1 og 5 billeder på en gang.
> selve upload koden virker fint nok.
>
> Nu vil jeg bare kontrollere at alle filer der uploades er jpeg
> billeder.
>
> Jeg skal opnå:
>
> - Alle filer skal være af typen 'image/jpeg'
> - eller 'image/pjpeg' for IE
> - eller '' , da det kan ske jeg kun uploader 2 billeder.
>
> men når $fil_mine_type feks. er 'application/octet-stream'
> uploader den alligevel, jeg har set mig blind på fejlen.
>
>
>
> Kode..
>
> if     (
>             ($fil_mine_type[0] == 'image/pjpeg') || ($fil_mine_type[0]
> =='') || ($fil_mine_type[0] == 'image/jpeg') &&
>             ($fil_mine_type[1] == 'image/pjpeg') || ($fil_mine_type[1]
> =='') || ($fil_mine_type[1] == 'image/jpeg') &&
>             ($fil_mine_type[2] == 'image/pjpeg') || ($fil_mine_type[2]
> =='') || ($fil_mine_type[2] == 'image/jpeg') &&
>             ($fil_mine_type[3] == 'image/pjpeg') || ($fil_mine_type[3]
> =='') || ($fil_mine_type[3] == 'image/jpeg') &&
>             ($fil_mine_type[4] == 'image/pjpeg') || ($fil_mine_type[4]
> =='') || ($fil_mine_type[4] == 'image/jpeg')
>           )
>           {}else
>           { $fejl_mime_type = "<li><p>Alle filer SKAL være
> JPEG/jpg</li>";}


Du skriver overalt i din if sætning "fil_mine_type" mon det ikke skal
være "fil_mime_type"?

Derudover skal du have nogle ekstra paranteser... jeg ville dog lave det
lidt mere fleksibelt... f.eks.

function isMimeCorrect($file_mime_type) {
$allowMime = array('','image/pjpeg','image/jpeg');
foreach($file_mime_type as $mime) {
if(!in_array($mime,$allowMime)) {
return false;
}
}
return true;
}

if($isMimeCorrect($file_mime_type) === false) {
$fejl_mime_type = '<li><p>Alle filer skal være JPEG/jpg</li>';
}
else {
//forsæt uploadet
}

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Johan Holst Nielsen (30-09-2007)
Kommentar
Fra : Johan Holst Nielsen


Dato : 30-09-07 10:44

Johan Holst Nielsen wrote:
> if($isMimeCorrect($file_mime_type) === false) {

ups der skal selvfølgelig ikke $ foran isMimeCorrect da det er en
funktion :)

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Mikkel Jakobsen (30-09-2007)
Kommentar
Fra : Mikkel Jakobsen


Dato : 30-09-07 12:30

>
> Du skriver overalt i din if sætning "fil_mine_type" mon det ikke skal
> være "fil_mime_type"?


Ja... det har du ret i, det var en fejl. men det er ikke det der er skyld i
at det ikke virker. da jeg konsekvens har skrevet forkert. (har rettet det
nu)

$fil_mime_type   = $_FILES['filen']['type'];


> function isMimeCorrect($file_mime_type) {
> $allowMime = array('','image/pjpeg','image/jpeg');
> foreach($file_mime_type as $mime) {
> if(!in_array($mime,$allowMime)) {
> return false;
> }
> }
> return true;
> }
>
> if(isMimeCorrect($file_mime_type) === false) {
> $fejl_mime_type = '<li><p>Alle filer skal være JPEG/jpg</li>';
> }
> else {
> //forsæt uploadet
> }


Jeg har afprøvet din kode, men det er samme problem....
jeg kan stadig uploade text filer, og php filer.

Mikkel


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

Johan Holst Nielsen (30-09-2007)
Kommentar
Fra : Johan Holst Nielsen


Dato : 30-09-07 13:17

Mikkel Jakobsen wrote:
>>
>> Du skriver overalt i din if sætning "fil_mine_type" mon det ikke skal
>> være "fil_mime_type"?
>
>
> Ja... det har du ret i, det var en fejl. men det er ikke det der er skyld i
> at det ikke virker. da jeg konsekvens har skrevet forkert. (har rettet det
> nu)
>
> $fil_mime_type   = $_FILES['filen']['type'];
>
>
>> function isMimeCorrect($file_mime_type) {
>> $allowMime = array('','image/pjpeg','image/jpeg');
>> foreach($file_mime_type as $mime) {
>> if(!in_array($mime,$allowMime)) {
>> return false;
>> }
>> }
>> return true;
>> }
>>
>> if(isMimeCorrect($file_mime_type) === false) {
>> $fejl_mime_type = '<li><p>Alle filer skal være JPEG/jpg</li>';
>> }
>> else {
>> //forsæt uploadet
>> }
>
>
> Jeg har afprøvet din kode, men det er samme problem....
> jeg kan stadig uploade text filer, og php filer.
>

Virker mest som om du har lavet en fejl et andet sted så....
Kan du vise mig den fulde source af din upload fil?


--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Bertel Lund Hansen (30-09-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 30-09-07 13:34

Johan Holst Nielsen skrev:

> function isMimeCorrect($file_mime_type) {
> $allowMime = array('','image/pjpeg','image/jpeg');
> foreach($file_mime_type as $mime) {
> if(!in_array($mime,$allowMime)) {
> return false;
> }
> }
> return true;
> }

Sidebemærkning:

function isMimeCorrect($file_mime_type) {
$allowMime = array('','image/pjpeg','image/jpeg');
foreach($file_mime_type as $mime) {
return in_array($mime,$allowMime);
}

Jeg tester aldrig på en ren boolesk værdi hvis den kan returneres
i stedet.

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

Johan Holst Nielsen (30-09-2007)
Kommentar
Fra : Johan Holst Nielsen


Dato : 30-09-07 15:31

Bertel Lund Hansen wrote:
> Johan Holst Nielsen skrev:
>
>> function isMimeCorrect($file_mime_type) {
>> $allowMime = array('','image/pjpeg','image/jpeg');
>> foreach($file_mime_type as $mime) {
>> if(!in_array($mime,$allowMime)) {
>> return false;
>> }
>> }
>> return true;
>> }
>
> Sidebemærkning:
>
> function isMimeCorrect($file_mime_type) {
> $allowMime = array('','image/pjpeg','image/jpeg');
> foreach($file_mime_type as $mime) {
> return in_array($mime,$allowMime);
> }
>
> Jeg tester aldrig på en ren boolesk værdi hvis den kan returneres
> i stedet.
>

Hvilkte så vil være fuldstændig idiotisk i dette tilfælde - da hvis fil
1 er korrekt men fil 2 er ukorrekt vil man få at alle filer er korrekte.


--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Bertel Lund Hansen (30-09-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 30-09-07 16:38

Johan Holst Nielsen skrev:

> Hvilkte så vil være fuldstændig idiotisk i dette tilfælde -

Du har ret.

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

Thomas (01-10-2007)
Kommentar
Fra : Thomas


Dato : 01-10-07 05:48

"Bertel Lund Hansen" <unospamo@lundhansen.dk> wrote in message
news:fojec6hrti1j.74od5vhy4ajm.dlg@40tude.net...
>> function isMimeCorrect($file_mime_type) {
>> $allowMime = array('','image/pjpeg','image/jpeg');
>> foreach($file_mime_type as $mime) {
>> if(!in_array($mime,$allowMime)) {
>> return false;
>> }
>> }
>> return true;
>> }
>
> Sidebemærkning:
>
> function isMimeCorrect($file_mime_type) {
> $allowMime = array('','image/pjpeg','image/jpeg');
> foreach($file_mime_type as $mime) {
> return in_array($mime,$allowMime);
> }
>
> Jeg tester aldrig på en ren boolesk værdi hvis den kan returneres
> i stedet.

Måske skulle du begynde at gøre det. Hint: lort i foreach.



Mikkel Jakobsen (30-09-2007)
Kommentar
Fra : Mikkel Jakobsen


Dato : 30-09-07 16:03

Johan Holst Nielsen

>
> Derudover skal du have nogle ekstra paranteser... jeg ville dog lave det
> lidt mere fleksibelt... f.eks.
>
> function isMimeCorrect($file_mime_type) {
> $allowMime = array('','image/pjpeg','image/jpeg');
> foreach($file_mime_type as $mime) {
> if(!in_array($mime,$allowMime)) {
> return false;
> }
> }
> return true;
> }
>
> if($isMimeCorrect($file_mime_type) === false) {
> $fejl_mime_type = '<li><p>Alle filer skal være JPEG/jpg</li>';
> }
> else {
> //forsæt uploadet
> }


Desværre fik jeg aldrig din kode til at virke, jeg ved ikke hvorfor.

men efter lidt kode knækkeri, fik jeg det til at virke på denne måde.

if     (
(($fil_mime_type[0] == 'image/pjpeg') ||
($fil_mime_type[0] =='') || ($fil_mime_type[0] == 'image/jpeg')) &&
            (($fil_mime_type[1] == 'image/pjpeg') || ($fil_mime_type[1] =='') ||
($fil_mime_type[1] == 'image/jpeg')) &&
            (($fil_mime_type[2] == 'image/pjpeg') || ($fil_mime_type[2] =='') ||
($fil_mime_type[2] == 'image/jpeg'))

          )
          {}else
          { $fejl_mime_type = "<li><p>Alle filer SKAL være JPEG/jpg</li>";}

Tak.
Mikkel

www.bonzai.adsl.dk/galleri

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

Johan Holst Nielsen (30-09-2007)
Kommentar
Fra : Johan Holst Nielsen


Dato : 30-09-07 17:17

Mikkel Jakobsen wrote:
> Johan Holst Nielsen
>
>>
>> Derudover skal du have nogle ekstra paranteser... jeg ville dog lave det
>> lidt mere fleksibelt... f.eks.
>>
>> function isMimeCorrect($file_mime_type) {
>> $allowMime = array('','image/pjpeg','image/jpeg');
>> foreach($file_mime_type as $mime) {
>> if(!in_array($mime,$allowMime)) {
>> return false;
>> }
>> }
>> return true;
>> }
>>
>> if($isMimeCorrect($file_mime_type) === false) {
>> $fejl_mime_type = '<li><p>Alle filer skal være JPEG/jpg</li>';
>> }
>> else {
>> //forsæt uploadet
>> }
>
>
> Desværre fik jeg aldrig din kode til at virke, jeg ved ikke hvorfor.
>
> men efter lidt kode knækkeri, fik jeg det til at virke på denne måde.
>
> if     (
> (($fil_mime_type[0] == 'image/pjpeg') ||
> ($fil_mime_type[0] =='') || ($fil_mime_type[0] == 'image/jpeg')) &&
>             (($fil_mime_type[1] == 'image/pjpeg') || ($fil_mime_type[1] =='') ||
> ($fil_mime_type[1] == 'image/jpeg')) &&
>             (($fil_mime_type[2] == 'image/pjpeg') || ($fil_mime_type[2] =='') ||
> ($fil_mime_type[2] == 'image/jpeg'))
>
>           )
>           {}else
>           { $fejl_mime_type = "<li><p>Alle filer SKAL være JPEG/jpg</li>";}

Netop det jeg nævnte om du manglende parantser... problemet med din kode
er dog hvis man end dag vil f.eks. tilbyde at de kan uploade 5-6-7 eller
flere billeder - så skal du til at rode i koden igen... det er ikke
optimalt... det er bedre hvis det ligger og checker et ligegyldigt antal
- derfor skrev jeg funktionen til dig :)



--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Mikkel Jakobsen (30-09-2007)
Kommentar
Fra : Mikkel Jakobsen


Dato : 30-09-07 18:35

> Netop det jeg nævnte om du manglende parantser... problemet med din kode
> er dog hvis man end dag vil f.eks. tilbyde at de kan uploade 5-6-7 eller
> flere billeder - så skal du til at rode i koden igen... det er ikke
> optimalt... det er bedre hvis det ligger og checker et ligegyldigt antal
> - derfor skrev jeg funktionen til dig :)
>

Jo tak... Jeg forstår også godt din pointe med de 5-7 billeder.

jeg kan også godt forstå princippet i din funktion, kunne bare ikke lige
se hvorfor den ikke virkede, og da jeg ikke er så skrap til PHP vælger jeg den
sikre måde, indtil jeg forstår din metode 100%.

Mikkel

www.bonzai.adsl.dk/galleri


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

Martin (01-10-2007)
Kommentar
Fra : Martin


Dato : 01-10-07 01:53

Mikkel Jakobsen wrote:
>> Netop det jeg nævnte om du manglende parantser... problemet med din kode
>> er dog hvis man end dag vil f.eks. tilbyde at de kan uploade 5-6-7 eller
>> flere billeder - så skal du til at rode i koden igen... det er ikke
>> optimalt... det er bedre hvis det ligger og checker et ligegyldigt antal
>> - derfor skrev jeg funktionen til dig :)
>>
>
> Jo tak... Jeg forstår også godt din pointe med de 5-7 billeder.

<input type="file" name="upload[]" />
<input type="file" name="upload[]" />
<input type="file" name="upload[]" />
<input type="file" name="upload[]" />

Som du kan se er disse 4 felter 100% magen til hinanden, men den lille
"finte" er at lade navnet stå som et array, altså upload[]

Nu kan via en løkke hente uanset antal af felter ud. Fx

$allowed_types = array('image/jpg','image/png','image/gif');
foreach($_FILES['upload'] AS $upload) {
if(!in_array($upload['type'],$allowed_types)) die('Alle skal være
billeder');
}


>
> jeg kan også godt forstå princippet i din funktion, kunne bare ikke lige
> se hvorfor den ikke virkede, og da jeg ikke er så skrap til PHP vælger jeg den
> sikre måde, indtil jeg forstår din metode 100%.
>
> Mikkel
>
> www.bonzai.adsl.dk/galleri
>
>

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

Månedens bedste
Årets bedste
Sidste års bedste