[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обработчкик формы
pavelzol
Написал обработчик формы. Теперь в случае если все заполнено верно заполнено, данные необходимо переслать в другой файл на локальной машине и вывести. Пытался вставить в action="" что то вроде action="<?php echo $adres ?>;" и в конце проверки указать $adres = 'registered.php' но это не помогло. идея с редиректами тоже не работает. помогите пожалуйста.


<LINK REL=StyleSheet HREF="css/style.css" TYPE="text/css">
<
div id=regform>
Регистрация
<div id=box><div id="val">
Ваше Имя<br />
Е-мейл<br />
Пароль<br /></div>
<
div id="from_left">
<
form action="" method="post">
<
input name="fname" type="text" value="<?php echo htmlspecialchars($fname) ?>"/><br />
<
input name="email" type="text" value="<?php echo htmlspecialchars($email) ?>"/><br />
<
input name="passwd" type="text" value="<?php echo htmlspecialchars($passwd) ?>"/><br />
<
input id="submit" name="ok" type="submit" value="Отправить"/>
</
form>
</
div>
</
div>
</
div>

<?php

$fname = !empty($_POST['fname']) ? $_POST['fname'] : null;
$email = !empty($_POST['email']) ? $_POST['email'] : null;
$passwd = !empty($_POST['passwd']) ? $_POST['passwd'] : null;

if(!empty($_POST['ok']))

if(!$fname)
echo 'Введите Ваше имя.';
elseif(!$email)
echo 'Укажите ваш Е-мейл.';
elseif(!$passwd)
echo 'Укажите ваш пароль.';
elseif(!preg_match('#^[a-z0-9]{2,8}$#i', $fname))
echo 'Неверное имя';
elseif(!preg_match('#^[a-z0-9_\.-]+@[a-z0-9\.-]+\.[a-z]{2,6}$#i', $email))
echo 'Е-мейл введен не верно.';
elseif(!preg_match('#^[a-z0-9]{2,8}$#i', $passwd))
echo 'Неверный пароль.';
else echo 'Поля заполнены верно';
?>




Спустя 22 минуты, 50 секунд (20.09.2011 - 20:49) caballero написал(а):
в чем проблемма вообще
с пустым action отправит на этот же файл
если что вставил открой в браузере view-html

провер что синтаксис в порядке

как ты вообще понял что оно не отправляется
сделай echo $fname в начале кода - пусть выведет

Спустя 17 минут, 16 секунд (20.09.2011 - 21:06) pavelzol написал(а):
Вставляю адрес, но в таком случае переход происходит 100%, а мне нужно что бы поля которые заполнены неверно подсвечивались красным светом и было извещение об ошибке без перехода на другую страницу. а переход должен быть только в случае если все поля заполнены верно.

<form action="registered.php" method="post">  
<
input name="fname" type="text" value="<?php echo htmlspecialchars($fname) ?>"/><br />
<
input name="email" type="text" value="<?php echo htmlspecialchars($email) ?>"/><br />
<
input name="passwd" type="text" value="<?php echo htmlspecialchars($passwd) ?>"/><br />
<
input id="submit" name="ok" type="submit" value="Отправить"/>
</
form>

Спустя 2 минуты, 9 секунд (20.09.2011 - 21:09) inpost написал(а):
pavelzol
Какой смысл пересылать данные на другую страницу? Обработчик на этой же странице используй. В крайнем случае его include!

Спустя 7 минут, 31 секунда (20.09.2011 - 21:16) pavelzol написал(а):
Такое тз.. обработчик и форма у меня на одной странице. Но результат надо вывести на другую. Плюс к тому в гугле не могу найти толкового совета как средствами php динамически изменить css стиль поля index что бы оно становилось красным когда введены недопустимые символы.

Спустя 14 минут, 57 секунд (20.09.2011 - 21:31) inpost написал(а):
pavelzol
Что значит результат вывести? Для юмора? Или может в БД занести?
Обычно происходит так, ссылка идёт сама на себя, внутри идёт обработка, если всё правильно ввели, то заносятся данные в БД и редирект уже на страницу личного кабинета, откуда и выводятся данные уже из БД, а не из формы(!). Если неправильно, тогда продолжается открытие этой страницы.
И что за поле такое INDEX ?

Спустя 25 минут, 9 секунд (20.09.2011 - 21:56) caballero написал(а):


стиль меняешь
style="border: 1px solid red;"

если все в порядке переправляешь на другую страницу
через header(location...


Спустя 37 минут, 32 секунды (20.09.2011 - 22:34) pavelzol написал(а):
inpost благодарю. буду старатся..

Спустя 6 минут, 26 секунд (20.09.2011 - 22:40) m4a1fox написал(а):
ИМХО! Я в таких случаях проще делал, ведь можно организовать проверку формы на этой же страницы, но! Допустим сделать так. Если данные не полны, то есть мы знаем поле кот. пусто, тогда можно в это поле сделать переменную и приравнять ее к 'style="border: 1px solid red;"'. А в самой форме сделать echo этой переменной... как-то так.

Спустя 55 минут, 1 секунда (20.09.2011 - 23:35) pavelzol написал(а):
ребят, помогите. нужна простая конструкция если условие выполняется - идет редирект на указаный урл. если не выполняется - сообщение об ошибке.
проблема в том что до того как использовать header(location...
есть много тегов и пхп. а header(location...
работает только в начале страницы. есть еще другие варианты просто перейти на другую страницу без конкретных действий со стороны пользователя?

Спустя 7 часов, 40 минут, 50 секунд (21.09.2011 - 07:16) Панч написал(а):
Что то вроде этого?

<?php
$fname = !empty($_POST['fname']) ? $_POST['fname'] : null;
$email = !empty($_POST['email']) ? $_POST['email'] : null;
$passwd = !empty($_POST['passwd']) ? $_POST['passwd'] : null;
$error = NULL;
if(!empty($_POST['ok']))
{
if(!$fname)
$error .= 'Введите Ваше имя<br />';
else
if
(!preg_match('#^[a-z0-9]{2,8}$#i', $fname))
$error .= 'Неверное имя<br />';

if(!$email)
$error .= 'Укажите ваш Е-мейл<br />';
else
if
(!preg_match('#^[a-z0-9_\.-]+@[a-z0-9\.-]+\.[a-z]{2,6}$#i', $email))
$error .= 'Е-мейл введен не верно<br />';

if(!$passwd)
$error .= 'Укажите ваш пароль<br />';
else
if
(!preg_match('#^[a-z0-9]{2,8}$#i', $passwd))
$error .= 'Неверный пароль<br />';

if(empty($error))
header("Location: /test/index.php?form=Y"); //Указываешь страницу на которую нужно сделать редирект
else
echo '<p style="color:red">'.$error.'</p>';
}
?>
<LINK
REL=StyleSheet HREF="css/style.css" TYPE="text/css">
<div
id=regform>
Регистрация
<div id=box>
<div
id="val">
Ваше Имя<br />
Е-мейл<br />
Пароль<br />
</div>
<div
id="from_left">
<form
action="" method="post">
<input
name="fname" type="text" value="<?php echo htmlspecialchars($fname) ?>"/><br />
<input
name="email" type="text" value="<?php echo htmlspecialchars($email) ?>"/><br />
<input
name="passwd" type="text" value="<?php echo htmlspecialchars($passwd) ?>"/><br />
<input
id="submit" name="ok" type="submit" value="Отправить"/>
</form>
</div>
</div>
</div>


Спустя 13 часов, 7 минут, 19 секунд (21.09.2011 - 20:23) pavelzol написал(а):
Всем спасибо кто помог. жаль никто не посоветовал использовать сессии. у меня практики мало и сам не додумался. но все уже получилось
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.