Foto upload functie (dmv zip)

Door Kay Kay, 14 jaar geleden, 4.942x bekeken

Met dit script kan je meerdere foto's (of andere bestanden) tegelijk uploaden.
Je moet eerst alle foto's in een .zip bestand zetten!

De opbouw van de mappen is zo:
>$fotomap (fotoalbum/)
>Jaar $jaarmap (Jaar 2008/)
>$mapmap (een gebeurtenis/)
>De foto's

De unzip functie heb ik van php.net. De rest is zelf gemaakt :)

Kritiek mag, maar wel met goede onderbouwing, want daar heb ik wat aan. Positieve reacties zijn natuurlijk van harte welkom. :D

Veel plezier er mee.

//update (30-04-08):
* Het jaartal wordt nu gecontroleerd of het wel een geldig jaartal is
* De mappen die er al zijn worden weergegeven

//update (11-05-08):
* Na het uitpakken wordt er gekeken of de bestanden wel plaatjes zijn, zo niet, worden ze verwijderd
* Wat comments bij de Unzip functie toegevoegd
* Nog wat kleine dingen
//update :
* Er ging iets fout als er een map in de zip stond, dat is gefixed met end()

//update (12-05-08):
* Beveiliging was nog niet goed, weer aangepast
* De extentie eerst lowercase maken, dan controleren
* Hij maakt de map $fotomap nu als die er nog niet was

//update (13-05-08):
* Extentie check verbeterd: Hij kijkt nu naar de mime types

Voorbeeld: http://zooi.brothersofflames.net/fotouploadtest.php

Gesponsorde koppelingen

PHP script bestanden

  1. foto-upload-functie-dmv-zip

 

Er zijn 30 reacties op 'Foto upload functie dmv zip'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Wouter K
Wouter K
14 jaar geleden
 
0 +1 -0 -1
Online voorbeeld ?
Kay Kay
Kay Kay
14 jaar geleden
 
0 +1 -0 -1
Ik heb een online voorbeeld toegevoegd :)

Dan moet ik nog wel even een script maken die alle geuploade spul verwijderd.
Nicoow Unknown
Nicoow Unknown
14 jaar geleden
 
0 +1 -0 -1
Mag ik even vragen waarom je bij de variable maakmapjaar gelukt zegt, waarom gebruik je niet gewoon 0 of 1, of TRUE of FALSE?
Of heb je hier een speciale logica achter?
Mischien is het nutteloos, maar het lijkt mij logischer
Thisegzz
Thisegzz
14 jaar geleden
 
0 +1 -0 -1
Nu nog ff goed beveiligen, ik kan zo alles hacken (en dat heb ik al laten zien, maar dat heb je weer verwijderd xD)
En je kan het ingevulde jaar nog wel ff checken of het wel een nummer is met is_numeric.
Crispijn -
Crispijn -
14 jaar geleden
 
0 +1 -0 -1
ctype_digit() is netter he voor die numerieke controle
Kay Kay
Kay Kay
14 jaar geleden
 
0 +1 -0 -1
Ik heb nog niks verwijderd :P Even kijken wat jullie hebben uitgespookt :P
Thisegzz
Thisegzz
14 jaar geleden
 
0 +1 -0 -1
Toch wel, ik had op de uploadpagina een leuk bericht neergezet dat het onveilig was, maar even later was het weg.
Variabelen zet je buiten quotes. Dat doe je bijna overal goed, maar bij
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo "De map <b>$mapjaar</b> bestaat al";
dan net weer niet.

Edit: zie http://zooi.brothersofflames.net/fotoupload.php
Enne, patches voor programma's zoals WebcamMax is illegaal hea ;)
Kay Kay
Kay Kay
14 jaar geleden
 
0 +1 -0 -1
@nico: Voor beginners is dat makkelijker te begrijpen ;)

@Thisegzz: Nee echt niet :P Ik heb niks verwijderd ;)
En ik heb variablen altijd binnen de quotes zoals je ziet. Dat is trouwens ook de beste manier, volgens mij ;)

En als hij het net even niet deed.. ik was bezig met de jaartal check functie maken

//edit
En hoe zie jij dat ik er een patch op heb staan? :P
Thisegzz
Thisegzz
14 jaar geleden
 
0 +1 -0 -1
Ik zie alles. Heb je mijn bericht nu nog niet gelezen? Zal het nog een keertje doen :P
Edit: Done, zie je voorbeeld.
Kay Kay
Kay Kay
14 jaar geleden
 
0 +1 -0 -1
Oja ik zie het.
Ik verwijder het even :P
Thisegzz
Thisegzz
14 jaar geleden
 
0 +1 -0 -1
Wel even een beveiliging inbouwen die de inhoud van de zip-bestanden scant. Vraag me niet hoe, dat is jouw taak ;)
Kay Kay
Kay Kay
14 jaar geleden
 
0 +1 -0 -1
Ik ben al bezig ;)
Tot die tijd.. even het voorbeeld er af.
Danny Roelofs
Danny Roelofs
14 jaar geleden
 
0 +1 -0 -1
Dit is eigenlijk een beetje offtopic, alhoewel ik in gedachte het concept met een jpeg mogelijk ook wel kan benaderen. Maar wil gewoon even ergens op attenderen waar ik vroeger wel eens (voordat er internet was in nederland) BBS systemen plat kon leggen door de opslag ruimte toe te eigenen.

Maar misschien zit daar tegenwoordig wel een beveiliging in, geen idee (verwacht het niet).

Maar het concept van, ik stuur een archief bestand van een paar bytes groot (headers en wat compressie informatie) enz.. van een tekst bestand die alleen maar bestaat uit 1 voorkomende teken, bijvoorbeeld een paar miljoen spatie's

Als je zo'n bestand gaat inpakken, wordt zon archief bestand heel erg klein, totdat hij wordt uitgepakt en ineens wordt er een bestand opgeslagen van een paar miljoen bytes.

Kortom denk ik, dat het altijd verstandig is.. indien mogelijk om van te voren te weten hoe groot een ingepakt bestand daadwerkelijk is voordat je hem uitpakt.

Ik verwacht niet dat hier nog veel mee gedaan wordt, met deze ongein, maar het is misschien iets waar je nog niet bij hebt stil gestaan in het geval van het uploaden en uitpakken van archief bestanden.
Kay Kay
Kay Kay
14 jaar geleden
 
0 +1 -0 -1
Voor het doel waar ik dit voor ga gebruiken maakt dat niks uit.
Op (mijn vaders) koor website, kunnen mensen inloggen. Als ze niet ingelogd zijn, dan kunnen ze ook geen foto's uploaden. Niemand kan zich registreren, alleen de gene waarvan je wilt dat ze in kunnen loggen, geef je een wachtwoord.

Dit script is dus niet bedoelt voor iets openbaars. Hoe groot de foto's (bestanden) zijn maakt ook niet uit. Ze moeten gewoon op de site komen.

Ik zal nu nog wel meer aandacht besteden aan beveiliging, maar voor mijn doel is dat niet nodig.

Deze week kan ik trouwens niks meer veranderen, want vandaag ga ik op vakantie (H)
Thisegzz
Thisegzz
14 jaar geleden
 
0 +1 -0 -1
Stel, ik zit in dat koor en ik heb toegang tot de website. Ik hack de website hoe ik dat eerder bij het voorbeeld heb gedaan, maar zet er geen naam bij. De dader wordt niet gevonden, en de website is wel plat.
Het lijkt me dus toch wel handig om een beveiliging in te bouwen, je weet maar nooit.
Kees Schepers
kees Schepers
14 jaar geleden
 
0 +1 -0 -1
Er word altijd gezegd dat je met programmeren niemand moet vertrouwen. Leuk script, maar mij lijkt het erg hack gevoelig helaas.
Wouter K
Wouter K
14 jaar geleden
 
0 +1 -0 -1
Je MOET beveiligen of je mag vaarwel zeggen. Een hacker zal alles proberen om een van die mensen van het koor zijn gegevens op te vangen.
En zo stap voor stap legt hij je site plat.

Grtz
Kay Kay
Kay Kay
14 jaar geleden
 
0 +1 -0 -1
UPDATED!!
Er zit nu een beveiliging in. (zie update in TS)
Kay Kay
Kay Kay
14 jaar geleden
 
0 +1 -0 -1
//
Eric
Eric
14 jaar geleden
 
0 +1 -0 -1
Wanneer ik dit script gebruik, krijg ik 2 foutmeldingen...Bij het laden van de pagina komt er het volgende onder het formulier:
Warning: scandir(C:/Xampp/htdocs/test/) [function.scandir]: failed to open dir: No such file or directory in C:\Xampp\htdocs\Jeugdbrandweer_nieuw\foto\upload.php on line 178

Warning: scandir() [function.scandir]: (errno 2): No such file or directory in C:\Xampp\htdocs\Jeugdbrandweer_nieuw\foto\upload.php on line 178

Warning: array_flip() [function.array-flip]: The argument should be an array in C:\Xampp\htdocs\Jeugdbrandweer_nieuw\foto\upload.php on line 179

Warning: array_flip() [function.array-flip]: The argument should be an array in C:\Xampp\htdocs\Jeugdbrandweer_nieuw\foto\upload.php on line 181

----

Als ik dit negeer en een bestand upload, krijg ik na de submit het volgende:

Warning: zip_read() expects parameter 1 to be resource, integer given in C:\Xampp\htdocs\Jeugdbrandweer_nieuw\foto\upload.php on line 17

Warning: zip_close() expects parameter 1 to be resource, integer given in C:\Xampp\htdocs\Jeugdbrandweer_nieuw\foto\upload.php on line 62

Ik heb de 'gestripte' versie gebruikt die hierboven staat, mocht er iemand de regelnummers willen vergelijken...ik heb verder niks aan code erbij geplaatst.

Sorry als het een makkelijk te vinden foutje van mij is, maar hoewel ik me tegenwoordig aardig met php kan redden, is dit script nog even een stap te ver!

Groeten!
Kay Kay
Kay Kay
14 jaar geleden
 
0 +1 -0 -1
@Erik:
Jou host heeft denk ik een paar functies uitgezet..
Heeft jou host wel php 5 ?

Ik heb net getest, en hij doet het hier wel :)
Karl Karl
Karl Karl
14 jaar geleden
 
0 +1 -0 -1
Eric:
Warning: scandir(C:/Xampp/htdocs/test/) [function.scandir]: failed to open dir:

Bestaat die dir wel? En volgens mij is het in windows zo dat je \\ moet gebruiken ipv \ of /...

@HaTe: Hij heeft geen host, hij gebruikt xampp, bij mijn weten staat er geen enkele functie uit, als je die niet zelf uitgezet hebt...
Eric
Eric
14 jaar geleden
 
0 +1 -0 -1
@HaTe: Inderdaad Xampp, dus alles staat aan (en ik heb php 5)

@Karl: Er was inderdaad iets verkeerd met de directory, maar als ik de goede map aangeef om de submappen (dus albums) weer te laten geven, wordt er weer een nieuwe map aangemaakt die helemaal niet moet, dus dat klopt niet helemaal. Maargoed, dat stuk heb ik eigenlijk niet nodig, dus dat is ook geen ramp. Wel krijg ik nog steeds foutmeldingen bij het submitten van een upload..:
Warning: zip_read() expects parameter 1 to be resource, integer given in C:\Xampp\htdocs\Jeugdbrandweer_nieuw\foto\upload.php on line 17

Warning: zip_close() expects parameter 1 to be resource, integer given in C:\Xampp\htdocs\Jeugdbrandweer_nieuw\foto\upload.php on line 62


Wat doen we hieraan??
Kay Kay
Kay Kay
14 jaar geleden
 
0 +1 -0 -1
@Eric: Ik zou ook niet die gestripte versie gebruiken ;) Die is nog oud en niet veilig.

Probeer nog eens met de gewone versie :)
Eric
Eric
14 jaar geleden
 
0 +1 -0 -1
Nog steeds hetzelfde probleem...Het gaat mis bij het unzippen volgensmij..zijn er bepaalde instellingen van het zip-bestand nodig ofzo?
G
G
13 jaar geleden
 
0 +1 -0 -1
Ik krijg onderstaande foutmelding. De zip file wordt geupload,krijgt de nieuwe bestandsnaam, maar is niet te openen

Call to undefined function zip_open() rgl 17

rgl 17:

function unpackZip($map,$zipnaam) {
//Het zipbestand openen
if ($zip = zip_open($map.$zipnaam.".zip")) <---------- 17
{
if ($zip) //als het openen is gelukt:
{ ......
Kay Kay
Kay Kay
13 jaar geleden
 
0 +1 -0 -1
@G, die functie bestaat niet bij jou. Ik denk niet dat het dan mogelijk is om het script uit te voeren.
Gezienus Oldenkamp
Gezienus Oldenkamp
9 jaar geleden
 
0 +1 -0 -1
Ik weet dat er op dit topic al een tijdje niet meer gereageerd wordt, maar ik probeer het script aan de praat te krijgen maar het lukt niet.
De file wordt in zijn geheel niet geupload laat staan uitgepakt.
Ik krijg echter ook geen "fout"melding.

Wie wil mij hier nog mee helpen.
Gezienus Oldenkamp
Gezienus Oldenkamp
9 jaar geleden
 
0 +1 -0 -1
Ik weet dat er op dit topic al een tijdje niet meer gereageerd wordt, maar ik probeer het script aan de praat te krijgen maar het lukt niet.
De file wordt in zijn geheel niet geupload laat staan uitgepakt.
Ik krijg echter ook geen "fout"melding.

Wie wil mij hier nog mee helpen.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Vincent Huisman
Vincent Huisman
9 jaar geleden
 
maak zelf een nieuw topic aan op het forum

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. foto-upload-functie-dmv-zip

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.