2015-02-10 10 views
5

Jak mogę sprawdzić poprawność pola formularza, które ma adres URL jako wartość wejściową.kod weryfikacyjny formularza sprawdzania poprawności url

Próbowałem z następującymi zasadami. Ale pozwala na to pole, jeśli użytkownik wprowadzi ciąg znaków.

Zobacz Plik:

<?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); 
      ?> 

Config:

array(
    'field' => 'com_url', 
    'label' => 'Com URL', 
    'rules' => 'trim|required|prep_url' 
) 

I prep_url użytkownik ale dodaje tylko http: // w polu, ale nie zatwierdza pole dla adresu URL .

mojej dziedzinie powinny przyjmować tylko następujące formaty:

http://www.sample.com

www.sample.com

http://sample.com

Jak mogę to zrobić?

Odpowiedz

4

Możesz dodać to do pliku Form_validation.php, aby sprawdzić składnię URL, a nawet sprawdzić, czy rzeczywisty adres URL istnieje.

/** 
* 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); 
} 
+1

że może pracować też: p – KyleMassacre

+0

I zdobione .. ale nadal miło dostał odpowiedź !!! – TomPHP

+1

Fajnie :) Jak to rozwiązałeś? Po prostu ciekawy. –

3

Od CodeIgniter 3, jest nowa reguła walidacji formularz valid_url, którego możesz użyć. Spowoduje to sprawdzenie poprawnej składni, ale nie sprawdzi, czy rzeczywiście można kliknąć adres URL. Będziesz musiał użyć niestandardowej funkcji real_url w this answer.

Dokumentacja dla nowej reguły sprawdzania została znaleziona here.

1

aby poprawić/dodać do bitowym odpowiedź kreacji, wraca do zasobu, a nie prawda/fałsz

Należy również zmienić swoją aplikację bibliotek/pliku/MY_Form_validation.php. Nie zastępuje biblioteki zapalnika kodu.

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); 
} 
Powiązane problemy