【问题标题】:PHP MYSQL : Sending the ID from one Page to another in secure mannerPHP MYSQL:以安全的方式将 ID 从一个页面发送到另一个页面
【发布时间】:2019-08-29 13:36:55
【问题描述】:

我想将“用户 ID”从一个页面发送到另一个页面。但条件是我想以安全的方式发送数据。我可以通过 GET 方法发送 ID。

假设我使用这种方式使用 GET 方法发送数据。

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

例如。这是我得到的网址:

http://localhost/joli/profile.php?id=23

我的 profile.php 包含以下代码:

include ('header.php') ; 

 if($_SERVER['REQUEST_METHOD'] =="GET")
{
echo "YES" ;

}
else{
echo "NO";
}
include('footer.php') ;
?>

现在的问题是,如果我直接访问 URL 。页面被加载并打印“YES”。 我想要一些限制,用户不能直接通过 URL 获取信息。 只有在从上一页按下 Read more 按钮时,此页面才应传递数据。

我希望我的问题很清楚。

【问题讨论】:

  • 一种方法是加密 ID 并像加密值一样传递它,然后在目标文件上解密,以便您可以使用它。这样一来,简单的用户就很难只输入link?id=some_number。不是100%安全!值可以解密!你不能阻止用户直接访问某个 URL,但你可以让他很难猜到参数。
  • 执行此操作的安全方式是将用户 ID 存储为会话变量,然后检索它。
  • @BudimirSkrtic 你有什么例子吗?
  • 看看这个。 stackoverflow.com/questions/20014118/… Dan Green-Leipciger 的回答。我在我的一个项目中使用过它。确实根据我的需要进行了一些调整,但它会为您指明正确的方向。
  • 我突然想到你可能需要一个 SESSION

标签: php get


【解决方案1】:

试试这个

$id_profile = (int) strip_tags($_GET['id']);

    if(strtoupper($_SERVER['REQUEST_METHOD']) != 'GET')
      header('location:www.example.com'); exit();

    if (isset($id_profile) && !empty($id_profile) && $id_profile > 0) {

      var_dump($id_profile);

    }else{
      header('location:www.example.com');
      exit();
    }
    }

【讨论】:

    【解决方案2】:

    这个。是。不可能。

    对于服务器来说,无论是按下按钮还是“直接”访问都是一样的。

    【讨论】:

    • 好的,我明白了,但是有没有其他方法,比如使用 POST 方法?
    • 你可以发布,但它不会比 GET 更安全。
    • 为什么不用ajax调用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2014-06-01
    • 2012-09-17
    • 2013-01-24
    • 2014-11-08
    • 1970-01-01
    相关资源
    最近更新 更多