Войти

Показать полную графическую версию : [решено] Пропадают переменные из форм


Bask76
23-07-2008, 14:29
Пытаюсь облагородить немного наш сайт и немного озадачился вот над чем
Задча такая в файле form.html форма заполняется, проверяется на наличей в ней телефона мыло и тд, потом показывается для проверки и потом по клику отсылается на почту(отсылка осуществляется другим файлом с кодом отправки)
Взял исходник для отправки и проверки заполненных полей вот отсюда http://www.progs.biz/php/php/lessons/021.aspx
Немного доработал для своих целей, а именно
в function confirm_form хотел вставить кнопку для отправки проверенной информации на нашу почту, вставил и все нормально работает письма проиходят только в письме пропали все переменные
Выкладываю что получилось надеюсь на помощь
У нас уже работает форма заявки тоько без проверки полей, из массива извлекаются командой $_POST/ Из нее все приходит нормально все переменные, а здесь никак
Была идея вставить код отправки сразуже в эту функцию, но тогда теряется смысл проверки она отсылается сразу, а нужно что бы форму сначала заполнили, потом проверили и только потом отправили к нам.
Пытался в коде отправки вставить команду echo "$HTTP_POST_VARS['finans']"; чтобы вытащить из массива но не вышло выдает вот что // Array( ) //

<?php
function show_form($finans, $l_name, $telefon, $email) {
?>

<form action="form.html" method="post">
<table width="95%" border="0" cellpadding="3">
..........

<tr><td><span class="style69"> E-mail <br>
<input type="text" name="email" size="100" value="<?php print $email ?>">*<br></td></tr>

</table>
</form>

<?
}
function check_form($finans, $l_name, $telefon, $email) {
if(!$l_name || !$telefon || !$email):
print("Вы не заполнили нужные поля!<br>");
if(!$l_name) {
print("Введите Ваше имя.<br>");
}
if(!$telefon) {
print("Введите Ваш телефон.<br>");
}
if(!$email) {
print("Введите ваш e-mail.<br>");
}
show_form($finans, $l_name, $telefon, $email);
else:
confirm_form($finans, $l_name, $telefon, $email);
endif;
}
function confirm_form($finans, $l_name, $telefon, $email)
{
?>

<h2>Проверьте введенную Вами информацию:</h2>

<?
print("<br>$l_name<br>$email\n");
?>

<br>
<br>
<form action="processfeedback.html" method=post>
<input type="submit" value="Отправить">
</form>

<?
}
if(!$submit):
?>

<p>Введите информацию о себе</p>
<p>Все поля обязательны для заполнения.<p>

<?php
show_form("", "", "","");
else:
check_form($finans, $l_name, $telefon, $email);
endif;
?></body></html>

Sham
24-07-2008, 17:42
а что с register_globals (php.ini)? если off, то такие переменные не определяются... только через $_POST\GET...
в .htaccess
php_flag register_globals on

Arrest
25-07-2008, 12:27
expand($_GET);
expand($_POST);
expand($_COOKIE);

Sham
26-07-2008, 02:03
точнее extract($_GET, EXTR_REFS);
extract($_POST, EXTR_REFS);
expand не знаю...

Bask76
26-07-2008, 14:24
Не работает ни первый вариант ни второй, на expande ругается
Такое впечатление что при отправке второй формы данные из первой просто обнуляются (хотя я в PHP только начинаю)
Пока нашел такой выход вставил опять все поля формы в confirm_form, только сделал что бы были заполненные с полем вроде этого value="<?php print $email ?>">*
Только не совсем так как хотел(((
Подскажите как сделать простое отображение полей формы без возможности редактирования юзером??

Bask76
26-07-2008, 22:02
Команда Disabled Все работает всем спасибо!




© OSzone.net 2001-2012