Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Форма e-mail и телфона, запсиь в БД.


Автор: avtogen 19.10.2010, 20:36
Здравтсвуйте. 

Такой вопрос... 
из системы имееться страница, на ней пользователь заполняет различные данные...    и на этой странице так же есть форма для заполнения e-mail пользователя и номера телефона пользователя.   такие: 

Код


//  остальной код



       <form method=post>

    <tr>
    <td><b>*E-mail:</b></td><br /> 
    <td><input type="text" style="width: 160px;" name="email" value=""></td>
    </tr><br />

    <tr>
    <td><b>Номер телефона:</b></td><br />
    <td><input type="text" style="width: 160px;" name="realphone" value=""></td>
    </tr><br />

    <tr>
    <td></td>
    <td><center><input class="button" type=submit value="Send" name="send"></center></td>
    </tr>

//  остальной код



и эти данные отправляються в базу через $_POST таким образом: 

Код


//  остальной код

    if (isset($_POST['send']) )
    {

        // запрос на запись данных.
        mysql_query('UPDATE .....тут запрос.......') or die(mysql_error()); 
        echo '<b>Сохранено</b><br />';
        return false;
    }

//  остальной код


моя проблема в том, что таким образом в поле e-mail можно записать любые символы, в том числе и недопустимые... а так же русские буквы.
и нет проверки на формат мыла, например [email protected]

правильно ли будет сделать такую проверку следующим методом:

Код


//  остальной код

    if (isset($_POST['send']) )
    {
            if (!preg_match("/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/", $_POST['email'])) 
           {
        echo '<b>Неверно заполнено поле E-mail</b><br />';
        return false;
           }  
        // запрос на запись данных.
        mysql_query('UPDATE .....тут запрос.......') or die(mysql_error()); 
        echo '<b>Сохранено</b><br />';
        return false;
    }

//  остальной код


либо есть какой-то еще вариант? 

И что касательно поля для номера телефона... по форумум полазил, нигде найти несмог примера формы для номера телефона... 



Автор: Guedda 20.10.2010, 11:13
Цитата(avtogen @  19.10.2010,  21:36 Найти цитируемый пост)
правильно ли будет сделать такую проверку следующим методом:

Да. А вообще:
Цитата(avtogen @  19.10.2010,  21:36 Найти цитируемый пост)
либо есть какой-то еще вариант?

Не стоит изобретать велосипед, есть куча скриптов валидаторов, ими и пользуйтесь.

Автор: avtogen 20.10.2010, 13:25
Понятно... 

А вот еще аналогичным образом сделал для формы ICQ номера. 

Код

     if (!preg_match("/^[0-9]/", $_POST['icqnumber']) && ($_POST['number'] != '')) 
    {
      echo '<b>Не верно заполнено поле ICQ.</b>';
      return false;
    } 


Получилось атк что если запрещенный символ будет в начале то выдаст ошибку что поле заполнено неверно. А если к примеру ввести в форму: 343%   и сохранить... то сохраниться с символом, и не обноружит что в форме был указан символ.  Это из за чего так? и можно ли поправить? 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)