Night386, ну вот, уже конкретный результат. Теперь смотрите другие запросы, из которых нормально вытаскиваются данные - и повторяйте весь алгоритм здесь, проверяйте возвращаемое значение `email` на не пустоту, и т.д.
Night386, как-то напрягитесь и узнайте точное содержимое $check при наличии и отсутствии записи в Базе Данных. Это не просто, но это надо сделать, как-то собраться и как-то напрячься.
Да, переменная $rfile в коде не определена, но используется. А использование переменной $status в обработке Exception стирает DebugOutput из PHPMailer-а, который полезно было бы увидеть и понять...
Night386, поздравляю, у вас нет проверки на наличие записи. Вне зависимости от результата SELECT у вас выполняется код в try{}, и если там произошла ошибка и db::i()-&query() выкинуло Exception - выполнится catch{}. $check ни где не проверяется, можете удалить SELECT - ничего не поменяется, гы-гы-гы!
Сначала сделайте вывод из скрипта каждые 5-10-15-30 секунд, по вкусу. Разумеется с очисткой всех возможных буферов, что бы данные браузеру точно уходили сразу. Если не поможет - тогда да, мудрить с очередями и cron-ами.
Stalker_RED, для браузера Firefox существует аддон Cookie Exterminator. И вот этот аддон прекрасно замечает закрытие "последней" вкладки, сразу удаляя cookie сайта(ов), не добавленного в исключения.
И вопрос, как тогда онлайн-банки выставляют "Expire: At end of session" своим cookie, и браузер это понимает? Подпольный сговор банкиров с производителями браузеров?
MZhack, проверил на первом попавшемся сайте online.sberbank.ru. Даже просто открытие этого сайта создаёт 6-7 куков "до закрытия". И нет, они не стираются при закрытии последней вкладки. Но стираются при закрытии браузера.
Night386, потому что перед добавлением лучше проверять существование такой записи. И выводить ошибку, если запись уже существует. А INSERT IGNORE - плохая практика, положительный результат при отсутствии результата. Тем более INSERT ... ON DUPLICATE KEY UPDATE - черезвычайно плохая практика, можно поменять/поломать подписки всем пользователям, почтовые ящики которых известны.
P.S. А полное отсутствие защиты от SQL Injections - за такое розгами надо пороть. Прилюдно.
MZhack, тут явно что-то не так. Закрытие браузера (и я предполагаю, закрытие последней вкладки с сайтом) однозначно должно стирать куки (при нулевой lifetime). Так в доках же написано! Вот точно что-то не так.
P.S. В случае с банком всё просто - банк как минимум стирает сессию через XX минут неактивности, и кука становится бесполезной. Но должны использовать и механизм удаления по закрытию.
Виктор Таран, "как бы внутри себя" - ну так идите туда и объясняйте программе, что она плохо себя ведёт, нарушает все правила приличия программ. А мы ни чем помочь не можем, когда программа "внутри себя", как-бы.
Неужели придётся использовать стандартные методы curl_setopt? А там вообще можно задать User-Agent через -A?
Да, придётся. Потому что в PHP cURL нет опций -A и -H, зато есть CURLOPT_USERAGENT и другие.
Смиритесь с этим, искренне соболезную, ваш Капитан Очевидность.