Сессии, передача переменных, опт. решение задачи

galiant

Новичок
Сессии, передача переменных, опт. решение задачи

Ситуация следующая.
Есть 2 файла, step1.php и step2.php.
В первом файле юзер заполняет форму заказа, нажимает кнопку сабмит, переменные передаются во второй файл.

Второй файл их проверяет, и если какая-то не введена или неверной длины , направляет юзера опять к первому файлу и заодно направляет код ошибки, первый файл приняв этот код, пишет юзеру что он не так сделал... "исправь типа". Если же всё правильно второй файл сост. таблицу переменных, и показывает юзеру "проверьте все ли правильно", и снизу есть 2 кнопочки ("<< Редактировать") и ("Отправить заказ >>").
При нажатии на первую , юзер должен кидаться обратно к форме на step1.php , но только чтобы ранее введенные данные в полях уже были, при нажатии на вторую , говорить функции mail() (к примеру) чтобы она переменные слала на мыло, и говорила "спасибо."
Индексы файлов

Step1.php
-------------
<?
session_start();
if(isset($err)) {
тут функция дабавляющая к хтмл, текст ошибки, оринтируясь на ее код.
};
?>
<form action="step2.php" method="post" class="form_">
<input type="text" name="first" value="<? if (isset($first)) { echo $first; } ?>"> Введи 1-ю
<input type="text" name="second" value="<? if (isset($second)) { echo $second; } ?>"> Введи 2-ю
<input type="text" name="third" value="<? if (isset($third)) { echo $third; } ?>">Введи 3-ю
<input type="reset" value="Очистить">
<input type="submit" value="Далее >>">
</form>
--------------

Step2.php
-------------
<?
if(!isset($check)) { header("location:/"); exit(); }
$a=$_POST['first'];
$b=$_POST['second'];
$c=$_POST['third'];
$err=function_check($a,$b,$c);
if($err) {
session_start();
session_register('first','second','third');
$first=$_POST['first'];
$second=$_POST['second'];
$third=$_POST['third'];
header( "Location:step1.php?err=$err" );
};
?>
welcome text
<?
$table_html=table_html_create($a,$b,$c); // эта ф-ция создает табличку красивую
echo $table_html;
?>
<input type="button" value="<< Редактировать" onclick="">
<input type="button" value="Отправить" onclick="">
-------------

Вопросы у меня следующие:
1) Что вписать в onclick кнопочки, чтобы она возвращала чела назад к редактированию, ну со всеми переменными.. (но переменными наск. я понял сессия занимается)
2) как лучше сделать отсылку почты, создать step3.php и он будет мэйлить и спасибо говорить?
3)можно ли проверять форму не так геморойно как придумал я, чтобы потом при полож. рез-тет проверки, переменные в step2.php передавались невидимо. Не в Url.
4)Почему , если не написать
$a=$_POST['first'];
$b=$_POST['second'];
$c=$_POST['third'];
, то фунция, которой они нужны, их не видит хоть убей? Они же постятся в этот скрипт, она должна видеть вроде :)

Заранее спасибо, сорри за большие листинги кода. Функции не вписывал, т.к. отношения к делу они не имеют
 

galiant

Новичок
Да! И еще в первом скрипте есть
<input type="hidden" name="check" value="yeah">
 

Фанат

oncle terrible
Команда форума
для начала, чтобы сильно упростить систему, тебе надо, чтобы первый файл проверял свои ошибки.
и если все нормально - писал данные в сессию (или хиддены второй формы) и выводил вторую. Все же можно сделать в одном файле. тогда и передавать ничего никуда не придется.

А каким боком у тебя тут сессии - я не понял
 

Фанат

oncle terrible
Команда форума
вот тебе пример, когда файл с формой обрабатывает себя и показывает ошибки.
http://phpclub.ru/talk/showthread.php?s=&threadid=43521
 

Фанат

oncle terrible
Команда форума
а! так тебе вообще второй не нужен!
у тебя вся задача в один скрипт укладывается.
а сессии тут никакие не нужны, хоть тыи неправильно понимаешь, что это такое :)
 

galiant

Новичок
Фанат в одном файле? Да ты очевидно прав. окей я постараюсь.

а у меня сессии работали так : (хехе самому иногда смешно, но я не кодер, это всего лишь неразвитое хобби)

Итак :
1-ый файл передавал второму переменные форм-постом, второй проверял на ошибку в переменных, и если она была , открывал сессию и вызывал опять первый файл. А первый брал переменные из сессии, делал echo в поля формы, чтобы снова юзеру не писать тоже самое, еще он брал код ошибки из УРЛ, писал что не так....
Сессия тут юзалась только ради echo в поля формы.

спасибо короче за советы. Будем разбираться
 

Фанат

oncle terrible
Команда форума
на онклик я тебе порекомендую повесить яваскрипт, который сделает видимой форму. заранее заготовленную.
или даже ты выводи не в красивой табличке, а в форме, с задизабленными полями.
Юзеру все равно, а тебе - меньше работы :)

вообще, такие извращения, как у тебя, требуются редко.
чтобы никуда не записывая, да еще и показывать для редактирования.
Я до сих пор не встречал.

Что можно сказать?
первые два степа как сделать - написано по ссылке, что я дал.
третий - желательно сделать из второго.
четвертый - при отправке опять же кнопки
отправить, шлется некий сигнал, который заставляет отправить почту, и сделать локейшен с флагом, что надо показать спасибу.

я бы с сессиями не связывался.
 
Сверху