Foto upload script
Ik ga namelijk kalenders etc ontwerpen die ze kunnen bestellen maar dan moeten ze wel foto's kunnen uploaden.
heeft iemand zon script?
mvg
http://verot.net.
Toevoeging op 10/11/2015 13:42:47:
Ikzelf ben wel een fan van de uploadclass van http://verot.net.
Ikzelf ben wel een fan van de uploadclass van Toevoeging op 10/11/2015 13:42:47:
Ikzelf ben wel een fan van de uploadclass van http://verot.net.
Jasper Schellekens op 10/11/2015 13:40:53:
dan moeten ze wel foto's kunnen uploaden.
heeft iemand zon script?
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.
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.
mkdir.
Eenvoudig te zoeken met: 'create directory with PHP'
Maar je kan ook de koppelingen met de foto's in je database organiseren.
Ja, met PHP kan dat: 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 -
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)
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
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"> </td><td class="text_noir">'.$message.'</td></tr>' ;}
if($ok == false){ echo '<tr bgcolor="#FF99CC" ><td width="100"> </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>
# 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"> </td><td class="text_noir">'.$message.'</td></tr>' ;}
if($ok == false){ echo '<tr bgcolor="#FF99CC" ><td width="100"> </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>
- 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.
Toevoeging op 10/11/2015 16:23:41:
heeft t hiermee te make?
wat moet ik dan veranderen?
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.
en hoe laat ik hem dan uploaden naar die map?
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.
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!
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.