2015-07-12 5 views
0

Недавно я начал веб-разработку на своем сервере WAMP и пытался создать простую страницу входа с использованием php и MySQL. То, что я просто сделал, это успешная аутентификация. Я перенаправил пользователя на новую страницу, используя: header («Location: locahost/redirect.php»); в моем php-скрипте.Переадресация страницы входа с помощью php

redirect.php простая страница, которая показывает, что вы вошли в систему.

То, что я хочу спросить, что я могу просто пойти в redirect.php, набрав LOCALHOST/redirect.php в моей адресной строке , Есть ли способ, которым только пользователь, прошедший проверку подлинности, может посещать страницу ... так же, как это работает на facebook и других веб-сайтах, мы не можем войти в чей-то профиль, просто набрав URL-адрес в нашей адресной строке.

+1

Установить данные сессии и убедитесь, что он установлен. – chris85

ответ

2

Это называется URL Manipulation.

Подтвердить информацию, подобную сеансу, на странице профиля.

+ НЕ использовать заголовок ('Местоположение: ...') без выхода; после этого. Всегда выходите после перенаправления.

header("Location: locahost/redirect.php"); 
exit; 

В противном случае он загрузит содержимое страницы и перенаправляет ее. Если кто-то избегает перенаправления, он может видеть содержимое страницы.

+0

Правильно ли это: $ _SESSION ["authenticated"] == true в моем сценарии страницы входа в систему при аутентификации, а затем проверка: if (isset ($ _ SESSION ["authenticated"])) в моем скрипте страницы redirect.php? –

+0

@ShivanshRai Да, это правда, но не используйте == для назначения. Вставить $ _SESSION ["authenticated"] = true; если пользователь был также проверен на странице входа. – MaHDyfo

+0

Да ... это была моя ошибка. Благодарю. –

0

Вы можете сделать PHP код внутри страницы redirect.php и сделать условный оператор:

  1. Если пользователь вошел в систему, держать его на странице.
  2. Если пользователь не выполнил вход в систему, перенаправите его на страницу входа в систему.
0

Вы можете создать сеанс для успешной аутентификации и проверить это на странице redirect.php.

Если вы не нашли сеанс на этой странице, то перенаправите пользователя на страницу входа.

Таким образом, вы можете ограничить прямой доступ к странице redirect.php

Благодарности

1

Ну, вы можете добавить создание Cookie, если пользователь был успешно зарегистрирован. (и, возможно, установить значение для хэша md5 даты, имени пользователя и пароля, например, и также записать это в вашу базу данных, чтобы вы могли позже проверить кого-нибудь, «обманули» это Cookie или нет)

Затем на вашем redict.php, вам просто нужно посмотреть, существует ли этот файл cookie (и, возможно, проверить значение с вашей базой данных?).

Также, если вы установили значение срока действия cookie, вы можете контролировать, если пользователь должен войти в систему только в этом сеансе или, например, целый месяц.

Я сожалею, что не сделал этого раньше, но, возможно, я мог бы помочь вам с этой идеей

+0

Спасибо. Но если браузер пользователя не разрешает куки-файлы, означает ли это, что он не может быть перенаправлен на redirect.php при успешной аутентификации? –

+1

Добро пожаловать. Да, я так думаю, но, возможно, вы можете добавить сообщение «Пожалуйста, разрешите этому сайту иметь куки включено», если вы можете проверить, отключены ли файлы cookie или нет действительного файла cookie. – Simon

+0

. Вы можете проверить, включены ли файлы cookie: http: // stackoverflow.com/questions/6663859/check-if-cookies-are-enabled или вы можете добавить в свой "Пожалуйста, войдите в систему, чтобы просмотреть этот контент" -message "Пожалуйста, убедитесь, что у вас есть файлы cookie – Simon

0

Вы должны добавить эту функцию для перенаправления.PHP

function logged_in(){ 
return (isset($_SESSION['user_id'])) ? true :false; 
} 

Затем добавьте этот

if (logged_in()===false){ 
header('Location: whateverpageyouwant.php'); 
exit(); 
} 
Смежные вопросы