|
Smarty
WARNING: All discussion is moving to https://reddit.com/r/smarty, please go there! This forum will be closing soon. |
|
View previous topic :: View next topic |
Author |
Message |
iarfhlaith Smarty Rookie
Joined: 20 Dec 2006 Posts: 13 Location: Dublin, Ireland
|
Posted: Thu Dec 21, 2006 12:45 pm Post subject: Smarty Validate Plugin for validation with MIME (isMimeType) |
|
|
Hi All,
I have written a plugin for Smarty Validate that will validate an uploaded file based on its MIME type rather than it's file extension.
There is already an in-built plugin packaged with Smarty Validate to check a file's extension and compare it against a list of accepted extensions. This is called isFileType.
My new plugin (which is based on isFileType) is called isMimeType and it uses a list of accepted MIME types and compares it against the MIME type of the uploaded file.
Here's an example of how to use it:
Register it with Smarty Validator with:
Code: |
SmartyValidate::register_validator('msg', 'field', 'isMimeType', true, null);
|
Where:
msg is the ID of {validate} placeholder that displays the error message.
field is the name of the field in the form that needs to be validated
isMimeType is the name of my plugin
true, this marks the field as optional
null, don't trim
Here's how to call it in the template:
Code: | {validate id="msg" message="File must be either JPG, GIF or PNG" type="image/pjpeg, image/jpeg, image/gif, image/png"} |
And here's the plugin code:
Code: |
<?php
/**
* Project: SmartyValidate: Form Validator for the Smarty Template Engine
* File: validate_criteria.isMimeType.php
* Author: Iarfhlaith Kelly <ik at webstrong dot net>
* Company: Webstrong Internet Solutions
* Link: www.webstrong.net
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* @link http://www.phpinsider.com/php/code/SmartyValidate/
* @copyright 2001-2005 New Digital Group, Inc.
* @author Monte Ohrt <monte at newdigitalgroup dot com>
* @package SmartyValidate
*/
/**
* test if a value is a valid MIME type. This checks the actual MIME
* type of the file.
*
* @param string $value the value being tested
* @param boolean $empty if field can be empty
* @param array params validate parameter values
* @param array formvars form var values
*/
function smarty_validate_criteria_isMimeType($value, $empty, &$params, &$formvars) {
$_field = $params['field'];
$_type = isset($params['field2']) ? $params['field2'] : $params['type'];
if(!isset($_FILES[$_field]))
// nothing in the form
return false;
if($_FILES[$_field]['error'] == 4)
// no file uploaded
return $empty;
$_types = preg_split('![\s,]+!', $_type, -1, PREG_SPLIT_NO_EMPTY);
foreach($_types as $_key => $_val) {
$_types[$_key] = strtolower($_types[$_key]);
}
if(!in_array(strtolower($_FILES[$_field]['type']),$_types))
// not valid MIME type
return false;
return true;
}
?>
|
I hope this is useful for other people. Many thanks to Monte Ohrt as he did most of the work. (I just changed it around a bit).
Iarfhlaith |
|
Back to top |
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|