codeigniter 表单验证规则 url
codeigniter form validation rules url
如何验证以 URL 作为输入值的表单字段。
我尝试了以下规则。但如果用户输入字符串,它允许该字段。
查看文件:
<?php $data = array(
'name' => 'com_url',
'id' => 'com_url',
'value' => set_value('com_url'),
'placeholder' => $this->lang->line('register_com_url'),
'class' => 'form-control',
'maxlength' => 100
);
echo form_input($data);
?>
配置:
array(
'field' => 'com_url',
'label' => 'Com URL',
'rules' => 'trim|required|prep_url'
)
我使用 prep_url 但它只在字段中添加了 http:// 但没有验证 URL 的字段。
我的字段应该只接受以下格式:
www.sample.com
我该怎么做?
您可以将此添加到您的 Form_validation.php 文件以检查 url 语法,甚至检查实际的 URL 是否存在。
/**
* Validate URL
*
* @access public
* @param string
* @return string
*/
function valid_url($url)
{
$pattern = "/^((ht|f)tp(s?)\:\/\/|~/|/)?([w]{2}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?/";
if (!preg_match($pattern, $url))
{
return FALSE;
}
return TRUE;
}
// --------------------------------------------------------------------
/**
* Real URL
*
* @access public
* @param string
* @return string
*/
function real_url($url)
{
return @fsockopen("$url", 80, $errno, $errstr, 30);
}
我不相信 CI 有 url 的验证方法。您可以做的是查找此资源:
http://www.codeigniter.com/user_guide/libraries/form_validation.html 并使用诸如 filter_var、filter_input 之类的东西创建您自己的东西,并使用 url 的验证:
http://php.net/manual/en/filter.filters.validate.php
从 Codeigniter 3 开始,您可以使用 valid_url
的新表单验证规则。这将检查语法是否正确,但不会检查您是否真的可以点击 url。您必须在 .
中使用自定义 real_url
函数
已找到新验证规则的文档 here。
为了更正/添加到按位创意的答案,它 returns 是一种资源,而不是 TRUE/FALSE
您还应该更改 application/libraries/MY_Form_validation.php 文件。
不覆盖代码点火器库。
function real_url($url)
{
$port = 80;
$url_to_test = $url;
if (substr($url_to_test,0,7) == 'http://')
{
$url_to_test = substr($url_to_test,7);
}
else if (substr($url_to_test,0,8) == 'https://')
{
$url_to_test = substr($url_to_test,8);
$port = 443;
}
$r= @fsockopen($url_to_test, $port, $errno, $errstr, 5);
return is_resource($r);
}
您可以使用以下代码或通过更新验证库访问:https://brianistech.wordpress.com/2010/11/19/url-validation-in-codeigniter/
$pattern = "|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i";
if (!preg_match($pattern, $_REQUEST['test'])){
echo 'The URL you entered is not correctly formatted.';
}
在您的 form_validation.php
文件中添加以下简单代码:
function valid_url($url){
if (filter_var($url, FILTER_VALIDATE_URL))
return TRUE;
else
return FALSE;
}
在 codeigniter 中,您可以使用 valid_url 回调来检查输入的 URL 是否有效
例如:名称为 "url" 且标签为 "Remote Url" 的字段可以使用此代码进行验证
$this->form_validation->set_rules('url', 'Remote Url', 'callback_valid_url');
并添加新功能
public function valid_url($str) {
return (filter_var($str, FILTER_VALIDATE_URL) !== FALSE);
}
如何验证以 URL 作为输入值的表单字段。
我尝试了以下规则。但如果用户输入字符串,它允许该字段。
查看文件:
<?php $data = array(
'name' => 'com_url',
'id' => 'com_url',
'value' => set_value('com_url'),
'placeholder' => $this->lang->line('register_com_url'),
'class' => 'form-control',
'maxlength' => 100
);
echo form_input($data);
?>
配置:
array(
'field' => 'com_url',
'label' => 'Com URL',
'rules' => 'trim|required|prep_url'
)
我使用 prep_url 但它只在字段中添加了 http:// 但没有验证 URL 的字段。
我的字段应该只接受以下格式:
www.sample.com
我该怎么做?
您可以将此添加到您的 Form_validation.php 文件以检查 url 语法,甚至检查实际的 URL 是否存在。
/**
* Validate URL
*
* @access public
* @param string
* @return string
*/
function valid_url($url)
{
$pattern = "/^((ht|f)tp(s?)\:\/\/|~/|/)?([w]{2}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?/";
if (!preg_match($pattern, $url))
{
return FALSE;
}
return TRUE;
}
// --------------------------------------------------------------------
/**
* Real URL
*
* @access public
* @param string
* @return string
*/
function real_url($url)
{
return @fsockopen("$url", 80, $errno, $errstr, 30);
}
我不相信 CI 有 url 的验证方法。您可以做的是查找此资源: http://www.codeigniter.com/user_guide/libraries/form_validation.html 并使用诸如 filter_var、filter_input 之类的东西创建您自己的东西,并使用 url 的验证: http://php.net/manual/en/filter.filters.validate.php
从 Codeigniter 3 开始,您可以使用 valid_url
的新表单验证规则。这将检查语法是否正确,但不会检查您是否真的可以点击 url。您必须在
real_url
函数
已找到新验证规则的文档 here。
为了更正/添加到按位创意的答案,它 returns 是一种资源,而不是 TRUE/FALSE
您还应该更改 application/libraries/MY_Form_validation.php 文件。 不覆盖代码点火器库。
function real_url($url)
{
$port = 80;
$url_to_test = $url;
if (substr($url_to_test,0,7) == 'http://')
{
$url_to_test = substr($url_to_test,7);
}
else if (substr($url_to_test,0,8) == 'https://')
{
$url_to_test = substr($url_to_test,8);
$port = 443;
}
$r= @fsockopen($url_to_test, $port, $errno, $errstr, 5);
return is_resource($r);
}
您可以使用以下代码或通过更新验证库访问:https://brianistech.wordpress.com/2010/11/19/url-validation-in-codeigniter/
$pattern = "|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i";
if (!preg_match($pattern, $_REQUEST['test'])){
echo 'The URL you entered is not correctly formatted.';
}
在您的 form_validation.php
文件中添加以下简单代码:
function valid_url($url){
if (filter_var($url, FILTER_VALIDATE_URL))
return TRUE;
else
return FALSE;
}
在 codeigniter 中,您可以使用 valid_url 回调来检查输入的 URL 是否有效
例如:名称为 "url" 且标签为 "Remote Url" 的字段可以使用此代码进行验证
$this->form_validation->set_rules('url', 'Remote Url', 'callback_valid_url');
并添加新功能
public function valid_url($str) {
return (filter_var($str, FILTER_VALIDATE_URL) !== FALSE);
}