【问题标题】:PHP - show user id in urlPHP - 在 url 中显示用户 ID
【发布时间】:2016-12-02 08:23:54
【问题描述】:

我希望能够在 url 中显示用户 ID,例如:profile.php?user=1, 2 etc.

我一直在到处搜索,但我无法让它工作。

profile.php 代码:

<?php
ob_start();
session_start();
require_once 'dbconnect.php';


 // if session is not set this will redirect to login page
 if( !isset($_SESSION['user']) ) {
 header("Location: index.php");
 exit;
 }
 // select loggedin users detail
 $res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
 $userRow=mysql_fetch_array($res);
 $id = $_GET['userId'];

?>

PHP 代码:

<?php
ob_start();
session_start();
 require_once 'dbconnect.php';

 $id = (isset($_GET['id'])) ? $_GET['id'] : $_SESSION['id'];
 $query = "SELECT * FROM users WHERE userId = $id";
 // if session is not set this will redirect to login page
 if( !isset($_SESSION['user']) ) {
 header("Location:profile.php?id=" . $_SESSION['user']);
 exit;
 }
// select loggedin users detail
 $res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
 $userRow=mysql_fetch_array($res);
 $id = $_GET['userId'];
?>


<?php echo $userRow['userId'];?>

我在那里使用最后一个命令链接到我自己的个人资料,但我想知道如何查看其他用户的个人资料。

【问题讨论】:

  • $_GET 将读取参数,而不是把它放在那里。您必须手动将其放在那里,这意味着当您在 html 代码中执行 href 时,您应该执行href="domain.com/profile.php?user=$variable" 之类的操作。对于$variable,您应该从 SQL 中读取值。
  • $id = $_GET['userId'];用于获取 GET 参数而不是设置它
  • 你想在 Location: index.php 中添加 $id 就像 Location: index.php?uid=$id;
  • 我有一个问题,为了安全起见,显示 URL 是最佳做法还是好的?

标签: php session profile userid


【解决方案1】:

我相信你在成功登录时设置了 $_SESSION['user'],然后你使用标题将用户引导到 profile.php 页面,你现在需要做的是你需要改变你的标题看起来像:

<?php


header("Location:profile.php?id=" . $_SESSION['user']);

?>

这将引导用户访问 profile.php?use=1 如果 id 为 1,那么当您使用锚点从仪表板链接回 profile.php 时,它必须如下所示:

<a href="profile.php?id=<?php echo $_SESSION['user'];?>">profile</a>

注意:为了您自己的利益,请勿使用 mysql_ 该功能已贬值 并从 php 7 中删除。改用 mysqli,

然后,为了您自己的数据安全,请使用准备好的语句,使用 mysqli 或 pdo

【讨论】:

  • 这可以在 url 中获取用户 ID,但是有没有办法通过更改 url 中的数字来查看其他配置文件?从 id=2 到 id=1 f.eks
  • 这适用于当前登录的用户,如果您以其他用户的身份查看其他用户的个人资料,比如说管理员,那么您将 &lt;a href="profile.php?id=&lt;?php echo $row['userid'];?&gt;"&gt;profile&lt;/a&gt; 我将编辑我的答案以获取更多信息
【解决方案2】:

所以基本上你想在 url 中显示 id 或者想从 url 传递 id

如果你想使用 url 传递 id 比:

使用

<a href="profile.php?user=<?php echo $id; ?>">

而您无法使用 $_GET[user]; 获取该数据

所以请说明你想要什么。?

【讨论】:

    【解决方案3】:

    我会这样做:

     if( !isset($_SESSION['user']) ) {
       header("Location: index.php");
       exit;
     }
     elseif ( isset($_SESSION['user'] && !$_GET['user']){
       header("Location: profile.php?user=" . $_SESSION['user']);
     }
     else{
       // select loggedin users detail
       $res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
       $userRow=mysql_fetch_array($res);
       $id = $_GET['userId'];
     }
    

    【讨论】:

      【解决方案4】:

      如果您使用表单,此代码将向 url 显示用户 ID:

      <form="profile.php?=user<?php echo $id; ?>"> 
      

      以防万一您想在其他页面上传递它以便您可以在此处使用它的代码:

      if (isset($_POST['nameofsubmitbutton']))
      {
      
      $Sample = $_POST['nameoffield'];
      header("Location: nextpage.php?id=$Sample");
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-14
        相关资源
        最近更新 更多