Unsubscription script

This commit is contained in:
Alexander Yakovlev 2017-05-04 19:52:59 +07:00
parent 6c39986f0c
commit 2fcaa9c973
3 changed files with 37 additions and 11 deletions

9
config.php Normal file
View file

@ -0,0 +1,9 @@
<?php
define('MYBB_ROOT', '../');
define('MYBB_PREFIX', 'mybbfo_');
define('FORUM_ID', 0);// 0 means all forums
define('DATE_FORMAT', 'd/M/Y h:i A');
define('DRY_RUN', true);
define('DSN', 'mysql:host=localhost;dbname=mybb;charset=utf8');
define('MYSQL_USER','root');
define('MYSQL_PASSWORD', '123456');

View file

@ -1,19 +1,12 @@
<?php
require_once "vendor/autoload.php";
require_once "config.php";
require_once "activethreads.php";
require_once "email.php";
define("MYBB_ROOT", "../");
define("MYBB_PREFIX", "mybbfo_");
define("FORUM_ID", 0);// 0 means all forums
define("DATE_FORMAT", 'd/M/Y h:i A');
define("DRY_RUN", true);
$dsn = 'mysql:host=localhost;dbname=mybb;charset=utf8';
$usr = 'root';
$pwd = '123456';
$pdo = new PDO($dsn, $usr, $pwd);
$pdo = new PDO(DSN, MYSQL_USER, MYSQL_PASSWORD);
$threads = getLatestActiveThreads(FORUM_ID, 100, true);
$users = $pdo->prepare("SELECT usergroup, email, username FROM ".MYBB_PREFIX."users
$users = $pdo->prepare("SELECT usergroup, loginkey, email, username FROM ".MYBB_PREFIX."users
WHERE usergroup = 4
AND isSubscribed = 1");
$users->execute();
@ -51,7 +44,7 @@ foreach ($temp as $row) {
foreach ($users as $user) {
$email = $user['email'];
$message = print_email($user['username'], $url.'/unsubscribe', $threads, $forbidden[$user['usergroup']]);
$message = print_email($user['username'], $url.'/digest/unsubscribe.php?email='.$user['email'].'&key='.$user['login.key'], $threads, $forbidden[$user['usergroup']]);
if (DRY_RUN) {
echo $message;
}

24
unsubscribe.php Normal file
View file

@ -0,0 +1,24 @@
<?php
require_once "config.php";
$pdo = new PDO(DSN, MYSQL_USER, MYSQL_PASSWORD);
$key = $pdo->prepare("SELECT loginkey FROM ".MYBB_PREFIX."users WHERE email = :email");
$loginkey = $_GET['key'];
$email = $_GET['email'];
if (empty($loginkey) || empty($email)) {
echo "Not enough parameters.";
var_dump($_GET);
return;
}
$key->execute([
'email' => $email
]);
$key = $key->fetch()['loginkey'];
if ($key === $loginkey) {
$key = $pdo->prepare('UPDATE '.MYBB_PREFIX."users SET isSubscribed = 0 WHERE email = :email");
$key->execute([
'email' => $email
]);
echo "You were unsubscribed. Close this window.";
} else {
echo "Key is incorrect. No action made.";
}