簡體   English   中英

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 的字段。

我的字段應僅接受以下格式:

http://www.sample.com

www.sample.com

http://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);
} 

從 Codeigniter 3 valid_url ,您可以使用新的valid_url表單驗證規則。 這將檢查正確的語法,但不會檢查您是否真的可以點擊 url。 您必須在此答案中使用自定義real_url函數。

可在此處找到新驗證規則的文檔。

在您的form_validation.php文件中添加以下簡單代碼:

 function valid_url($url){
       if (filter_var($url, FILTER_VALIDATE_URL))
          return TRUE;
       else 
          return FALSE;    
    }

我不相信 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

糾正/添加到按位創意的答案,它返回一個資源,而不是真/假

您還應該更改您的 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.';        
 }

在 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);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM