我正在使用Codeigniter 3.1.9,并在本地计算机上填写了我的表格。我刚才在服务器上上传了我的应用,但出现错误
无法访问与您的字段名称相对应的错误消息 网址。(valid_url_format)
我在Google上很多,但无法解决问题。
文件名:My_Form_validation.php 位置:应用程序\库
class MY_Form_validation extends CI_Form_validation{
public function __construct()
{
parent::__construct();
}
function valid_url_format($str){
$pattern = "/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i";
if (!preg_match($pattern, $str)){
$this->set_message('valid_url_format', 'The URL you entered is not correctly formatted.');
return FALSE;
}
return TRUE;
}
function url_exists($url){
$url_data = parse_url($url); // scheme, host, port, path, query
if(!fsockopen($url_data['host'], isset($url_data['port']) ? $url_data['port'] : 80)){
$this->set_message('url_exists', 'The URL you entered is not accessible.');
return FALSE;
}
return TRUE;
}
}
文件名:UrlChecker.php 位置:应用程序\控制器
class UrlChecker extends CI_Controller {
public function __construct() {
parent::__construct();
}
public function _initializing(){
}
public function index()
{
$this->form_validation->set_rules('link', 'URL', 'required|trim|valid_url_format|url_exists');
if ($this->form_validation->run() == FALSE)
{
echo validation_errors('<div class="alert alert-danger" role="alert">', '</div>');
}
else
{
echo 'ok';
}
}
请检查并让我知道出现什么问题是主机版本问题或其他问题。
答案 0 :(得分:0)
我总是在运行中使用自定义验证,这是我第一次尝试为其他验证创建自定义库,无论如何,我创建并测试了该库以确保其有效,您必须确保遵循命名约定,文件名应如下:MY_Form_validation.php
并将其保存在application/libraries
中,然后创建您的类:
class MY_Form_validation extends CI_Form_validation
{
// your rules
}
然后,您必须为每种方法创建错误消息,在application/language/english/form_validation_lang.php
中创建一个lang文件,并添加您的自定义错误消息,如下所示:
$lang['valid_url_format'] = 'The {field} field may only contain valid url.';
$lang['url_exists'] = 'The {field} field already exists';