В том то и дело эти email'ы не зарегистрированные, а просто сгенерированные!Вы это как-то проверяете, или это ни на чем не основанное чисто субъективное мнение? Если есть параметры по которым вы четко определяете что это нерабочий адрес, то проще всего по нему же и ориентироваться. Как вы определяете рабочие адреса?
мне оставят ссылку на тостер и я по ней перейду, то я зайду сюда сразу авторизованным, как добиться такого же поведения.Куки.
Или тут делается через два запроса, например браузер отправляет запрос, сервер проверяет наличие данных в заголовке, если данных нет, то отправляет скрипт, который может получить данные из localstorage и после этого пользователя перенаправляет на нужную страницу?Зачем хранить все в разных местах? Обычно все хранится в куки. И сервер не может "отправить скрипт", он может только перенаправить на другую страницу. При наличие правильного куки никакое перенаправление не нужно, авторизация происходит "налету".
привести к нежелательному поведению, но при этом не будет говнокодом?А нежелательное поведение это не всегда говнокод? Мы же говорим про предсказуемое, но не идемпотентное поведение, что не совсем одно и то же. Например - протухшая сессия.
+10 баллов, если это будет не выдуманный пример, а ссылка на документацию к какому-нибудь популярному сервисуНе обязательно сервису, но вот например - ключ сессии (который в запросах передается как гет параметр кстати) для апи фейсбука выдается по ключу приложения и действует в течении часа (емнип). Через час ссылка перестанет вам выдавать данные. И да, тут больше не про смену состояния сущностей на сервере, а про поведение, но "снаружи" мы это видим как изменение поведения на основании одного и того же запроса.
а что такого с куками и заголовками?С ними все ок, но они могут влиять на логику сервера, и по тому не всегда идемпотентны.
Вот та строка кода на PHP - первая моя строка кода на этом языке, и я, почему-то догадался заглянуть в документацию, чтобы не делать генерацию рандомного набора айтов на костыляхвот спасибо... я как бы в курсе как получить криптографически рандомные данные, но для этого нужна поддержка модуля, которого в онлайн эмуляторе нет. По этому заменил рандомом обычным, ибо нам не страшно предсказание по процессорозависимым алгоритмам для примера, а набивать чистым рандомом файл долго, по этому брал хэш, у которого достаточно большая энтропия. Суть от этого не поменяется, достаточно большие наборы будут сжиматься, даже тупыми алгоритмами сжатия "в лоб", типа лвз. Более продвинутые будут сжимать чуть получше, но ясное дело что не лучше осмысленного текста.
Во первых для этого нужно точно знать что она не нужна, а для этого надо понимать что и как работает на достаточно высоком уровне (что в данном случае точно не так), так же, в современных приложениях слишком много объектов использует бд, закрывать соединение в произвольном месте просто нельзя, а искать точку после которой всё уже отработало лютый идиотизм.
Ну и во вторых - ну закрыл ты соединение вручную на 0,0002 секунды раньше, сильно полегчало? Случаи когда бд стоит закрывать вручную крайне редкие, как я и написал.
Еще раз - крайне редко все работает по описанной схеме, это скорее исключение. И если код выполняется секунды, то или код говно, или специфика работы скрипта не предполагает открытие большого количества соединений, что в обоих случаях никак не влияет на производительность от незакрытого соединения.
Очень вредно заниматься закатом солнца вручную, давайте еще все переменные ансетить перед завершением приложения, зачем полагаться на пхп?
Миллиард статей на эту тему, по этому и сказал читать про подготовленные выражения, в любом источнике первое что объясняется - разница между пв и строковой вставкой переменных. И уровень абстракции тут вообще никаким боком, ну кроме понтов конечно. ПВ никак не повышают и не понижают его.