За последние 24 часа нас посетили 17775 программистов и 1625 роботов. Сейчас ищут 1277 программистов ...

Как проверить форму

Тема в разделе "Сделайте за меня", создана пользователем vahrumka, 3 ноя 2014.

  1. vahrumka

    vahrumka Новичок

    С нами с:
    28 июн 2014
    Сообщения:
    10
    Симпатии:
    0
    Здравствуйте! Кто поможет, как проверить форму на такое рег выражение №и любые 4 цифры вместо проверки email


    <?php

    class Comment
    {
    private $data = array();

    public function __construct($row)
    {
    /*
    / The constructor
    */

    $this->data = $row;
    }

    public function markup()
    {
    /*
    / This method outputs the XHTML markup of the comment
    */

    // Setting up an alias, so we don't have to write $this->data every time:
    $d = &$this->data;

    $link_open = '';
    $link_close = '';

    if($d['url']){

    // If the person has entered a URL when adding a comment,
    // define opening and closing hyperlink tags

    $link_open = '<a href="'.$d['url'].'">';
    $link_close = '</a>';
    }

    // Converting the time to a UNIX timestamp:
    $d['dt'] = strtotime($d['dt']);

    // Needed for the default gravatar image:
    $url = 'http://'.dirname($_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]).'/img/default_avatar.gif';

    return '

    <div class="comment">
    <div class="avatar">
    '.$link_open.'
    <img src="http://www.gravatar.com/avatar/'.md5($d['email']).'?size=50&amp;default='.urlencode($url).'" />
    '.$link_close.'
    </div>

    <div class="name">'.$link_open.$d['name'].$link_close.'</div>
    <div class="date" title="Added at '.date('H:i \o\n d M Y',$d['dt']).'">'.date('d M Y',$d['dt']).'</div>
    <p>'.$d['body'].'</p>
    </div>
    ';
    }

    public static function validate(&$arr)
    {
    /*
    / This method is used to validate the data sent via AJAX.
    /
    / It return true/false depending on whether the data is valid, and populates
    / the $arr array passed as a paremter (notice the ampersand above) with
    / either the valid input data, or the error messages.
    */

    $errors = array();
    $data = array();

    // Using the filter_input function introduced in PHP 5.2.0

    if(!($data['email'] = filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)))
    {
    $errors['email'] = 'Please enter a valid Email.';
    }

    if(!($data['url'] = filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL)))
    {
    // If the URL field was not populated with a valid URL,
    // act as if no URL was entered at all:

    $url = '';
    }

    // Using the filter with a custom callback function:

    if(!($data['body'] = filter_input(INPUT_POST,'body',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
    {
    $errors['body'] = 'Please enter a comment body.';
    }

    if(!($data['name'] = filter_input(INPUT_POST,'name',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
    {
    $errors['name'] = 'Please enter a name.';
    }

    if(!empty($errors)){

    // If there are errors, copy the $errors array to $arr:

    $arr = $errors;
    return false;
    }

    // If the data is valid, sanitize all the data and copy it to $arr:

    foreach($data as $k=>$v){
    $arr[$k] = mysql_real_escape_string($v);
    }

    // Ensure that the email is lower case:

    $arr['email'] = strtolower(trim($arr['email']));

    return true;

    }

    private static function validate_text($str)
    {
    /*
    / This method is used internally as a FILTER_CALLBACK
    */

    if(mb_strlen($str,'utf8')<1)
    return false;

    // Encode all html special characters (<, >, ", & .. etc) and convert
    // the new line characters to <br> tags:

    $str = nl2br(htmlspecialchars($str));

    // Remove the new line characters that are left
    $str = str_replace(array(chr(10),chr(13)),'',$str);

    return $str;
    }

    }

    ?>
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    1. код кодом оформите
    2. №\d{4}
     
  3. vahrumka

    vahrumka Новичок

    С нами с:
    28 июн 2014
    Сообщения:
    10
    Симпатии:
    0
    А по подробнее?
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    1. когда постишь набор символов которые читатель должен трактовать как исходный код - принято пользоваться соответствующей кнопкой формы редактирования поста. чтоб код оформился как код. и читался как исходный код а не блевотная последовательность символов. уважайте читателя.

    2. №\d{4} - номер, обратный слеш, строчная ди, левая фигурная скобка, четыре, правая фигурная скобка. если причитаться к блевотной тряпке последовательности символов первого поста то можно найти там такую последовательность:
    так вот
    и есть то самое
    ну его еще можно модифицировать как №\d{4}\b - тогда будет искаться только последовательность из четырех цифр. ни три, не пять а строго четыре.
     
  5. vahrumka

    vahrumka Новичок

    С нами с:
    28 июн 2014
    Сообщения:
    10
    Симпатии:
    0
    Это я понял, как вместо email проверить. Т.е. убрать проверку email полностью и написать проверку на рег выражение
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    тестируется текст на регулярное выражение функцией preg_match

    переписать нужный кусок кода.
     
  7. vahrumka

    vahrumka Новичок

    С нами с:
    28 июн 2014
    Сообщения:
    10
    Симпатии:
    0
    Вы на примере можете показать
     
  8. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Почитайте книгу по php чтобы освоить основы, миллион вопросов отпадёт
     
  9. vahrumka

    vahrumka Новичок

    С нами с:
    28 июн 2014
    Сообщения:
    10
    Симпатии:
    0
    А форум для чего тогда? Или здесь все все знают, и ни кто не может помочь
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    о, я-то могу. а вы можете попробовать хоть что-то сделать? это форум для новичков которые хотят чему-то научиться. если у них голова сильно не хочет работать - их публикуют в форуме для блондинок. если совсем не хочет работать - на форуме самоделок можно подождать пока кто-то за вас сделает. а если в кошельке хрустит несколько лишних купюр то задачу можно отдать на аутсор на форуме фриланс.
    итак. мы с вами общаемся в форуме для новичков. у вас уже есть регулярное выражение написанное мною в пункте 2 сообщения 2 (ответа 1 если хотите). а в 6 сообщении (5 ответе для пожелающих) написана функция которой тестируются регулярные выражения.

    я думаю на 8 сообщении (7 ответе) пришло самое время задать вам некоторые вопросы:
    * а как у вас с основами программирования?
    * вы вообще представляете себе что нужно сделать?
    * если вы нуб (noob, newbie, новичок) то почему перед вами сразу стоит такая сложная задача а не примитивный helloworld?
    * за бабки как? не?

    Добавлено спустя 29 секунд:
    metadon, ну вот порушили мне счетчики сообщений... теперь человек потеряется.

    Добавлено спустя 1 минуту 29 секунд:
    конкретно этот форум (не весь пхп.ру а данный раздел) для помощи новичкам. тут все те кто всё знает помогает вправить мозги новичкам которые хотят чему-то научиться. а кто не учиться - те в других форумах живут. всё просто.
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    телепортирован
     
  12. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    очередной ленивый школьник. скукота!
     
  13. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Бизнес-модель у вас, батенька, кривоватая, однако.