[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Уникальный номер заявки
psynick
Есть 2 формы с полями для заполнения. При нажатии отправить на первой форме - на почту отправляется письмо "Часть1", при нажатии отправить на второй форме - "Часть2". Но если сразу несколько пользователей заполняют эту заявку одновременно - на почту эти заявки приходят не в виде "Часть1, Часть2", а "Часть1 Часть1 Часть2 Часть2", и определить, какая часть1 отностися к части2 - очень сложно.

Идея такая - чтобы особо не заморачиваться и не связывать эти формы - решил просто связать их по IP адресу пользователя, но не пойму, как отправить $ip на почту. Надеюсь, вы мне поможете. Отблагодарю $ на телефон laugh.gif

Вот код, который отправляет все на почту:

<?php

$info = sprintf("

Телефон: %s"
, $_POST['phone']);

$to = "@mail.ru"; //почта
$title = sprintf("Часть1; Тел — %s",$_POST['phone']); // вот тут, в титл, нужно подставить еще и IP адрес.
mail($to,$title,$info);
header("Location: step2.html"); // рекдирект на вторую форму

?>


Заранее всем спасибо за помощь.



Спустя 6 минут, 11 секунд (29.06.2010 - 13:25) tomash написал(а):
psynick
Генерируйте для каждого пользователя uid, на форуме уже обсуждалась генерация уникальных id.
Можно создать подпись для первой части и отдавать во вторую! Например с помощью md5! Способов много, по IP не самый надежный

Спустя 28 минут, 2 секунды (29.06.2010 - 13:53) psynick написал(а):
Я не понимаю, как связать эти заявки - да и не хочу их связывать.
Пробовал сделать через uniqid - сгенерированный код первой заявки отличается от кода второй заявки (что, кстати, логично).

$title = sprintf("%s Часть1;", uniqid());

$title = sprintf("%s Часть2;", uniqid());

Спустя 6 минут, 19 секунд (29.06.2010 - 13:59) tomash написал(а):
psynick
Цитата (psynick @ 29.06.2010 - 10:53)
Пробовал сделать через uniqid - сгенерированный код первой заявки отличается от кода второй заявки (что, кстати, логично).

Логично)))

$sig = uniqid()
header("Location: step2.html?sig=".$sig)


Соответсвенно во второй заявке

$sig=$_GET['sig']


uniqid() я использовал для примера)) можно что-то понадежней, например добавить $_POST['phone']

$sig = md5(uniqid().$_POST['phone']);


Потом сравнить подписи и все)

Спустя 1 час, 25 минут, 46 секунд (29.06.2010 - 15:25) psynick написал(а):
Не понял самой идеи...

$sig = uniqid()
header("Location: step2.html?sig=".$sig)

Получили уникальный номер, подставили его в адресс второй заявки.

$sig=$_GET['sig']

Получили уникальный номер из первой заявки, правильно понимаю?

А как теперь подставить его в титл первой и второй заявки?

Спустя 8 минут, 23 секунды (29.06.2010 - 15:33) psynick написал(а):
Делал вот так:


//1я часть
<?php

$info = sprintf("

Телефон: %s "
,$_POST['phone']);

$sig = uniqid();
$to = "@gmail.com";
$title = sprintf("Часть1;".$sig);
mail($to,$title,$info);

header("Location: step2.html?sig=".$sig);

?>



// часть2
<?php

$info = sprintf(
"
e-mail: %s"
,$_POST['mail']);

$sig=$_GET['sig'];
$to = "@gmail.com";
$title = sprintf("Часть2;".$sig);
mail($to,$title,$info);

header("Location: final.php");

?>

Спустя 5 минут, 59 секунд (29.06.2010 - 15:39) tomash написал(а):
psynick


//часть1
<?php
$info = sprintf("
Телефон: %s "
,$_POST['phone']);
$sig = uniqid();
$to = "@gmail.com";
$title = "Часть1".$sig
mail($to,$title,$info);
header("Location: step2.html?sig=".$sig);

?>

//часть2
<?php
$info = sprintf(
"
e-mail: %s"
,$_POST['mail']);
$sig=$_GET['sig'];
$to = "@gmail.com";
$title = "Часть2".$sig
mail($to,$title,$info);

header("Location: final.php");

?>

Спустя 6 минут, 43 секунды (29.06.2010 - 15:46) psynick написал(а):
tomash
Без изменений, как и в моем варианте - Часть1 приходит с уникальным номером, Часть2 - без.


Пример:
Часть1-4c29ea72216dd
Часть2-

Спустя 5 минут, 8 секунд (29.06.2010 - 15:51) tomash написал(а):
Йоханый бабай! )))) слона то и не увидел)) Вы же не передаете во второй файл php, а в html)
header("Location: step2.html?sig=".$sig);


А Вам sig нужно во второй скрипт передать)

Спустя 3 минуты, 19 секунд (29.06.2010 - 15:55) psynick написал(а):
Кажется я понял, сейчас проверю. Действительно, страницы то на html laugh.gif

Спустя 5 минут, 47 секунд (29.06.2010 - 16:00) psynick написал(а):
Идею понял, но реализовать не получилось, а именно отправить sig во второй скрипт.

Первый скрипт называется send.php
Второй - send2.php

Они, соответственно, подключаются к html страницам (ну все как обычно).

Спустя 27 минут, 30 секунд (29.06.2010 - 16:28) tomash написал(а):
Можете sig из первого файла спрятать в какой-то hidden в step2.html, а потом в передать в ПХП

Спустя 5 минут, 5 секунд (29.06.2010 - 16:33) psynick написал(а):
А можно примерчик, а то я плохо представляю, как это сделать.

Спустя 4 минуты, 24 секунды (29.06.2010 - 16:37) tomash написал(а):
psynick
А как у Вас формируется html? Шаблонизатор или php или руками?

Спустя 3 минуты, 2 секунды (29.06.2010 - 16:40) psynick написал(а):
Я понимаю саму суть. Нужно создать Hidden поле, отправить в это поле значение sig и потом со второй формы, как, скажем, телефон, отправить это значение sig уже на почту. Но програмно я не знаю, как это реализовать

Спустя 1 минута, 15 секунд (29.06.2010 - 16:42) psynick написал(а):
Руками сделана html страница.

<form action="send.php" method="post" onsubmit="return checkform(this);"> 

Спустя 4 минуты (29.06.2010 - 16:46) tomash написал(а):
можно так

<input type = "hidden" value = "<?php echo $_GET['sig'];?>">

Спустя 16 минут, 26 секунд (29.06.2010 - 17:02) psynick написал(а):
Делаю так:
(изменил html формат на php)
в странице step2.php добавил строчку:

<input type = "hidden" id="sig" name="sig" value = "<?php echo $_GET['sig'];?>">


В первом скрипте (send.php)

<?php
$info = sprintf("
Телефон: %s "
,$_POST['phone']);
$sig = uniqid();
$to = "@gmail.com";
$title = "Часть1".$sig
mail($to,$title,$info);
header("Location: step2.php?sig=".$sig);
?>


Во втором:

$title = sprintf("Часть2; %s",$_POST['sig']);


Не работает sad.gif

Спустя 13 минут, 30 секунд (29.06.2010 - 17:16) psynick написал(а):
Хотя если на странице step2.php открыть исходный код (после перехода на нее с step1.html) - мы увидим:

<input type = "hidden" id="sig" value = "4c29ff838a393"> 

Спустя 2 минуты (29.06.2010 - 17:18) psynick написал(а):
И, как я понимаю, строчка
header("Location: step2.php?sig=".$sig); 

уже не нужна, достаточно
header("Location: step2.php);

верно?


Туплю, конечно, нужна.

Спустя 7 минут, 28 секунд (29.06.2010 - 17:25) tomash написал(а):
Блин! Я что то туплю сегодня))) Я с html редко работаю))) Нужно step2.html переименовать в step2.php. Или формы которые заполняються добавить в php файлы.

step1.php
<form>
// наша форма
</form>

<?php
if (isset($_POST['то что нам нужно']))
{
// выполняем логику
header("Location: step2.php?sig=".$sig);
}
?>

step2.php
<form>
// наша следующая форма
<input type = "hidden" id="sig" name="sig" value = "<?php echo $_GET['sig'];?>">
</
form>

<?php
if (isset($_POST['то что нам нужно']))
{
// выполняем логику
header("Location: final.php);
}
?>




Спустя 1 минута, 51 секунда (29.06.2010 - 17:27) tomash написал(а):
id="sig"????? name = "sig"

Спустя 5 минут, 33 секунды (29.06.2010 - 17:32) psynick написал(а):
Тоже туплю laugh.gif
Изменял файл step2.html, а заливал step2.php и не понимал, почему нет изменений.

Все заработало, сделал немножко другим способом - только вот проблема:
sig отображается в виде первой цифры "4". Не 13 символов, а 1
blink.gif

Спустя 2 минуты, 22 секунды (29.06.2010 - 17:35) psynick написал(а):
Все, разобрался. Все работает! Спасибо огромное, как мне Вас отблагодарить?

Спустя 1 минута, 16 секунд (29.06.2010 - 17:36) tomash написал(а):
psynick
Рад был помочь!
Быстрый ответ:

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