Foto upload script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

10/11/2015 13:40:53
Quote Anchor link
Ik ben op zoek naar een script waarmee klanten foto's kunnen uploaden naar een map in mijn public_html
Ik ga namelijk kalenders etc ontwerpen die ze kunnen bestellen maar dan moeten ze wel foto's kunnen uploaden.
heeft iemand zon script?

mvg
 
PHP hulp

PHP hulp

23/12/2024 20:31:31
 
- Ariën  -
Beheerder

- Ariën -

10/11/2015 13:42:35
Quote Anchor link
Ikzelf ben wel een fan van de uploadclass van http://verot.net.

Toevoeging op 10/11/2015 13:42:47:

Ikzelf ben wel een fan van de uploadclass van http://verot.net.
 
Obelix Idefix

Obelix Idefix

10/11/2015 13:58:54
Quote Anchor link
Jasper Schellekens op 10/11/2015 13:40:53:
dan moeten ze wel foto's kunnen uploaden.
heeft iemand zon script?

Wat heb je zelf al geprobeerd? Met Google is genoeg te vinden over het uploaden van afbeeldingen via php. Verot is daar één van.
 

10/11/2015 14:45:20
Quote Anchor link
Zeer interessant die class, kan je ook bijvoorbeeld elke keer een nieuwe map laten aanmaken voor elke klant? dat ik me niet rot hoef te zoeken naar de files.
 
- Ariën  -
Beheerder

- Ariën -

10/11/2015 14:49:25
Quote Anchor link
Ja, met PHP kan dat: mkdir.
Eenvoudig te zoeken met: 'create directory with PHP'

Maar je kan ook de koppelingen met de foto's in je database organiseren.
Gewijzigd op 10/11/2015 14:50:52 door - Ariën -
 

10/11/2015 15:03:11
Quote Anchor link
Ik heb toch gekozen voor het simpele omdat ik super veel producten moet toevoegen.
Ik heb een zeer mooi script gevonden voor zijn leeftijd dan.
Alleen 1 probleem, je ziet in welke map wordt geupload en je kan de map kiezen.
Hoe kan ik dit wegkrijgen en hem naar public_html/images/kalenders laten uploaden?

het script:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<?php
# Copyright © 2007 wimpel2
# [email protected]
# multi upload

 
define('NB_FILE_UPLOAD', '10'); // nombre de fichier a envoyer (aucune limite :) )
define('MAX_SIZE_FILE_UPLOAD',  '500000000' ); //soit 50 Ko
define('FILE_UPLOAD_DIR', dirname($_SERVER['SCRIPT_FILENAME']).'/'); // direction des fichier a uploader
$array_extention_interdite = array( '.bmp' , '.dib' , '.JPG' , '.JPEG' , '.JPE' , '.JFIF' , '.GIF' , '.TIFF' , '.PNG' );
 
 
function
func_message($message='', $ok='')
{

echo '<table width="100%" cellspacing="0" cellpadding="5">';
if($ok == true){ echo '<tr bgcolor="#99FF99" ><td width="100">&nbsp;</td><td class="text_noir">'.$message.'</td></tr>' ;}
 
if($ok == false){ echo '<tr bgcolor="#FF99CC" ><td width="100">&nbsp;</td><td class="text_noir">'.$message.'</td></tr>';}
echo '</table>';    
}

 
$action = (isset($_POST['action'])) ? $_POST['action'] :'' ;
$dossier = (isset($_POST['dossier'])) ? $_POST['dossier'] :''  ;
if($dossier != '') {$dossier = $dossier.'/';}
$message_true = '';
$message_false = '';
 
switch($action)
{
case
'upload' :
chmod(FILE_UPLOAD_DIR,0777);
 
for($nb = 1 ; $nb <= NB_FILE_UPLOAD ; $nb ++ )
{

 
if( $_FILES['file_'.$nb]['size'] >= 10 )
{
  
if ($_FILES['file_'.$nb]['size'] <= MAX_SIZE_FILE_UPLOAD )
{

 
if ( !in_array( ereg_replace('^[[:alnum:]]([-_.]?[[:alnum:]])*\.' ,'.', $_FILES['file_'.$nb]['name'] ) , $array_extention_interdite) )
{

if($_POST['file_name_'.$nb] !=''){ $file_name_final = $_POST['file_name_'.$nb].$extension ;}
else { $file_name_final = $_FILES['file_'.$nb]['name'] ;}
 
$file_name_final = strtr($file_name_final, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
   'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$file_name_final = preg_replace('/([^.a-z0-1]+)/i', '_', $file_name_final );
 
$_FILES['file_'.$nb]['name'] = $file_name_final;
 
move_uploaded_file( $_FILES['file_'.$nb]['tmp_name'] , FILE_UPLOAD_DIR . $dossier . $file_name_final );
 
$message_true .= 'Foto is verzonden : '.$_FILES['file_'.$nb]['name'] .'<br>';
}

else{
$message_false .= 'Er is iets fout gedaan : '.$_FILES['file_'.$nb]['name'] .' <br>';
}
}

else{ $message_false .= 'Foto is te groot '.MAX_SIZE_FILE_UPLOAD/1000 . 'ko : " '.$_FILES['file_'.$nb]['tmp_name'].'" <br>';}
}
}
//end for
 
break;
}

?>

<head>
 
<style>
.body{  SCROLLBAR-ARROW-COLOR: #ff9933;
SCROLLBAR-DARKSHADOW-COLOR: #000000;
SCROLLBAR-BASE-COLOR: #005b70;
background-color:#ffffff}
.border{background-color:#000000}
.box{background-color:#f8f8f9;}
.text_noir{  color:#000000;
font-family: Verdana, Arial, sans-serif;
font-size: 11px;
font-weight:bold}
input, select{  font-family: Verdana, Arial, sans-serif;
font-size: 11px;
background-color: #ffffff;
border-color:"#ffffff"}
 
</style>
</head>
<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">
<?php if (function_exists('ini_get')) {?><br>
<table width="600" border="0" cellspacing="1" cellpadding="0" align="center" class="border">
<tr>
<td>
<table width="100%" border="1" align="center" cellspacing="5" cellpadding="2" class="box">
<tr class="text_noir">
<td colspan="2" align="center">Uw mogelijkheden</td>
</tr>
<tr class="text_noir">
<td>file_uploads :</td>
<td>
<?php if (ini_get('file_uploads') ==1) { echo 'On'; } else { echo 'Off'; }?>
</td>
</tr>
<tr class="text_noir">
<td>Toegestaande extensies :</td>
<td> <?php for ($i=0; $i < sizeof($array_extention_interdite); $i++)
{
echo $array_extention_interdite[$i] .' | '; }
?>
</td>
</tr>
</table>
</td>
</tr>
</table><br>
<?php   }?>
<br>
<form name="form" enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF'] ; ?>">
<input type="hidden" name="action" value="upload">
<table  border="0" cellspacing="1" cellpadding="0" align="center" class="border">
<tr>
<td>
<?php if($message_true != '') {  func_message($message_true, true); }
if($message_false != ''){  func_message($message_false, false); }
?>

<table width="100%" border="0" cellspacing="5" cellpadding="2" align="center" class="box">
<?php
for($nb = 1 ; $nb <= NB_FILE_UPLOAD ; $nb ++ )
{
  
?>

<tr class="text_noir">
<td>Foto <?php echo $nb; ?></td> <td><input type="file" name="file_<?php echo $nb; ?>"></td>
</tr>
<?php } ?>
<tr>
<td colspan="2" align="right" class="text_noir"><?php echo FILE_UPLOAD_DIR ;?>
<select name="dossier">    
<option value=""></option>
<?php
$repertoire
= opendir(FILE_UPLOAD_DIR);  
while( $file = readdir($repertoire) )
{

$file = str_replace('.','',$file);
if( is_dir($file)) {
?>

<option value="<?php echo $file; ?>"> <?php echo $file; ?>/</option>
<?php
}
}

closedir($repertoire);
?>

</select>
</td>
<td colspan="2" align="right"><input type="submit" value=" Verzend <?php echo $nb-1; ?> Foto's "></td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</body>
</div>
 
- Ariën  -
Beheerder

- Ariën -

10/11/2015 15:11:03
Quote Anchor link
- Controleer niet alleen op extenties, maar ook vooral op mime-types.
- Gebruik geen 0777-rechten. Waarom zou je iedereen alle rechten willen geven? 755 is al voldoende.
- eregi-functies zijn verouderd.

Verder als antwoord op je vraag:
Haal die echo weg? Niet zo heel lastig te bedenken, lijkt me. En haal ook die selectbox weg, en zorg dat die waarde vast in je script staat.
 

10/11/2015 15:50:34
Quote Anchor link
dat snapte ik ook ja, maar welke code moet ik toevoege zodat hij naar die map upload bedoel ik

Toevoeging op 10/11/2015 16:23:41:

heeft t hiermee te make?
wat moet ik dan veranderen?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$repertoire = opendir(FILE_UPLOAD_DIR);  
while( $file = readdir($repertoire) )
 
Thomas van den Heuvel

Thomas van den Heuvel

10/11/2015 16:28:08
Quote Anchor link
Quote:
Controleer niet alleen op extensies, maar ook vooral op mime-types.

Vaak is dat equivalent, omdat de browser het MIME-type van een te uploaden bestand baseert op simpelweg de extensie. Tenzij je image magic gebruikt ofzo, en dat is volgens mij een soort van algoritme wat zoekt naar (byte?)patronen in het bestand, zodat je met een aan zekereheid grenzende waarschijnlijkheid zou kunnen stellen dat iets een afbeelding betreft.

Beter is om een gerichte controle uit te voeren op het bestand zelf.

Als je een afbeelding verwacht, controleer het bestand in de temp-directory met getimagesize(), als deze functie false retourneert dan is het bestand hoogstwaarschijnlijk geen afbeelding.
 

11/11/2015 23:27:11
Quote Anchor link
en hoe laat ik hem dan uploaden naar die map?
 
- Ariën  -
Beheerder

- Ariën -

11/11/2015 23:56:31
 
Thomas van den Heuvel

Thomas van den Heuvel

12/11/2015 13:33:50
Quote Anchor link
PHP heeft hier een handleiding voor.

Deze is er niet voor niets.
 

12/11/2015 14:43:59
Quote Anchor link
Oke... WTF?

Je vraagt naar bepaalde functionaliteiten die Verot.net (upload class) allemaal in zich heeft.

Waarom ga je in GODSNAAM voor een procudurele oplossing met *aguhm* pauper code *aguhm*

Ik smeek je, pak die class en probeer het 1 en ander, gaat je echt helpen.
 
- Ariën  -
Beheerder

- Ariën -

12/11/2015 14:53:25
Quote Anchor link
Wat Rickert zegt ^

Met die Verot.net-class heb je alle beveiliging al in je, je bespaart een hoop code, er zit foutafhandeling in, en je kan je uploadsysteem zelfs in de toekomt makkelijker uitbreiden met nieuwe functies die al in de class inzitten. Denk eens aan resizen, watermerken, toevoegen van borders, fading, contrast, draaien van foto's etc....

Ik zeg: DOEN!
 
Thomas van den Heuvel

Thomas van den Heuvel

12/11/2015 17:01:38
Quote Anchor link
Neemt niet weg dat de topicstarter zich daarnaast zou moeten verdiepen in hoe file uploads in het algemeen werken (want het lijkt er niet op dat hij hier kaas van heeft gegeten).

Bij wijze van oefening zou je vervolgens een soort van upload functionaliteit in elkaar kunnen draaien zodat je hier ook wat gevoel voor krijgt.

Dan zijn er vervolgens waarschijnlijk allemaal eisen en wensen ten aanzien van functionaliteit, die je zou kunnen toetsen in bovengenoemde klasse inderdaad. Voordelen van dit soort langer bestaande libraries zijn dat ze al langere tijd door meerdere mensen zijn gebruikt wat de kans op bugs / security gaten etc. verkleint en ook een breed scala van toepassingen binnen "file uploads" zal dekken zoals Ariën al omschrijft.

Maar iemand simpelweg zeggen "daar moet je instappen" werkt meestal niet. Het lijkt me veel handiger dat 'ie zelf tot deze overtuiging komt.
 



Overzicht Reageren

 
 

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.