CREATE TABLE email(
email VARCHAR(40) NOT NULL,
text TEXT,
sended INT(12)
);
Location, $_POST и "обновить"!
В 1000-раз, наверное, для вас поднимается тема. Вы уж простите меня, ламера, но нужен детальный совет от вас!!!
Итак, расскажу вкратце..
...............
Есть страница, на ней - форма. Допустим, форма имеет два поля: ФАМИЛИЯ и E-MAIL... Смысл прост - отправить письмо на указанный в поле электронный адрес...
Т.е. что делает пользователь:
1. Вносит в поля свои фамилия и мыло
2. Нажимает кнопку отправить..
Данные передаются по POST!!!
РНР-код делает проверку и отправляет на указанное мыло письмо, типа ПРИВЕТ, ПЕТРОВ!! А на странице отображается сообщение, типа: "Уважаемый Петров! На ваше мыло [email]petrov@pentagon.us[/email] отправлено письмо!!! Прочитайте его!!!"
(Петров - это фамилия из поля формы..)
Всё работает - проблем никаких... ПОЧТИ никаких, если в браузере не нажимать кнопку ОБНОВИТЬ!! Если нажать, то ПЕТРОВУ опять отошлется письмо и т.д.
Что я предпринял: после того, как отправилось письмо ПЕТРОВУ, делаю автоматическую переадресацию на простейший файл ххх.php
header("Location: xxx.php");
Т.е., чтобы избежать повторной оправки на мыло через ОБНОВИТЬ!!!
В этом файле xxx.php - тест след.содержания: "Дорогой Юзверь! Прочти свое мыло"
Для красоты делаю:
header("Location: xxx.php?family=".$_GET['family']);
Но это не удобно, светить в адресной строке его фамилию, мыло.. А если и пароль придется передавать, то вообще, ацтой будет!!
Вообщем, решая проблему обновления страницы получилась проблема с методом передачи данных!!
И вот подошел я к вопросам:
1. Есть ли какие-нить приёмы, чтобы по header ("Location....") передать значения методом POST?!
2. если п.2 нельзя, то кто что посоветует, как лучше сделать...
З.Ы.: - не футбольте меня к РТФМ!!! Там я уже был - подробностей никаких нет..
Эта ссылка мне тоже не помогла (особенно пункт 3.2)http://www.codenet.ru/webmast/php/HTTP-POST.php
Заранее, спасибо вам, уважаемые ГУРУ
Код:
поле sended - это время отправки (думаю надо делать в формате получаемом функцией time() )
потом когда отправляешь соответсвуюште данные. если же юзверб нажимает обновить, то значит надо проверять отправлено ли письмо?? т.е. смотрим на существование такое записи. если существует, то сравниваем поле sended. Например такому-то юзверу одинаковое письмо можно отправлять раз в 2 минуты. Потом сравниваем прошло ли 2 минуты. Если нет, то говорим юзверю что типа хорош так часто отправлять то же письмо тому же адресату с тем же текстом.
2) Или можно через сессии сделать. Логика примерно так же, лишь реализация будет другая немного.
Лучше через сессии делать, быстрее и удобнее
ну например ставь $_SESSION['time'] = time(); и проверяй сколько времени назад отправлялось письмо
вот если бы из вас кто-нить примерчик кода скинул - было бы лучше.. и я бы вас не долбал вопросами!!!!
З.Ы.: С базой данных такую весчь не хоцца проворачивать..... чую, нутром чую, что решение где-то на поверхности :)!!! Сам уже себе голову сломал!!!
удивляюсь способности некоторых граждан "ломать голову" о вещи, про которые в любом PHP-букваре написано. нафига ломать что-то, не спать ночами, отнимать время у гуру? взял спокойно, погуглил, открыл, почитал и никакой трагедии.
Или ты с time() не можешь понять?? Если хочешь чтоб помогли, то уж будь добр напиши все что надо, а потом мы тебе уже подредактируем или укажем куда что вставить или как проверить. А то как то ради простоенького писать все формы, обработки её - неохота...