Я хочу написать информационный бюллетень с php. но у меня есть вопрос: как я могу сгенерировать код для отмены подписки. На самом деле я хочу уникальный код для каждого абонента. например, в 'http://net.tutsplus.com/' вы можете увидеть что-то вроде этого: 'http://tutsplus.us1.list-manage.com/profile?u=0154weg635df2fdwied2541cbed&id=c5652sdfre7&e=8758563dfgde'. , и еще один вопрос заключается в том, что этот код должен быть сохранен в базе данных или нет? (Потому что я думаю, что если он уникален для каждого человека, нет необходимости генерировать каждый раз, когда вы отправляете информационные бюллетени). Есть идеи?Как создать ссылку для рассылки новостей?
ответ
Создайте хэш идентификатора пользователя + некоторую секретную строку, поместите идентификатор и хэш в ссылку и выполните его, используя скрипт, который отменит подписку пользователя после проверки хэша.
Хэш не обязательно должен находиться в базе данных, просто вычислить его на лету.
Сценарий создания отписки ссылка:
<?
$link = "unsubscribe.php?id=$user['id']&validation_hash=".md5($user['id'].$SECRET_STRING)
<a href="<?=$link?>">Unsubscribe</a>
Сценарий обработки отписки ссылка:
function unsubscribe() {
$expected = md5($user['id'] . $SECRET_STRING);
if($_GET['validation_hash'] != $expected)
throw new Exception("Validation failed.");
sql("UPDATE users SET wants_newsletter = FALSE WHERE id = " . escape($_GET['id']);
}
Это не самая безопасная вещь когда-либо, но достаточно хорошо.
Да, это должно быть сохранено в базе данных. Вы должны использовать что-то вроде wamp, lamp или xampp. . Эти локальные серверы и предоставляет базу данных MySQL (PhpMyAdmin) для работы в
соединиться с базой данных, вы можете использовать это:
<?php
define("DB_HOST", "localhost");/*host*/
define("DB_USERNAME", "username");/*username*/
define("DB_PASSWORD", "pass123");/*password*/
define("DB_NAME", "mydatabase");/*database name*/
try
{
$db_conn = new PDO('pgsql:host='.DB_HOST.';dbname='.DB_NAME,DB_USERNAME,DB_PASSWORD);
}
catch(PDOException $e)
{
print "Error!:".$e->getMessage()."\n";
die();
}
?>
тогда, вы можете попробовать создать новую таблицу в MySQL, как это:
CREATE TABLE subcribe
(
subscribeId INT,
emailadress VARCHAR(60),
....
);
затем, вы можете добавить абонента в базе данных, как это:
, если он входит в систему, установить куки для является emailadress:
setcookie('emailadress',$hisEmailadress,time()+3600);
затем добавить subcriber:
$emailadress=$_COOKIE['emailadress'];
$subscriberId = $db_conn->prepare('SELECT MAX(subscriberId) FROM subcribe');
$subscriberId ->execute();
$row = $subscriberId ->fetch(PDO::FETCH_BOTH);
$subscriberId = $row[0]+1;/*unique number because it's one higher then max*/
$subscriber = $db_conn->prepare("INSERT INTO subscribe(subscriberId, emailadress) VALUES('$subscriberId','$emailadress')");
$subscriber ->execute();
отказаться от подписки, просто сделать это:
$unsubscribe = $db_conn->prepare('DELETE FROM subscribe WHERE emailadress=:emailadress');
$unsubscribe->bindParam(':emailadress',$_COOKIE['emailadress'],PDO::PARAM_STR);
$unsubscribe->execute();
создаст ссылку, вы можете сделать это, как это и отправить его лицам почты:
$length = rand(5, 10);
$link= "";
for($i=0;$i< $length;$i++)/*create random link*/
{
$char = rand(0, 256);
if(($char>=65 && $char<=90) || ($char>=97 && $char<=122) || ($char>=48 && $char<=57))
{
$char = chr($char);
$link.= $link;
}
else
$i--;
}
$hash = hash("ripemd160",$link);
setcookie('unsubscribe',$hash,time()+300);
$result = mail($emailadress, 'unsubscribe link', 'you are about to unsubscribe yourself. Click this link to unsubscribe: http://yourSite.php?link='.$link);
На этой странице вы можете использовать код для удаления подписчика, как указано выше.
PS: ссылку не следует добавлять в базу данных, потому что вы можете установить cookie, действительный в течение определенного времени (здесь 5 минут). на странице этой страницы вы можете добавить if-тест, чтобы узнать, установлен ли файл cookie, а затем удалить абонента. if(isset($_COOKIE['unsubscribe'])){...}
Надеется, что это помогло;)
Плохое решение. Если пользователь забудет логин, он будет получать почту на вечность. –
Почему вы используете cookie для отказа от подписки? вы считаете, что каждый использует только одну систему для входа в электронную почту? –
- 1. Как сделать ссылку для отписки в Outlook для рассылки новостей?
- 2. Отслеживание рассылки новостей Outlook
- 3. Как разместить эту форму для рассылки новостей?
- 4. простой формуляр для рассылки новостей php
- 5. Я хочу плагин для рассылки новостей Wordpress
- 6. Как создать ссылку для рассылки в электронной почте?
- 7. Каков наилучший способ внедрения ссылки для рассылки новостей?
- 8. Как равномерно распределить контент через ячейку html для рассылки новостей?
- 9. Создать безопасную ссылку для рассылки писем, отправленных с помощью Flask
- 10. Настройки рассылки новостей - добавить в базу данных
- 11. Как создать агрегатор новостей?
- 12. Как создать бимодальные рассылки
- 13. Как новости Google тянут ссылку новостей с разных сайтов новостей?
- 14. django - приложение для рассылки новостей - сохранить исходящие данные в моделях
- 15. ускорение внешнего запроса присоединения для сценария рассылки новостей
- 16. Создать ссылку на страницу профиля друга из массива новостей
- 17. Как создать DynamoDB для таблицы новостей?
- 18. Как создать последний список новостей на основе текущих новостей
- 19. API новостей для общих новостей
- 20. Как создать ссылку для действия?
- 21. Как создать ссылку для удаления
- 22. Как создать ссылку для Mpdf?
- 23. Как создать список рассылки электронной почты
- 24. Как создать заявку на рассылку новостей?
- 25. Как настроить диспетчер сайта рассылки для массового рассылки бюллетеней клиентам
- 26. ListView для отображения новостей?
- 27. Как создать usa сегодня, например, скроллер новостей?
- 28. Как создать рассылку новостей из двух столбцов
- 29. Rails формы для рассылки
- 30. Как создать ссылку для загрузки для программы
TNX для вашего ответа, вы имеете в виду, что хэш сохраняются в БДЕ? – Highlan
Пример с псевдокодом добавлен –
, но таким образом, кажется, у нас есть большой процесс каждый раз, когда рассылку отправляет! вы не согласны со мной? – Highlan