Использование $ _GET для передачи идентификатора участника - PullRequest
0 голосов
/ 07 октября 2011

У меня возникла проблема при попытке создать систему входа в систему, где каждый пользователь направляется в свой собственный редактируемый профиль. Сейчас я нахожусь на этапе входа в систему и пытаюсь безопасно передать идентификатор пользователя со страницы входа на страницу его профиля, чтобы я мог отобразить информацию о его профиле.

Сейчас меня перенаправляют на «mydomain.com/index.php?test=Resource%20id%20#8» (я хочу, например, «mydomain.com/index.php?test=1111» ) после этого куска кода:

$user_id = mysql_query("SELECT `id` FROM `users` WHERE `username` = '$user' AND `active`='1'");  
header("location: profile.php?test='$user_id'");
exit();

где $ user был подвергнут санитарной обработке с использованием trim, htmlspecialchars и mysql_real_escape_string. После того, как пользователь прибудет в «profile.php», я планирую реализовать что-то подобное после того, как смогу выяснить, как правильно передать идентификатор пользователя:

$user_id=(int)$_GET['$user_id'];
mysql_real_escape_string($user_id);
if (isset($user_id)) {
   $user_id = preg_replace('#[^0-9]#i', '', $user_id); // filter everything but numbers

В коде есть что-то еще, но я думаю, что я включил всю необходимую информацию. Любые советы, мудрость, мысли и комментарии всегда очень ценятся. Большое спасибо за вашу поддержку.

Ответы [ 2 ]

2 голосов
/ 07 октября 2011

Вы не можете сразу запросить и получить результат.

Попробуйте исправить вышеуказанную часть следующим образом.

$user_id = mysql_query("SELECT `id` FROM `users` WHERE `username` = '$user' AND `active`='1'");
$user_id = mysql_result($user_id, 0, 'id');  
header("location: profile.php?test='$user_id'");
exit();
0 голосов
/ 07 октября 2011

Ваш код ужасен.

  1. isset бессмысленно, $user_id всегда установлено там.
  2. preg_replace бессмысленно - после (int) только переменные будут в переменной
  3. mysql_real_escape_string бессмысленно - после (int) не будет плохих символов

Так что замените весь этот блок одной строкой

$user_id = isset($_GET['user_id']) ? (int)$_GET['user_id'] : 0;
...