|
 2.3 Кб |
|
| Имеется форма где надо цифрами набрать либо логин либо пароль.
к ней вот такой обработчик, который почему-то выдает пустую страницу- просто заголовки
синтаксических ошибок нет, скорее всего ошибка в логике построения обработчика.
помогите ошибку отыскать. | |
|
|
|
|
|
|
|
для: Nextia
(08.09.2010 в 10:26)
| | первой строчкой пишите error_reporting(E_ALL); и смотрите, что Вам отвечает php
и в самом конце обработчика вывидите ошибки $errors; | |
|
|
|
|
|
|
|
для: Nextia
(08.09.2010 в 10:26)
| | какие заголовки выдаются в ответ?
Включена ли диагностика ВСЕХ ошибок (E_ALL) ?
ereg вообще-то применять настоятельно не рекомендуется. Её выносят из php.
Может в Вашей версии уже вынесли? | |
|
|
|
|
автор: ..... (08.09.2010 в 11:56) |
|
|
для: Nextia
(08.09.2010 в 10:26)
| | :) И вообще если не обращать внимание на print $errors; которая равна ''
то там по смыслу
if (isset($_REQUEST['alogin'])
&& preg_match("#^\d{11}$#", $_REQUEST['alogin']))
echo ........
else if (isset ($_REQUEST['anum'])
&& preg_match("#^\d{10}$#", $_REQUEST['anum']))
echo ....почти то-же самое ........
else вообще ничего | |
|
|
|
|
|
|
|
для: .....
(08.09.2010 в 11:56)
| | спасибо буду копать.
Заработало :-) | |
|
|
|
|
автор: ..... (09.09.2010 в 13:23) |
|
|
для: Nextia
(09.09.2010 в 02:27)
| | Всё-таки c такой неоднозначностью запросом обработка будет слишком запутанной, типа
<?php
$errors = '';
$action = 0;
if (isset($_REQUEST['ok'])) {
$alogin = (isset($_REQUEST['alogin'])) ? trim($_REQUEST['alogin']): '';
$anum = (isset($_REQUEST['anum'])) ? trim($_REQUEST['anum']): '';
# приоритет например у первого
if ($alogin != '') $action = 1;
elseif ($anum != '') $action = 2;
// $action = (($anum != '') << 1)| ($alogin != ''); // 3
switch($action) {
case 0:
$errors .= '<li>не введены цифры в поля num или login</li>'. "\n";
break;
case 1:
if ( preg_match('#^\d{11}$#', $alogin)) break;
$errors .= '<li>login введён но не соответствует формату 11 цифр</li>'. "\n";
if ($anum == '') break;
$action <<= 1;
case 2:
if (! preg_match('#^\d{10}$#', $anum))
$errors .= '<li>num введён но не соответствует формату 10 цифр</li>'. "\n";
else { $errors = ''; } //
}
//обработка
if ($errors == '') {
echo 'действия с полученной переменной '. (($action & 1) ? 'login': 'num') ;
// exit;
} else {
echo "<ol>\n" . $errors ."\n</ol>\n";
}
}
?>
<pre>
<form action="">
login <input type="text" name="alogin" />
num <input type="text" name="anum" />
<input type="submit" name="ok" value=">>>"/>
</form>
|
намного удобнее две кнопки к одному input, тогда просто что-то вроде
<?php
$errors = '';
$action = 0;
$length = array('0', '11', '10');
if (isset($_REQUEST['ok'])) {
$action = ($_REQUEST['ok'] == 'login') ? 1: (($_REQUEST['ok'] == 'num') ? 2: 0);
if (!$action) $errors .= '<li>введите цифры форму и нажмите нужную кнопку</li>'. "\n";
$num = (isset($_REQUEST['number'])) ? trim($_REQUEST['number']): '';
if ($num == '')
$errors .= '<li>не введены цифры</li>'. "\n";
elseif ($action && !preg_match('#^\d{'. $length[$action] .'}$#', $num))
$errors .= '<li>цифры не соответствует формату '. $length[$action] .' цифр</li>'. "\n";
//обработка
if ($errors == '') {
echo 'действия с полученной переменной '. (($action & 1) ? 'login': 'num') ;
// exit;
} else {
echo "<ol>\n" . $errors ."\n</ol>\n";
}
}
?>
<pre>
<form action="">
number <input type="text" name="number" />
<input type="submit" name="ok" value="login"/>
<input type="submit" name="ok" value="num"/>
</form>
|
| |
|
|
|