2015-02-10 16 views
5

Wie kann ich Formularfeld validieren, das URL als Eingabewert hat.Codeigniter Form Validierungsregeln URL

Ich versuchte mit folgenden Regeln. Aber es erlaubt das Feld, wenn der Benutzer eine Zeichenfolge eingibt.

View File:

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

ich Benutzer prep_url aber es kommt noch hinzu, http: // auf dem Gebiet aber hat Validierung nicht das Feld für URL .

Mein Feld sollte nur die folgenden Formate annehmen:

http://www.sample.com

www.sample.com

http://sample.com

Wie kann ich das tun?

Antwort

4

Sie können dies zu Ihrer Form_validation.php-Datei hinzufügen, um die URL-Syntax zu prüfen, oder sogar prüfen, ob die tatsächliche URL existiert.

/** 
* 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

, die auch funktionieren kann: p – KyleMassacre

+0

ich es .. herausgefunden, aber immer noch schön zu beantworten zu bekommen !!! – TomPHP

+1

Cool :) Wie hast du es herausgefunden? Nur neugierig. –

3

Ab Codeigniter 3 gibt es eine neue Form Gültigkeitsregel für valid_url, die Sie verwenden könnten. Dies wird nach der korrekten Syntax suchen, aber nicht überprüfen, ob Sie tatsächlich die URL treffen können. Sie müssten die benutzerdefinierte real_url Funktion in this answer verwenden.

Die Dokumentation für die neue Validierungsregel wurde gefunden here.

1

zu korrigieren/hinzufügen kreative Antwort auf bitweise, gibt es eine Ressource, nicht WAHR/FALSCH

Sie auch Ihre Anwendung/Bibliotheken/MY_Form_validation.php Datei ändern sollten. Die Code-Ignitor-Bibliothek wird nicht überschrieben.

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