Do not argue with an idiot. He will drag you down to his level and beat you with experience.
Ja...maar wat bedoel je daar precies mee?Cartman! schreef op dinsdag 08 juni 2010 @ 10:04:
Je bent er wel van op de hoogte dat de extensie niks zegt over de inhoud?
Do not argue with an idiot. He will drag you down to his level and beat you with experience.
Oké, die is inmiddels ook weggehaald aangezien dat niet werkte...de vraag rest dus....hoe wel?rutgerw schreef op dinsdag 08 juni 2010 @ 10:04:
Mijn glazen bol zegt dat je door het toevoegen van een lege string bestandsnamen toelaat die eindigen op een punt.
Do not argue with an idiot. He will drag you down to his level and beat you with experience.
Dat kan prima, alleen ben je er met het checken van de extensie niet. Je zult bijv. een MIME check moeten doen. Afhankelijk van je PHP versie kan dat met http://php.net/manual/en/function.mime-content-type.php of met http://www.php.net/manual/en/ref.fileinfo.php (de laatste natuurlijk het liefst)
Nu vraag ik me alleen nog af wat er voor bestanden zijn zonder extensie..?
Waarom doe je in eerste instantie die check? Het is zeker geen gegarandeerde veiligheid namelijk.
Dubbelposten is niet nodig ook, je 2 zinnen kunnen gewoon in 1 post.
edit: heb je al verder iets geprobeerd, ik gooi hem er maar weer in: ga debuggen
[ Voor 11% gewijzigd door Cartman! op 08-06-2010 10:11 ]
Het hele script werkt al, inclusief bijlagen..alles komt aan, keurig in het format zoals ik het wil hebben.Bernardo schreef op dinsdag 08 juni 2010 @ 10:07:
Als ik het goed begrijp wil je bijlages versturen met php-mail?
Dat kan prima, alleen ben je er met het checken van de extensie niet. Je zult bijv. een MIME check moeten doen. Afhankelijk van je PHP versie kan dat met http://php.net/manual/en/function.mime-content-type.php of met http://www.php.net/manual/en/ref.fileinfo.php (de laatste natuurlijk het liefst)
Nu vraag ik me alleen nog af wat er voor bestanden zijn zonder extensie..?
De persoon die het formulier invult krijgt ook een bevestigingsmail, alles is geregeld.
Het enige is dat er applicatie specifieke bestanden zijn die hier intern gebruikt worden die geen extensie hebben, waarom dat is weet ik niet maar goed....zo is de situatie. Dat is de reden dat ik wil weten hoe ik die kan toevoegen in de reeds bestaande array.
Do not argue with an idiot. He will drag you down to his level and beat you with experience.
Allereerst moet je ons echt meer informatie geven en laten zien wat je met die array doet, voordat we je vraag goed kunnen beantwoorden. Mijn glazen bol zit op dezelfde frequentie als die van rutgerw en zegt dat je met het toevoegen van een lege string waarschijnlijk slechts bestandsnamen die op een punt (".") eindigen toelaat en geen bestandsnamen die in het geheel geen extensie hebben. Je geeft nu aan dat je de punt in de vergelijking wel weg wilt halen, maar wat je dan doet streeft echter je doel voorbij. Je gaat dan namelijk vermoedelijk alle bestanden toestaan, immers, alle bestanden eindigen wel op een lege string. Een mogelijke oplossing is de punt naar de array te verplaatsen.
Maar het blijft hoe dan ook koffiedikkijken. Zou je ons in ieder geval de volgende informatie kunnen geven:
1) Wat is het doel van je check op extensies?
2) Waar komen de bestanden vandaan, zijn het uploads van de gebruikerszijde?
3) Op welke manier ga je om met de waarden in die array, waar vindt de werkelijke check plaats?
Om terug te gaan naar je oorspronkelijke probleem. Lees je volledige code nog eens door en probeer te begrijpen wat er op elke regel gebeurt. Probeer de paar regels te achterhalen die je bestand daadwerkelijk afkeuren. Kijk naar de manier waarop $allowed_extentions wordt vergeleken met de bestandsnaam en kom dan tot de conclusie waarom het toevoegen van een lege string niet werkt.
Het is heel leuk en aardig dat je iets 'werkends' kunt krijgen door code van internet bij elkaar te lopen knippen en plakken, maar zolang je neit begrijpt waar je code mee bezig is zul je alleen maar tegen dit soort triviale dingen aan blijven lopen.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Extensies is een windows only ding.
Je kan zelfs zonder extensies leven.
Zo is de iphone ookzonder in het mail programma (wat ik keer hebt gezien)
En herken de telefoon het ook als afbeelding (in dit geval jpg)
Als je bijvoorbeeld dingen in een hexeditor opent kan je zelfs herkennen wat voor bestand het is, zonder dat je de extensies weet.
De gebruiker (De uploader) mag alleen bestanden uploaden met de extentie die in zijn array staat.
Omdat er ook bestanden zijn zonder extentie (hosts-bestand bijvoorbeeld) die verstuurd moeten worden, moet zoiets ook in de array voorkomen...
Kortom, het doel is niet het checken van de extentie, het doel is bestanden zonder extentie versturen via het script.
Zo lees ik het
edit: volgens zijn allowed_extensions mogen alleen jpg, png, txt, etc verstuurd worden. Als de uploader zijn hosts-bestand wil uploaden, kan dat dus niet, want die eindigt niet op jpg, png, txt en dergelijke. Hoe kan hij dus een bestand zonder extentie toevoegen aan de lijst met allowed_extensions
@ hieronder: dat is dan wel weer zo idd
[ Voor 26% gewijzigd door maarud op 08-06-2010 10:34 ]
Anyone who gets in between me and my morning coffee should be insecure.
Dat is inderdaad precies wat ik bedoelmaarud schreef op dinsdag 08 juni 2010 @ 10:23:
Volgens mij denken jullie te moeilijk, de TS bedoelt het heel simpel.
De gebruiker (De uploader) mag alleen bestanden uploaden met de extentie die in zijn array staat.
Omdat er ook bestanden zijn zonder extentie (hosts-bestand bijvoorbeeld) die verstuurd moeten worden, moet zoiets ook in de array voorkomen...
Kortom, het doel is niet het checken van de extentie, het doel is bestanden zonder extentie versturen via het script.
Zo lees ik het
edit: volgens zijn allowed_extensions mogen alleen jpg, png, txt, etc verstuurd worden. Als de uploader zijn hosts-bestand wil uploaden, kan dat dus niet, want die eindigt niet op jpg, png, txt en dergelijke. Hoe kan hij dus een bestand zonder extentie toevoegen aan de lijst met allowed_extensions
@ hieronder: dat is dan wel weer zo idd
Het is niet de bedoeling dat de gebruikers zometeen executable files en alle andere soorten rotzooi gaan uploaden, daarom is het aantal toegelaten extensies beperkt. Wij kwamen er alleen achter dat sommige gebruikers applicatie specifieke bestanden willen sturen welke niet voorzien zijn van een extensie.
Vreemd, of het nu door mij geschreven is of door een ander, als jullie kunnen zien waar de fout zit en ik hiermee geholpen ben mag dit toch geen probleem zijn. Als zelfs dat al niet meer toegestaan is dan wordt het wel heel erg.Zoals ik in je vorige topic ook aanraadde: neem eens contact op met diegene die de code gemaakt heeft. Heel leuk dat je het min of meer werkend hebt gekregen zoals je wil, maar support op code van derden doen we eigenlijk niet.
Er zijn echter zoveel mensen die stukjes script van anderen gebruiken, ik bedoel...waarom zou je het wiel voor de tweede keer uitvinden? Hieronder staat in ieder geval het stuk code wat de extensie van de bestanden uiteindelijk goed- of afkeurt op basis van de array:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| //Get the uploaded file information
$name_of_uploaded_file = basename($_FILES['uploaded_file']['name']);
//get the file extension of the file
$type_of_uploaded_file = substr($name_of_uploaded_file,
strrpos($name_of_uploaded_file, '.') + 1);
$allowed_ext = false;
for($i=0; $i<sizeof($allowed_extensions); $i++)
{
if(strcasecmp($allowed_extensions[$i],$type_of_uploaded_file) == 0)
{
$allowed_ext = true;
}
}
if(!$allowed_ext)
{
$errors .= "\n Het verstuude bestandstype wordt niet ondersteund. ".
" Alleen de volgende bestandstype worden ondersteund: ".implode(',',$allowed_extensions);
} |
Do not argue with an idiot. He will drag you down to his level and beat you with experience.
Je helpen is geen probleem, maar dan zou het wel fijn zijn als je zelf ook eens wat probeert en jezelf een beetje verdiept in de materie.
The problem with common sense is that it's not all that common. | LinkedIn | Flickr
Heb je de code al gedebugged voor de case waarin er geen extensie meegegeven wordt ?
Wat bevat bijvoorbeeld $type_of_uploaded_file als er geen extensie aanwezig is ?
Hoe kan je dat vervolgens gebruiken om een "uitzondering" op de check te maken als er geen extensie is ?
When life gives you lemons, start a battery factory
Je kan dus beter zoals Bernardo in "[PHP]Bestanden zonder extensie in mail form" al aangeeft controleren op de inhoud en op basis daarvan aangeven of je het bestand accepteerd of niet.
Assumptions are the mother of all fuck ups | iRacing Profiel
bv: Bestand.tar.gz, waarbij 'tar.gz' omschrijft dat het om een tar-bestand gaat dat met gzip compressie kleiner is gemaakt (bestand.exe.gz anyone?)
als ik nietlegaal.exe hernoem naar mooi.jpg dan is het niet ineens een plaatje..UniPer schreef op dinsdag 08 juni 2010 @ 11:00:
Dat is inderdaad precies wat ik bedoel
Het is niet de bedoeling dat de gebruikers zometeen executable files en alle andere soorten rotzooi gaan uploaden, daarom is het aantal toegelaten extensies beperkt. Wij kwamen er alleen achter dat sommige gebruikers applicatie specifieke bestanden willen sturen welke niet voorzien zijn van een extensie.
De bedoeling is natuurlijk dat je zelf kunt zien waarom het niet werkt. Bekijke het eens van de andere kant. Hoe zou het forum er hier uit zien wanneer iedereen 3 stukken code bij elkaar plakt en vervolgens hier een topic opent om te vragen hoe ze nu daadwerkelijk samengevoegd meoten worden?Vreemd, of het nu door mij geschreven is of door een ander, als jullie kunnen zien waar de fout zit en ik hiermee geholpen ben mag dit toch geen probleem zijn. Als zelfs dat al niet meer toegestaan is dan wordt het wel heel erg.
We zijn hier geen afhaalbalie waar je een half werkend script wat je neit begrijpt neer kunt dumpen met de mededeling 'Graag functionaliteit X toevoegen'
Uiteraard wordt er veel hergebruikt. Maar als graag een wiel wilt hergebruiken dan is het wel handig dat je weet waarom hij rond is.Er zijn echter zoveel mensen die stukjes script van anderen gebruiken, ik bedoel...waarom zou je het wiel voor de tweede keer uitvinden?
Precies wat ik dacht. Ga eerst maar eens even kijken naar die code. Bekijk regel voor regel wat er gebeurt. Hou daarbij de opmerking van ruthgerw in het achterhoofd (het tweede bericht in deze draad). Als je er dan nog neit uit komt ben ik bang dat dit een 'bij het handje neem' topic wordt en dat zien we hier liever neit.Hieronder staat in ieder geval het stuk code wat de extensie van de bestanden uiteindelijk goed- of afkeurt op basis van de array:
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21//Get the uploaded file information $name_of_uploaded_file = basename($_FILES['uploaded_file']['name']); //get the file extension of the file $type_of_uploaded_file = substr($name_of_uploaded_file, strrpos($name_of_uploaded_file, '.') + 1); $allowed_ext = false; for($i=0; $i<sizeof($allowed_extensions); $i++) { if(strcasecmp($allowed_extensions[$i],$type_of_uploaded_file) == 0) { $allowed_ext = true; } } if(!$allowed_ext) { $errors .= "\n Het verstuude bestandstype wordt niet ondersteund. ". " Alleen de volgende bestandstype worden ondersteund: ".implode(',',$allowed_extensions); }
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Dit topic is gesloten.
![]()