[PHP] Extensie controle

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb al even rondgekeken op het forum maar kon geen antwoord vinden op mijn vraag.

Wat ik wil is het volgende. Ik haal nu gewoon banners op middels een query met de extentie jpg en gif. Nu heb ik ook swf toegevoegd in mijn upload functie alleen echo je dat natuurlijk anders dan images bestanden.

Ik wil een check gaan maken. Als hij een .jpg of gifje ophaalt gebruikt gebruikt hij <img src""> en als je een flashje ophaalt dat hij <embed src""> gebruikt.

Kan iemand mij op weg helpen?

Alvast bedankt voor de moeite.

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Over welke taal gaat het precies?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Sorry dat ik dit niet heb gemeld.. Het gaat om PHP.

Mijn excuses voor het ongemak.

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Verwijderd schreef op dinsdag 11 oktober 2005 @ 17:35:
Sorry dat ik dit niet heb gemeld.. Het gaat om PHP.

Mijn excuses voor het ongemak.
Ik weet niet precies hoe je alles in de database opslaat, maar met een IF-constructie zou je een heel eind moeten komen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het plaatje of flashje slaat ie op in een mapje en in de tabel als timestamp.

Ik ben inderdaad met een if constructie geholpen alleen weet ik niet goed hoe ik dit moet aanpakken.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

substr gebruiken op de bestandsnaam, en dan gewoon simpelweg kijken wat er staat op de laatste paar posities. Overigens is een extensie niet echt veelzeggend, een PHP file kan ook een plaatje genereren. Kijk dan liever naar het mime-type...

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik begrijp dat een php file ook een plaatje kan genereren. dat is ook niet het probleem.

het gaat mij om de echo.. Met img kan je geen flashje filetje echoen en met embed geen afbeelding.

Ik wil dat ie in het loopje checkt of het een swf of jpg/gif file is zodat ie de keuze maakt hoe te echoen.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

explode op . en pak de laatste entry in de array?

Acties:
  • 0 Henk 'm!

  • OverSoft
  • Registratie: December 2000
  • Laatst online: 18-09 11:09
if(strstr(".swf",$bestandsnaam))
echo "<embed ... ";
else
echo "<img ... ";

zoiets?

Acties:
  • 0 Henk 'm!

  • Xenon
  • Registratie: Januari 2001
  • Laatst online: 21-08 09:12
PHP:
1
2
3
4
5
6
if(strtolower(substr(trim($file),(strlen(trim($file)) - 3),3)) == "swf") { 
    echo "..."; 
} 
else { 
    echo "..."; 
}

ProtocoLAN.be: De beste LAN van de Maaskant


Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
4
5
6
7
8
9
$ext = substr($file,-3);
    if (($ext == "gif") or ($ext == "jpg"))
    {
    echo "[img]'$file'[/img]";
    }
    if ($ext == "swf")
    {
    echo "embed ding $file";
    }

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op dinsdag 11 oktober 2005 @ 17:39:
Ik begrijp dat een php file ook een plaatje kan genereren. dat is ook niet het probleem.

het gaat mij om de echo.. Met img kan je geen flashje filetje echoen en met embed geen afbeelding.

Ik wil dat ie in het loopje checkt of het een swf of jpg/gif file is zodat ie de keuze maakt hoe te echoen.
Waar -NMe- op doelt: je kan een verwijzing naar een .php file hebben die vervolgens gewoon een plaatje uitpoept. Het wordt dan lastig om alleen maar op extensie te checken :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

PHP:
1
2
3
4
5
6
7
function get_ext ($filename) {
   $a = explode (".", $filename);
   if (sizeof($a))
      return $a[sizeof($a)-1];
   else
      return '';
}


Voor nog een suggestie :P

Maar goed, ik neem even aan dat extensie voldoende is en dat ie zelf weet wat er aangeleverd/geupload kan worden (al is het in het laatste geval beter het bij het opslaan te verwerken uiteraard).

Bovenstaande code werkt ook niet als een afbeelding of swf bijvoorbeeld parameters heeft.

[ Voor 47% gewijzigd door Bosmonster op 11-10-2005 17:52 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik dank u allen voor uw goede reacties!

Ik denk dat ik er zo helemaal uit ga komen.

Bedankt Tweakers!

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
OverSoft schreef op dinsdag 11 oktober 2005 @ 17:44:
if(strstr(".swf",$bestandsnaam))
echo "<embed ... ";
else
echo "<img ... ";
zoiets?
Dat klopt niet als je iets hebt als:
screenshotflashfilm.swf.jpg

Je kan ook eens kijken naar mimechecks.

Acties:
  • 0 Henk 'm!

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 20-09 18:24

TheBorg

Resistance is futile.

Ik doe het meestal zo:
PHP:
1
$sExtension = strtolower(strrchr($sFileName, "."));

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Iedereen heeft het over mime-type, zou iemand daar eens een vorobeeld van kunnen posten? Voor zover ik weet zijn mime-types OS afhankelijk en wordt daarvoor ook vaak naar de extensie gekeken?

(Ja ik weet dat getimagesize types terug kan geven, maar dat zijn geen MIME-types, gewoon bestandstypes die GD uit de afbeelding haalt)

[ Voor 27% gewijzigd door Bosmonster op 11-10-2005 17:59 ]


Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

mime_content_type
Returns the MIME content type for a file as determined by using information from the magic.mime file. Content types are returned in MIME format, like text/plain or application/octet-stream.

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • Mr. Bondt
  • Registratie: Februari 2005
  • Laatst online: 27-08 14:50
http://nl3.php.net/manual/nl/function.mime-content-type.php

PHP heb een mooie functie voor de MIME types! :)

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Ehm yeah.. maar vervolgens declareer je in magic.mime gewoon weer koppelingen van extensies naar mime-types :P

Acties:
  • 0 Henk 'm!

  • Andre-85
  • Registratie: April 2003
  • Niet online

Andre-85

Sid

Met pathinfo kan je ook de extensie van een file opvragen.

Lorem
Whenever we feel the need to comment something, we write a method instead. - Martin Fowler
People who think they know everything really annoy those of us who know we don't - Bjarne Stroustrup


Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

Bosmonster schreef op dinsdag 11 oktober 2005 @ 18:00:
[...]
Ehm yeah.. maar vervolgens declareer je in magic.mime gewoon weer koppelingen van extensies naar mime-types :P
Tsja als je de namen niet al te mooi vind kan je ze gerust aanpassen. Het hoeft verder niet :P

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

disjfa schreef op dinsdag 11 oktober 2005 @ 18:03:
[...]

Tsja als je de namen niet al te mooi vind kan je ze gerust aanpassen. Het hoeft verder niet :P
Wat ik bedoel is dat het nogal zinloos is. Mime-type is ook maar een vertaling van het OS/software naar een type-string. Meestal wordt hiervoor ook naar de extensie gekeken.

Als er dan gezegd wordt, je moet niet op extensie kijken, maar naar mime-type, slaat dat dus als een tang op een varken.

GDlib/getimagesize() is nog de beste optie als je wilt kijken wat voor bestand het is. Detecteert ook SWF overigens.

image_type_to_mime_type() kun je nog gebruiken om die gdlib type-string weer op te zetten naar mime-type zie ik, maar das in het kader van TS nogal zinloos als je alleen maar verschillende tags wilt genereren.

[ Voor 15% gewijzigd door Bosmonster op 11-10-2005 18:09 ]


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Simpelweg kijken of de eerste 3 bytes FWS of CWS zijn, dan heb je over het algemeen te maken met een SWF file (respectievelijk normaal of compressed) werkt simpel zat om te kijken wat voor bestandstype iets is, hoewel het niet heel vertrouwelijk is. (Dus ook de extentie controleren!)

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

PrisonerOfPain schreef op dinsdag 11 oktober 2005 @ 19:19:
Simpelweg kijken of de eerste 3 bytes FWS of CWS zijn, dan heb je over het algemeen te maken met een SWF file (respectievelijk normaal of compressed) werkt simpel zat om te kijken wat voor bestandstype iets is, hoewel het niet heel vertrouwelijk is. (Dus ook de extentie controleren!)
Dat is precies wat getimagesize() doet, het bestand controleren (en doet dat voor zover ik weet met 100% zekerheid)

nb: getimagesize() geeft meer terug dan alleen 'size' ;)

[ Voor 6% gewijzigd door Bosmonster op 11-10-2005 20:11 ]


Acties:
  • 0 Henk 'm!

  • OverSoft
  • Registratie: December 2000
  • Laatst online: 18-09 11:09
djluc schreef op dinsdag 11 oktober 2005 @ 17:52:
[...]

Dat klopt niet als je iets hebt als:
screenshotflashfilm.swf.jpg

Je kan ook eens kijken naar mimechecks.
Tsja, dat is waar, maar hoe vaak komt dat voor...
Anders kan je inderdaad altijd nog explode proberen en daar de laatste array van pakken.

Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

Bosmonster schreef op dinsdag 11 oktober 2005 @ 20:10:
[...]
Dat is precies wat getimagesize() doet, het bestand controleren (en doet dat voor zover ik weet met 100% zekerheid)
Ik zat net wat te kijken naar de mime types en hoe deze ze opvraagt. En zover ik kan zien haalt hij ze ook gewoon zo op zoals getimagesize().

Natuurlijk is getimagesize() een stuk handiger als je alleen plaatjes de rest wat hij ondersteund moet bekijken.

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 20-09 18:24

TheBorg

Resistance is futile.

Getimagesize() werkt inderdaad erg goed en met een erg hoge zekerheid. De fuctie geeft namelijk ook de resolutie van het plaatje terug. Lijkt me erg lastig om daar nog andere code (bijv. PHP) bij te proppen. Nadeel is wel dat als je de functie voor de gek gaat houden (bijv. door een willekeurig niet-plaatje) te renamen naar een extensie die de functie wel ondersteund (.GIF, .JPG, etc.) dan kost het aardig wat resources kost voordat Getimagesize() met een resultaat terug komt.

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
TheBorg schreef op dinsdag 11 oktober 2005 @ 20:22:
Nadeel is wel dat als je de functie voor de gek gaat houden (bijv. door een willekeurig niet-plaatje) te renamen naar een extensie die de functie wel ondersteund (.GIF, .JPG, etc.) dan kost het aardig wat resources kost voordat Getimagesize() met een resultaat terug komt.
getImageSize kijk niet eens naar de extentie van een bestand. De enige functie die dat doet is image_Type_To_Extension.
Bosmonster schreef op dinsdag 11 oktober 2005 @ 20:10:
Dat is precies wat getimagesize() doet, het bestand controleren (en doet dat voor zover ik weet met 100% zekerheid)
getImageSize doet het op dezelfde manier als ik aangaf inderdaad (het file header/marker/signature gedeelte), dus met die zekerheid zit het wel goed. Probleem is echter dat getImageSize nog een hoop andere bestanden probeert en nog een hoop andere gegevens uitleest, is een kwestie van voorkeur wellicht, zelf kijken of getImageSize aanroepen.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

disjfa schreef op dinsdag 11 oktober 2005 @ 20:16:
[...]

Ik zat net wat te kijken naar de mime types en hoe deze ze opvraagt. En zover ik kan zien haalt hij ze ook gewoon zo op zoals getimagesize().
Je hebt gelijk, maar je weet het nooit zeker. magic.mime (waar mime_content_type() z'n informatie vandaan haalt) kan allerlei soorten controle's bevatten, zowel extensie checks als header checks. Je weet dus nog niet of die alleen maar op extensie checked of de header.

Bovendien is dat bestand waarschijnlijk verre van compleet en betwijfel ik zelfs of iets als SWF er wel in staat standaard.

Vandaar getimagesize(), weet je zeker dat ie alle grafische formaten kent, via de header gecheckt.
Pagina: 1