У меня такая система, на главной странице форма реги, там основные данные, а подтверждение email идёт на другой php-странице, но есть такой баг, что через адресную строку можно попасть на подтверждение email. Как мне проверь такую переадресацию чтобы проверить сессию на наличие данных?
Barmunk, а как проверить загрузку страницы? Чтобы при входе на php-страницу проверить сессию на наличие данных? Просто если их нету нужно пользователя назад отправить
Roman Dershavin, прочти про работу сессии в инете. Напоминаю, что при таком подходе подтвердить email по ссылке с другого устройства будет невозможно. К примеру на пк проходишь регистрацию, а почту подтверждаешь через мобилку. Для этого используют именно токены в ссылке.
Ну и какая проблема "получить загрузку страницы, чтобы проверить"?
Я вообще не понимаю проблемы, которую ты тут себе выдумал на пустом месте.
В ЧЕМ ПРОБЛЕМА, что человек может попасть по прямой ссылке? КАКАЯ ВООБЩЕ разница, по какой ссылке он попал, прямой или кривой?
Какая проблема просто взять емейл и проверочный токен, и проверить, совпадают ли они? Если не совпадают, то КАКАЯ РАЗНИЦА, по прямой ссылке он зашел или нет?
Barmunk, Я просто хотел запретить переадресацию между index.php и join.php где проводится рега и подтверждение, ибо через адресную строку можно будет регать новых юзеров без данных из index.php
FanatPHP, большая, если он войдёт на файл join.php через адресную строку, сделает подтверждение, то не будет хватать данных ,которые он обязуется ввести для регистрации в index.php
большая, если он войдёт на файл join.php через адресную строку, сделает подтверждение, то не будет хватать данных ,которые он обязуется ввести для регистрации в index.php
принципиально неправильная регистрация у тебя. В index.php ты должен полностью, получить от клиента все что ты хочешь и поставить флаг, что емейл не подтвержден, на всех остальных страницах ты уже проверяешь этот флаг и возвращаешь обратно с ошибкой.
На странице подтверждения емейла ты делаешь запрос в базу на поиск клиента по токену, находишь такого клиента и ставишь влаг валдидации емейла как true. Возвращаешь обратно на главную с поздравлениями.
это чушь какая-то
как можно зарегистрировать юзера через скрипт верификации емейла?
подтверждение емейла - это UPDATE запрос
КАК он может создать новую запись в БД?
FanatPHP, объясняю. Есть форма, по дизайну основная рега идёт на главной, а подтверждение email на второй странице, т.к. там надо код из email ввести, форма будет слишком большая для дизайна, если я просто перекину юзера на страницу подтверждения email'а без сессий, то данные не сохранятся, аккаунт не может быть создан, пока не подтверждена почта, но есть шанс, что можно попаcть на подтверждение реги без ввода данных в index.php.
Смотри, тебе нужно на первой странице создавать запись в бд что юзер зареган, но как уже сказали, с флагом emailVerified false. Затем ты на бэке создаешь сессию мол юзер зашел. При заходе/редиректе на вторую страницу где нужно подтвердить эмейл, ты проверяешь есть ли сессия у юзера, если да то выводишь форму подтверждения, если нет то например отдаешь 403. Усе просто))
А вообще, лучше не 403 отдавать если сессия пуста, а редиректить на первую страницу регистрации. Если сделать как я выше написал, то описанного тобой бага не будет)