我在尝试创建成员登录系统时遇到问题,其中每个用户都被定向到他们自己的可编辑配置文件。我现在正处于登录阶段,并试图将用户的ID从登录页面安全地传递到他们的个人资料页面,以便我可以显示他们的个人资料信息。
现在,我被重定向到'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'后,我计划在确定如何正确传递用户ID之后实现类似的内容:
$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
代码还有更多内容,但我相信我已经包含了所有相关信息。任何建议,智慧,想法和评论总是非常感激。非常感谢您的支持。
答案 0 :(得分:2)
您无法立即查询并获得结果。
尝试修复上面的部分。
$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();
答案 1 :(得分:0)
你的代码很糟糕。
isset
毫无意义,$user_id
总是设置在那里。preg_replace
毫无意义 - 在(int)
后,只有数字会变量mysql_real_escape_string
毫无意义 - 在(int)
之后将没有不良角色所以用单行替换整个块
$user_id = isset($_GET['user_id']) ? (int)$_GET['user_id'] : 0;