Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.10.2013, 19:57
Аватар для wmag
Аспирант
Отправить личное сообщение для wmag Посмотреть профиль Найти все сообщения от wmag
 
Регистрация: 06.02.2012
Сообщений: 50

Имитация POST формы с данными пользователя (КАК?)
Есть форма, в которой некоторое кол-во строк с различной информацией о юзере.
Можно конечно ждать когда он все заполнит и нажмет кнопку "отправить", но хочется сразу, как только он переходит к следующей строке отправлять всю форму обрабатывающему PHP скрипту.

ЗАЧЕМ?

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

Вообщем то идея проста. Думаю уже подобное делали.

Я решил идти по такому пути: при загрузке страницы налету проверяем есть ли информация в сессии, если есть пишем значения, если нет - пустые поля.

Вопрос у меня такой: Как передать данные из формы в PHP файл методом POST так же как они передаются при нажатии кнопки "Submit"


кому интересно, так выглядит форма:

Код:
<form name="cardbox" action="index.php" method="post">
                        <input type="hidden" id="orderlist" name="orderlist" placeholder="Here is your order - don't change it" value="<?php if (isset($_SESSION['orderlist'])) {print ($_SESSION['orderlist']);}?>"></td></tr>
            <tr><td>Enter your name:</td><td><input type="textarea" name="name" placeholder="Enter your or receiver name" value="<?php print ($_SESSION['name'])?>"></td></tr>
            <tr><td>State:</td><td><input type="textarea" name="state" placeholder="Enter state" value="<?php print ($_SESSION['state'])?>"></td></tr>
            <tr><td>City:</td><td><input type="textarea" name="city" placeholder="City or village" value="<?php print ($_SESSION['city'])?>"></td></tr>
            <tr><td>Street:</td><td><input contenteditable="false" type="textarea" name="street" placeholder="Name of your street" value="<?php print ($_SESSION['street'])?>"></td></tr>
            <tr><td>Address:</td><td><input type="textarea" name="adress" placeholder="Type some additional details: house N, apartaments, etc..." value="<?php print ($_SESSION['adress'])?>"></td></tr>
            <tr><td>Zip code / Post code:</td><td><input type="zip" pattern="[0-9]{3,9}" placeholder="Only numbers '0-9'" name="zip" value="<?php print ($_SESSION['zip'])?>"></td></tr>
            <tr><td>Mobile:</td><td><input type="textarea" name="mobile" placeholder="Your mobile #" value="<?php print ($_SESSION['mobile'])?>"></td></tr>
            <tr><td colspan="2" text-align="center">	<input type="submit" name="submit" class="submit" value="Click to Order"></td></tr>
            </form>
а так выглядит PHP файл: (ну его первая версия, потом поменяю, главное что в сессию данные пишутся)

Код:
    if (isset($_POST["name"]))
    {
        $_SESSION['name'] = $_POST["name"];
    }

    if (isset($_POST["mobile"]))
    {
        $_SESSION['mobile'] = $_POST["mobile"];
    }
    if (isset($_POST["orderlist"]))
    {
        $_SESSION['orderlist'] = $_POST["orderlist"];

    }

    if (isset($_POST["city"]))
    {
        $_SESSION['city'] = $_POST["city"];
    }

    if (isset($_POST["street"]))
    {
        $_SESSION['street'] = $_POST["street"];
    }

    if (isset($_POST["adress"]))
    {
        $_SESSION['adress'] = $_POST["adress"];
    }

    if (isset($_POST["zip"]))
    {
        $_SESSION['zip'] = $_POST["zip"];

    }
    if (isset($_POST["state"]))
    {
        $_SESSION['state'] = $_POST["state"];

    }
Ответить с цитированием
  #2 (permalink)  
Старый 27.10.2013, 21:45
Аватар для wmag
Аспирант
Отправить личное сообщение для wmag Посмотреть профиль Найти все сообщения от wmag
 
Регистрация: 06.02.2012
Сообщений: 50

нет-нет, куки принципиально будут использоваться ИСКЛЮЧИТЕЛЬНО для хранения номера сессии, не больше и не меньше.

да и вопрос не только про "решение, что б работало"...

просто хочу научится - буду так уметь - буду уже много уметь (мне главное понять принцип передачи данных)
Ответить с цитированием
  #3 (permalink)  
Старый 27.10.2013, 23:00
Аватар для wmag
Аспирант
Отправить личное сообщение для wmag Посмотреть профиль Найти все сообщения от wmag
 
Регистрация: 06.02.2012
Сообщений: 50

Сообщение от Poznakomlus Посмотреть сообщение
простите а зачем его хранить?
после окончании сессии чистильщик должен удалить данные
я предложил вариант с куками из-за того, что можно значительно дольше по времени в них хранить данные и сохраняются они у пользователя.
И с ними можете работать так же из js. http://learn.javascript.ru/cookie
По отправке post скинул ссылку там все понятно.
И когда принимает post всегда проверяйте его на соответствие нужным данным
ну как и многих нормальных проектов, ПОТОМ я буду хранить номер сессии в куках, т.к. сессии и все данные будут хранится в БД. (все это для статистики и там я их могу обрабатывать в отличии от кук пользователя, до которых мне в общем то дела нет)

Можно увидеть как выглядит action на "unfocus" элемента
и команда на POST значений в JS (без query)
Ответить с цитированием
  #4 (permalink)  
Старый 28.10.2013, 03:23
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 2,932

Сообщение от wmag
if (isset($_POST["name"]))
{
$_SESSION['name'] = $_POST["name"];
}

if (isset($_POST["mobile"]))
{
$_SESSION['mobile'] = $_POST["mobile"];
}
if (isset($_POST["orderlist"]))
{
$_SESSION['orderlist'] = $_POST["orderlist"];

}

if (isset($_POST["city"]))
{
$_SESSION['city'] = $_POST["city"];
}

if (isset($_POST["street"]))
{
$_SESSION['street'] = $_POST["street"];
}

if (isset($_POST["adress"]))
{
$_SESSION['adress'] = $_POST["adress"];
}

if (isset($_POST["zip"]))
{
$_SESSION['zip'] = $_POST["zip"];

}
if (isset($_POST["state"]))
{
$_SESSION['state'] = $_POST["state"];

}
А не проще?

$_SESSION = $_POST;
Ответить с цитированием
  #5 (permalink)  
Старый 28.10.2013, 11:47
Аспирант
Посмотреть профиль Найти все сообщения от juser367
 
Регистрация: 16.10.2013
Сообщений: 36

Ничего в сессию писать не надо тупо value="<?=@htmlspecialchars($_POST['name'])?>"
Ответить с цитированием
  #6 (permalink)  
Старый 28.10.2013, 11:50
Аспирант
Посмотреть профиль Найти все сообщения от juser367
 
Регистрация: 16.10.2013
Сообщений: 36

Прочитал вопрос полностью. Запоминать ничего не нужно, такого нигде не видел
Ответить с цитированием
  #7 (permalink)  
Старый 29.10.2013, 10:23
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 2,932

Сообщение от Poznakomlus
Оба варианта нельзя использовать.
Тогда можно так.
foreach($_POST as $k => $v) $_SESSION[$k] = htmlspecialchars($v);
Ответить с цитированием
  #8 (permalink)  
Старый 29.10.2013, 11:54
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 2,932

Poznakomlus, вообще да, ты прав, это просто как пример автору, а то ведь этот г*внокод код кодом не назвовёшь:
Цитата:
if (isset($_POST["name"]))
{
$_SESSION['name'] = $_POST["name"];
}

if (isset($_POST["mobile"]))
{
$_SESSION['mobile'] = $_POST["mobile"];
}
if (isset($_POST["orderlist"]))
{
$_SESSION['orderlist'] = $_POST["orderlist"];

}

if (isset($_POST["city"]))
{
$_SESSION['city'] = $_POST["city"];
}

if (isset($_POST["street"]))
{
$_SESSION['street'] = $_POST["street"];
}

if (isset($_POST["adress"]))
{
$_SESSION['adress'] = $_POST["adress"];
}

if (isset($_POST["zip"]))
{
$_SESSION['zip'] = $_POST["zip"];

}
if (isset($_POST["state"]))
{
$_SESSION['state'] = $_POST["state"];

}
Ответить с цитированием
  #9 (permalink)  
Старый 02.11.2013, 23:51
Аватар для wmag
Аспирант
Отправить личное сообщение для wmag Посмотреть профиль Найти все сообщения от wmag
 
Регистрация: 06.02.2012
Сообщений: 50

вариантов конечно много, как птиц на проводах...

Ruslan, да действительно: $_SESSION = $_POST - куда проще, спасибо.

Poznakomlus и Ruslan, да нафиг мне их там "запомнинать и проверять"? у меня сайт совсем простой, все данные хранятся в сессии только за тем что бы потом отписаться в базе данных в качестве инфы о пользователе. (ну кто сдеал заказ) не думаю что на этом моменте можно как-либо мне навредить =))))

crystals.net.in - вот и сайт, если хотите можете попробовать что-либо с ним сделать =) сильно сомневаюсь =)
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как передать значение переменной в IFRAME в поле формы JS-ом из самой страницы? DeUre Общие вопросы Javascript 14 17.12.2013 14:37
JS AJAX Как получить html страницы "глазами" другого пользователя kolyanok AJAX и COMET 11 18.05.2013 22:00
Как сделать чтобы sertimeout срабатывал 1 раз за все время перебывания пользователя Albinos4210 Events/DOM/Window 11 17.05.2013 16:23
Как обрабатывать поля формы с одинаковыми названиями? javascript_pupil Общие вопросы Javascript 3 11.04.2012 20:25
Как обновить страницу открытую через post Роберт Общие вопросы Javascript 1 05.11.2008 13:53