Переменные в URL

Доброе утро,

Я создаю сайт для клиента, и я столкнулся с огромной проблемой. Я разрешаю открытый поиск, где пользователь может выбрать поле поиска из выпадающего списка, а затем ввести значение поиска в поле ввода. SQL-запрос выполняется и отправляет результаты повторителей. Незарегистрированный пользователь может затем выбрать просмотр информации об этом конкретном пользователе, нажав на просмотр. Теперь, очевидно, нажав на вид (ссылку), они перенаправляются на другую страницу с помощью php.

> <td><a href='http://localhost/mygiftsite/pub_list_view.php?user=<?php echo $user_id;?>'>View</a></td>

Это производит следующий URL: http://localhost/mygiftsite/pub_list_view.php?user=1, Затем на этой странице отображаются все списки, которые публикуются этим конкретным зарегистрированным участником. Незарегистрированный пользователь может затем просмотреть эти списки, нажав на любое из полей, и он перенаправляет на http://localhost/mygiftsite/pub_item_view.php?list=9,

Моя проблема в том, что пользователь может просто изменить значение переменной / индекса списка в URL, чтобы просмотреть списки для других пользователей и списки с настройкой конфиденциальности private, которая не должна быть разрешена. Просто чтобы уточнить, в списке есть поле конфиденциальности, а не пользователь. Зарегистрированный пользователь решает либо сохранить список закрытым, либо сделать список общедоступным. Публичные списки должны быть доступны через поиск членов, а закрытый список не должен отображаться. Я запретил пользователям доступ к страницам без входа в систему с помощью следующего кода:

<?php
session_start();
if(!isset($_SESSION['userid'])){
header("location: http://localhost/mygiftsite/login.php");
}
?>

Но я хочу разрешить незарегистрированным пользователям искать и просматривать публичные списки. Пожалуйста, вы можете помочь мне решить эту проблему.

  1. Можно ли «спрятать» переменную, чтобы значение не могло быть изменено?
  2. Как я могу помешать пользователям просто изменить значение переменной списка, просто нажав на URL
  3. Если они меняют значение, просто меняя URL-адрес, как мне защитить список моих пользователей, если конфиденциальность должна быть установлена ​​как конфиденциальная?
  4. Я не хочу использовать метод .htaccess, так как вы все еще можете просто изменить значение параметра.

Моя главная проблема заключается в том, что параметр можно просто изменить в адресной строке. Как я могу предотвратить это?

0

Решение

Вы должны проверить каждую личную страницу, что пользователь, загружающий ее, является зарегистрированным пользователем.
Пример:

//keep logged user. Store in session during sign-in
$loggedUserId = $_SESSION['loggedUserId'];

//from URL GET parameter
$otherUserId = $_GET['userid'];
$listId = $_GET['list'];

if($loggedUserId==$otherUserId)
//do something, allow access
else {
//retrieve the list record based on $listId, get $isPrivate field

//do something else, don't allow access
if($isPrivate == true )
header("location: http://localhost/mygiftsite/login.php");
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]