|
|
|
| Добрый день!
Собственно вопрос состоит в том, как реализовать отписку от письма, которое приходит пользователю?
То есть, у меня есть рассылка которая приходит по Cron каждое утро пользователям, адреса которых хранятся у меня в бд....я указываю в рассылке, что то типа "Если Вы не хотите больше получать данную рассылку , перейдите по ссылке: <ссылка>" ..Вот. Как собственно определить email, который "заказал" отписку?
Наведите на мысль?! | |
|
|
|
|
|
|
|
для: Silentium
(22.01.2009 в 20:19)
| | Одним из параметров ссылки будет e-mail или какой либо ID отписывающегося от рассылки... | |
|
|
|
|
|
|
|
для: Zend72
(22.01.2009 в 23:42)
| | Как в ссылку подставить мейл отписчика? | |
|
|
|
|
|
|
|
для: Silentium
(23.01.2009 в 08:35)
| | Вообще то по хорошему отписку нужно делать из личного кабинета, иначе кто нибудь легко "отпишет" всех Ваших пользователей. | |
|
|
|
|
|
|
|
для: Николай2357
(23.01.2009 в 10:09)
| | Это не так.
В ссылке отписки должно быть достаточно аутентифицирующей информации для выполнения отписки путем простого перехода на нее.
В противном случае человек, забывший логин/пароль к порталу, не сможет прекратить рассылку почты с портала.
Владелец почтового ящика должен иметь возможность отписаться от подписки независимо от того, является ли он владельцем логина на портале.
Само собой, это не значит, что только по данным ссылки должен вычисляться е-мэйл, логин (а уж тем паче - пароль). | |
|
|
|
|
|
|
|
для: Trianon
(23.01.2009 в 10:24)
| | Действительно, совсем не подумал... Спасибо, надо теперь исправлять, то что я успел наделать. Благо по рассылкам не много... | |
|
|
|
|
|
|
|
для: Silentium
(23.01.2009 в 08:35)
| | Тогда я Вам бы посоветовал обратить внимание на зту тему, можно сделать по такому же принципу. | |
|
|
|
|
|
|
|
для: Николай2357
(23.01.2009 в 10:46)
| | Спасибо я это читал до того как создать тему!
Но согласно вашим заумным рассуждениям, простите я несколько чайник, я должен при добавлении адреса рассылки в свою бд добавлять еще какойто idшник, а потом передавая письмо адресату, как то уже заложить этот ID в письме и в случае его отписки(т.е он жмет на ссылку в самом письме) приплюсовывать этот ID к ссылке...так?
Тогда встает вопрос что использовать в качестве ID? например md5($mail) может для этого подойти?
т.е
Хранится у меня в дб чтото типа
N|___mail____|__md5_________|
1 | test@test.ru | qgduyud23wgei7|
отсылаю по этому адресу рассылку и добавляю
"Если вы не хотите получать письма жми сюда: http://moysite.ru/mail.php?unsubscrybe=qgduyud23wgei7"
А дальше просто сравниваю то что пришло с тем что хранится в моей бд и тупо при совпадении удаляю...Так чтоли? или я не туда копаю?
P.S. Заранее прошу простить за ламерский язык, я только учусь! | |
|
|
|
|
|
|
|
для: Silentium
(23.01.2009 в 11:19)
| | Первое.
id - это ИДеинтификатор, то есть номер записи. Но не порядковый номер, а уникальный. Он присваивается один раз и на всегда. То есть даже если удалить эту запись из базы, то этот номер никакой больше записи присвоен не будет. Это как паспорт. Если человек умер, то паспорт с таким же номером другому не дадут, а то на него могут чужой кредит свешать. Почти каждая уважающая себя таблица в бд должна содержать поле id (можете назвать по другому) у которой включена опция auto_increment. Именно она отвечает за уникальность. На сколько я понял из Ваших рассуждений, у Вас этого нет. Поставьте auto_increment. полю № и вот его и используйте вместо id.
Второе.
Вам нужно еще одно поле, в котором должен храниться идентификатор пользователя. Не записи, а пользователя. Потому что пароль вытаскивать на всеобщее обозрение нельзя ни в коем случае, а логин всем известен, это не закрытая информация. Вычислим (или и так виден) и id записи. По этому необходим еще один параметр, уникальный (не повторяющийся) и известный только серверу и пользователю. Сделать его можно, сгенерировав случайную строку, прибавить к ней (не плюсом, конкатенацией) id записи для уникальности, и захэшировав результат. Этот ключ передать в письме пользователю и записать в учетную запись (при регистрации). Вот по этому ключу можно будет относительно безопасно идентифицировать пользователя и отключить ему рассылку. | |
|
|
|
|
|
|
|
для: Николай2357
(23.01.2009 в 12:00)
| | ну как раз № у меня имеет autoincrement, а как же быть с пользователями, которые не прошли регистрацию? их у меня большинство примерно 1 к 10..? | |
|
|
|
|
|
|
|
для: Silentium
(23.01.2009 в 13:25)
| | Ну а если не прошли регистрацию, то как Вы им письма шлете? В любом случае запись есть в базе. Сформируйте следующее письмо рассылки с этим условием и всё. | |
|
|
|
|
|
|
|
для: Николай2357
(23.01.2009 в 13:33)
| | Запись в базе есть!
Она у меня реализована как раз
<?
$mylo=$_POST[email]; \\ -эл адрес
.......
mysql_query("INSERT INTO `base`.`subscrybe` (`email` ,`ip` ,`hash_mail`) VALUES ( '$mylo', '$R', '$H' );
?>
|
Вопрос , как при внесении из формы данных в таблицу создать уникальный идентификатор пользователя (hash_mail)?
Как я понял из Ваших рекомендаций, мне нужно взять md5(уникальный ID строки с адресом в таблице +rand(строка)) и записать этот результат в колонку напротив эл. адреса? Так?
не совсем ясно как извлечь ID ??? Эт нужно еще, после добавления записи эл адреса , делать еще один запрос или както можно проще обойтись....? | |
|
|
|
|
|
|
|
для: Silentium
(23.01.2009 в 14:23)
| | Вам придется в таблицу добавить еще одно поле. И написать скрипт, который разом добавит в эти ячейки ключи. Обработать им таблицу, один раз. А так же дополнить такой функцией регистрацию. И продолжать радоваться жизни. | |
|
|
|
|
|
|
|
для: Silentium
(23.01.2009 в 14:23)
| |
Но проблема не в этом..суть в том что в активационном key должно присутствовать хотя-бы один уникальный параметр из таблицы юзеров и ничего не передавать в не зашифрованном виде..
параметр этот может быть id таб юзеров,их емайл или имя(при этом в таб эти поля должны быть уникальными...) или все сразу(на сколько хватит воображения) пропущенные через функцию необратимого шифрования...мд5 ша1 и тп.. | |
|
|
|
|
|
|
|
для: serjinio
(24.01.2009 в 10:57)
| | >.... и ничего не передавать в не зашифрованном виде..
Почему? | |
|
|
|
|
|
|
|
для: Trianon
(24.01.2009 в 11:13)
| | Был не прав...
ссылка должна выглядеть типа .php?key=user@mail.ru&login=serjinio&$pass=1234567 ;) | |
|
|
|
|
|
|
|
для: serjinio
(24.01.2009 в 12:46)
| | Вообще то вопрос был "Почему?" а не как должна выглядеть ссылка. | |
|
|
|
|
|
|
|
для: serjinio
(24.01.2009 в 12:46)
| | Она может выглядеть и так. | |
|
|
|
|
|
|
|
для: Trianon
(24.01.2009 в 13:56)
| | Во общем примерно ясно направление мысли, спасибо что откликнулись | |
|
|
|
|
|
|
|
для: Silentium
(23.01.2009 в 14:23)
| | Кстати, я хотел бы вас предупредить, что ваши SQL запросы подвержены инъекциям. Просто посмотрите на то, что произойдет, если в поле $mylo напишут что-то с кавычками. И пост-метод этому не оправдание. | |
|
|
|
|
|
|
|
для: udpn
(26.01.2009 в 22:31)
| | ну я вообщето использую рег выражение для проверки
preg_match("|^[-0-9a-z_\.]+@[-0-9a-z\.]+\.[a-z]{2,6}$|i", $mylo)
|
| |
|
|
|