Php 无法在url(地址栏)中包含登录用户id
我试图在用户登录到类似abc.php的系统时回显url中显示的用户id?uid=5原因是,我需要在登录用户发表文章时传递登录的用户id,以便使用他们的用户id在feeds视图页面中显示他们的详细信息。我尝试了各种代码,但无法实现。当我运行下面的代码时,没有任何反应,只是停留在登录页面。请告诉我需要帮助Php 无法在url(地址栏)中包含登录用户id,php,mysql,server,Php,Mysql,Server,我试图在用户登录到类似abc.php的系统时回显url中显示的用户id?uid=5原因是,我需要在登录用户发表文章时传递登录的用户id,以便使用他们的用户id在feeds视图页面中显示他们的详细信息。我尝试了各种代码,但无法实现。当我运行下面的代码时,没有任何反应,只是停留在登录页面。请告诉我需要帮助 <?php session_start(); include_once('queryclass.php'); $error = false; if(iss
<?php
session_start();
include_once('queryclass.php');
$error = false;
if(isset($_POST['btn-login'])){
$username = trim($_POST['username']);
$username = htmlspecialchars(strip_tags($username));
$password = trim($_POST['password']);
$password = htmlspecialchars(strip_tags($password));
if(empty($username)){
$error = true;
$errorUsername = 'Please Input Username';
}
if(empty($password)){
$error = true;
$errorPassword = 'Please Input Password';
}elseif(strlen($password)< 6){
$error = true;
$errorPassword = 'Password must be at least six characters';
}
if(!$error){
$password = md5($password);
$sql = "select * from company where username='$username' ";
$result = mysqli_query($conn, $sql);
$count = mysqli_num_rows($result);
$row = mysqli_fetch_assoc($result);
if($count==1 && $row['password'] == $password){
$_SESSION['username'] = $row['username'];
function do_user_directory(){
$users = $this->load_all_user_objects();
foreach($users as $user){?>
header('location: loggedin.php?uid=<?php echo $user->id;?>');
<?php
}
}
}else{
$errorMsg = 'Invalid Username or Password';
}
}
}
?>
This is the queryclass.php
<?php
require_once('connectdb.php');
function load_user_object($user_id){
global $db;
$table = 'users';
$query = "
SELECT * FROM $table
WHERE ID = $user_id
";
$obj = $db->select($query);
if(!$obj) {
return "No user found";
}
return $obj[0];
}
function load_all_user_objects(){
global $db;
$table = 'users';
$query = "
SELECT * FROM $table
";
$obj = $db->select($query);
if(!$obj) {
return "No user found";
}
return $obj;
}
?>
在查询类中。Php查询语句使用单引号作为=“$user\u rid”,所以让我们也将该id保留在$\u会话中: 在loggedin.php中的某个地方 你喜欢:
if(!isset($_SESSION['user'])) {
header('Location: logout.php');
exit(0);
}
获取经过身份验证的用户id,如:
$user_id = $_SESSION['user']['ID'];
如果要在html中的某个地方回显用户id,只需执行以下操作:
<?php $user_id = $_SESSION['user'] ? $_SESSION['user']['ID'] : 'default'; ?>
<img src="/uploads/users/<?=$user_id?>.jpg">
这不是对您问题的回答,但请查找php sql注入漏洞。为什么不在$\u会话['uid']中保留用户id,并在不从$\u GET数组传递数据的情况下使用该数据?这是一个原型。。。我很清楚你所指出的。所以从一开始就没有太多的工作要做。我只是不明白为什么在用户登录时通过$this->load_all_user_对象检索整个users表;把他转移到某个地方?如果表将有10000行呢?嗨,这更像是使用用户id在feeds视图php页面中检索登录的用户信息……就像twitter或facebook feeds页面一样。
<?php $user_id = $_SESSION['user'] ? $_SESSION['user']['ID'] : 'default'; ?>
<img src="/uploads/users/<?=$user_id?>.jpg">