Devo aggiungere una nuova condizione a questo codice per fare l'upload del file immagine.
In pratica se l'immagine ha nel nome le parentesi quadre [ ] devo mandare un avviso all'utente.
Codice PHP:
<?php
// ---------------
// INITIALIZE PAGE
// ---------------
require_once('scripts/sb_functions.php');
global $logged_in;
$logged_in = logged_in( true, true );
read_config();
require_once('languages/' . $blog_config[ 'blog_language' ] . '/strings.php');
sb_language( 'upload_img' );
// ---------------
// POST PROCESSING
// ---------------
for ($i=0;$i<count($_FILES['userfile']);$i++) {
if ($ok == null) {
$ok = false;
}
if (is_uploaded_file($_FILES['userfile']['tmp_name'][$i])) {
if ( $_FILES[ 'userfile' ][ 'error' ][$i] == 0 ) {
if (!file_exists(IMAGES_DIR)) {
$oldumask = umask(0);
@mkdir(IMAGES_DIR, 0777 );
@umask($oldumask);
}
$uploaddir = IMAGES_DIR;
$uploadfile = $uploaddir . preg_replace("/ /","_",$_FILES['userfile']['name'][$i]);
if ( @getimagesize($_FILES['userfile']['tmp_name'][$i]) == FALSE ){
echo('Image is not valid or not an image file.');
exit;
}
if (strpos($uploadfile, ".") === false) {
echo('File does not have an extension');
exit;
}
if (strpos($uploadfile, ".") == 0) {
echo('File begins with "."');
exit;
}
if (strrpos($uploadfile, ".") == strlen($uploadfile)-1) {
echo('File ends with "."');
exit;
}
$extension = strtolower(substr(strrchr($uploadfile, "."), 1));
if (strlen($extension) == 0) { // Not really needed...
echo('File ends with "." and does not have an extension');
exit;
}
// Allowed files
$upload_valid_extentions = array( "jpg", "gif", "png" );
$extension = strtolower(substr(strrchr($uploadfile, "."), 1));
if (!in_array($extension, $upload_valid_extentions)) {
echo('That filetype is not allowed');
exit;
}
// Explicitly denied files
$upload_denied_extentions = array( "exe", "pl", "php", "php3", "php4", "php5", "phps", "asp","cgi", "html", "htm", "dll", "bat", "cmd" );
foreach ($upload_denied_extentions AS $denied_extention) {
if($denied_extention == $extension) {
echo('That filetype is not allowed');
exit;
}
}
if ( move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile ) ) {
chmod( $uploadfile, 0777 );
$ok = true;
} else {
$ok = false;
}
}
}
}
if ( $ok === true ) {
redirect_to_url( 'add.php' );
}
// ------------
// PAGE CONTENT
// ------------
function page_content() {
global $lang_string, $user_colors;
if ( $ok !== true ) {
echo( $lang_string[ 'error' ] . $ok . '
' );
}
//echo(count($_FILES['userfile']));
//print_r($_FILES['userfile']);
//echo($_FILES['userfile']['name'][0]);
echo( '[url="index.php"]' . $lang_string[ 'home' ] . '[/url]
' );
}
Non so bene come scrivere la condizione della presenza dei cartteri [ ] in php (lo script non l'ho fatto io).