Sono alla prime armi,
avendo una form con diversi campi: nome, cognome e upload allegato, è possibile che il file in upload venga rinominato con i risultati dei campi nome e cognome?
ES: nome_cognome_fileallegato.pdf?
Sotto la parte di codice dell'upload.
Grazie.
Codice PHP:
/**
* Uploads a file for a particular form submission field.
*
* This is to be called AFTER the submission has already been added to the database - it uploads the
* file to the specified folder then updates the database record.
*
* @param integer $form_id The unique form ID.
* @param integer $submission_id A unique submission ID.
* @param integer $field_id A unique field ID.
* @param array $fileinfo An index from the $_FILES array (containing all data about the file)
* @return array Returns array with indexes:
* [0]: true/false (success / failure)
* [1]: message string
* [2]: If success, the filename of the uploaded file
*/
function ft_upload_file($form_id, $submission_id, $field_id, $fileinfo)
{
global $g_table_prefix, $LANG;
// get the column name and upload folder for this field
$field_info = ft_get_form_field($field_id);
$col_name = $field_info['col_name'];
$file_upload_dir = $field_info['file_upload_dir'];
$file_upload_url = $field_info['file_upload_url'];
$file_upload_max_size = $field_info['file_upload_max_size'];
$file_upload_types = $field_info['file_upload_types'];
// if the column name wasn't found, the $field_id passed in was invalid. Return false.
if (empty($col_name))
return array(false, $LANG["notify_submission_no_field_id"]);
// convert any whitespace chars in filename to underscores [list may be expanded later]
$filename = preg_replace("/\s+/", "_", $fileinfo["name"]);
$tmp_filename = $fileinfo["tmp_name"];
$filesize = $fileinfo["size"];
// check file size
if ($filesize > $file_upload_max_size)
return array(false, $LANG["notify_file_too_large"]);
// check upload folder is valid and writable
if (!is_dir($file_upload_dir) || !is_writable($file_upload_dir))
return array(false, $LANG["notify_invalid_field_upload_folder"]);
// check file extension is valid. Note: this is "dumb" - it just tests for the file extension, not
// the actual file type based on it's header info [this is done because I want to allow users to permit
// uploading of any file types, and I can't know the headers of all of them]
$is_valid_extension = true;
if (!empty($file_upload_types))
{
$is_valid_extension = false;
$raw_extensions = explode(",", $file_upload_types);
foreach ($raw_extensions as $ext)
{
// remove whitespace and periods
$clean_extension = str_replace(".", "", trim($ext));
if (preg_match("/$clean_extension$/", $filename))
$is_valid_extension = true;
}
}
// all checks out!
if ($is_valid_extension)
{
// check for duplicate filenames and get a unique name
$unique_filename = ft_check_duplicate_filename($file_upload_dir, $filename);
// copy file to uploads folder and remove temporary file
if (rename($tmp_filename, "$file_upload_dir/$unique_filename"))
{
@chmod("$file_upload_dir/$unique_filename", 0777);
// update the database
$query = "
UPDATE {$g_table_prefix}form_{$form_id}
SET $col_name = '$unique_filename'
WHERE submission_id = $submission_id
";
$link = ft_db_connect();
mysql_query($query);
ft_db_disconnect($link);
return array(true, $LANG["notify_file_uploaded"], $unique_filename);
}
else
return array(false, $LANG["notify_file_not_uploaded"]);
}
// not a valid extension. Inform the user
else
return array(false, $LANG["notify_unsupported_file_extension"]);
}