Нужна помощь с кодом PHP!

P
На сайте с 21.03.2006
Offline
34
593

Есть регистрационная форма. Если юзер заполняет ее неправильно (например не все нужные поля заполнены), то сервер возвращает код 0 и снова загружает эту регистрационную форму. Поэтому нужен кусок кода на php который будет смотреть если при заполнении были ошибки (сервер вернул результат 0) то показывать юзеру сообщение, например "при заполнении формы были ошибки". Название переменной - 'res', она может быть 1 если форма нормально обработана или 0 если были ошибки.

Спасибо.

DI
На сайте с 03.01.2007
Offline
123
#1

if ($res && $res!="1") echo "При заполнении формы были ошибки.";

Высказывание идиотского утверждения требует на порядок меньше усилий, чем его последовательное и обоснованное опровержение и более того, иногда это опровержение вообще невозможно. © (http://zhurnal.lib.ru/s/shapiro_m_a/raspidiota.shtml)
Dreammaker
На сайте с 20.04.2006
Offline
569
#2


if ( empty($res) ) echo "При заполнении формы были ошибки.";

чтобы не было лишних нотайсов..

dima_s_d_s
На сайте с 20.11.2006
Offline
4
#3

Можно и на джава, так даже лучше, так как проверка происходит в реальном времени. Тоесть, если пользователь ввел данные не корректно, и при этом нажал отправить ему выскочит сообщение об ошибке введённых данных. При этом страница не будет перезагружаться

вот пример на проверку урл адреса (так я проверяю)

<script language="javascript">

function validate_link(){
var sitelink=document.subscribe.sitelink.value;
var reg_sitelink = new RegExp("^http://[0-9a-z_^.]+\\.[a-z]{2,3}/", 'i');

if (!reg_sitelink.test(sitelink)) { alert('Ошибка в адресе сайта'); return false;}
else {return true;}

}
</script>

<form method="post" action="index.html" name="subscribe" onSubmit='return validate_link()'>
<table cellpadding="5" cellspacing="5" width="80%">
<tr>
<td style="text-align:center" class="tab">Ссылка на сайт вида http://site.ru/ (Слеш в конце обязателен )</td>
<td style="text-align:center" class="tab"><input type="text" name="sitelink" size="30" maxlength="30" value="http://"></td>
</tr>
<tr><td> <input type="submit" value="Добавить"></td></tr>
</table></form>
AN
На сайте с 31.07.2006
Offline
58
#4
dima_s_d_s:
Можно и на джава, так даже лучше, так как проверка происходит в реальном времени. Тоесть, если пользователь ввел данные не корректно, и при этом нажал отправить ему выскочит сообщение об ошибке введённых данных. При этом страница не будет перезагружаться

вот только вопрос был не в этом,

да и проверка такого рода обходится очень просто, поэтому может служить лишь дополнительным удобством для пользователя (страница не перезагружается).

но данные проверяются обычно для того, чтобы избежать нарушений работы программы (и злоумышленных в том числе), поэтому полагаться на такую проверку не стоит.

з.ы. не java, a javascript.

Dreammaker
На сайте с 20.04.2006
Offline
569
#5

Как вариант, можно соединить JS с php и сделать проверку на аяксе или подобной технологии (JsHTTPRequest Котерова), но, да, вопрос был не об этом :) и проверка на сервере должна быть всегда.

DI
На сайте с 03.01.2007
Offline
123
#6
Dreammaker:
if ( empty($res) ) echo "При заполнении формы были ошибки.";
чтобы не было лишних нотайсов..

В таком случае, имхо, оно будет выводиться сразу на чистую незаполненную форму (насколько я понял, $res появляется только после постинга формы)

mymind
На сайте с 07.09.2004
Offline
188
#7

Кстати лучше бы не 0 и 1, а false / true. Как-то оно вернее. Может такой вариант :

Форма :


<form action=test.php methos=post>
Это поле обязательно : <input type=text name="MFORM_NAME" size=20><br>
Это в принципе не обязательно : <input type=text name="DATA" size=20><br>
И это обязательно : <input type=text name="MFORM_FAMILY" size=20>
</form>

А теперь собственно проверка :


$DATAVAR=("MFORM_NAME","MFORM_FAMILY");
$res=false;
if ($_POST)
{
$res=true;
for ($i=0;$i<count($DATAVAR);$i++){
if (empty($_POST[$DATAVAR[$i]]) $res=false;
}
}

if ($res) {

echo "типа данные верные, переходит дальше";

}
else {

echo "Чёт забыли. Нате Вам форму снова";

}

ну вот что-то такое. Я лично вопрос именно так понял. Проверка входящих данных и дальнейшая работа.

Dreammaker
На сайте с 20.04.2006
Offline
569
#8
DenIT:
В таком случае, имхо, оно будет выводиться сразу на чистую незаполненную форму (насколько я понял, $res появляется только после постинга формы)

В прицнипе, Вы правы, но в Вашем случае будет выводится нотайс.

Более правильный выриант предложенный mymind, хотя я бы немного по-другому делал, но логика примерно такая же.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий