Php 除了使用$\u GET之外的选项

Php 除了使用$\u GET之外的选项,php,Php,GET是发布表单id、发布网站id或任何id的便捷方法。 然而,它是不安全的,因为它将id泄露给访问者 我是否可以使用类似于GET格式的方法,不需要提交表单,但可以同时轻松检索id sorry, i am so green at it. how to use a session ? if use get , i can define $get?id=aaa for each link,but how can i achieve it in session? 我真正想做的事情: 在我的例子中,

GET是发布表单id、发布网站id或任何id的便捷方法。 然而,它是不安全的,因为它将id泄露给访问者

我是否可以使用类似于GET格式的方法,不需要提交表单,但可以同时轻松检索id

sorry, i am so green at it. how to use a session ? if use get , i can define 
$get?id=aaa for each link,but how can i achieve it in session?
我真正想做的事情:

在我的例子中,我想开发几个表单,每个表单上都有一个id,比如formA,formB,formC


如果我使用get,我将定义
您可以用来传输用户无法修改的详细信息。

您不想使用$\u POST或$\u get。请使用$\u SESSION。

GET方法将数据放在URL中(以便查看它们的原因)。 POST方法将数据放在请求主体中,因此不会显示在地址栏中。 但是,您可以通过浏览器模块轻松找到请求正文的内容

GET和POST方法以这种方式同样安全。 然而,正如Alex所说,您可以使用php会话,但只对用户不会更改的数据有用

在您的情况下,如果您使用和id标识用户,则只需填写$\u会话['userid'](变量名称是任意的),然后当用户提交for时,您将从会话中检索用户id

编辑: 对于您的url:

http://mydomain.com?serviceid=1 call your service number one
您可以设置一个令牌系统,这意味着对于当前用户,您给他一个看似随机的散列,并允许他执行服务。 您可以在脚本开始时生成此令牌:

session_start(); // To start php session
// We check if the current user has a token
if ( isset($_SESSION['usertoken'] ) )
{
   $token = md5( 'myubbersalt' . md5(time)  ); // The token is a random string (not to random there)
   $_SESSION['usertoken'] = $token; // The server now have set an action token for the user
}
然后,当您生成页面(带有指向服务的链接)时,在url中添加令牌,如下所示:

echo 'http://mydomain.com?serviceid=1&tok=' . $_SESSION['usertoken'];
最后,当调用时,在内部检查令牌:

session_start(); // This should be added at the begining of your script
...
// We check if the usertoken match the service token
$canExecuteService = false;
if ( isset( $_GET['tok'] && isset($_SESSION['usertoken']) )
{
   if ( $_GET['tok'] == $_SESSION['usertoken'] )
   {
      $canExecuteService = true;
   }
}
因此,有一个变量告诉您是否可以执行服务。 标记LiveLength与php会话相同。加上2个不同的用户不能拥有相同的令牌(在这个简单的一代中,如果两个用户在完全相同的时间执行页面,则可以共享相同的令牌)。另外,攻击者不能伪造令牌,因为该令牌是从可变源生成的,并且是用只有您的网站知道的盐腌制的


关于

这就是它的用途。这取决于该ID需要去哪里以及您需要如何使用它。您只需要在服务器上跟踪它吗?或者您需要在客户端使用它?有很多方法可以模糊客户端的值,但是客户端的任何东西都不应该被认为是“安全的”。谢谢你的建议,我已经编辑了我的案例,请查看一下。对不起,我对它太生疏了。如何使用会话?如果在get中,我可以为每个链接定义$get?id=aaa,但是如何在会话中实现它呢?我刚刚为
$\u session
将该链接添加到文档中。如果我想创建一个有很多链接的页面,每个链接都指向同一个php,但引用id,实现不同的事情呢?谢谢,如果我想创建一个有很多链接的页面,每个链接都指向同一个php,但引用的是id,实现的是不同的东西?如果id引用的是您想要执行的操作,那么除了在url中给出它之外,您别无选择。如果让您烦恼的是任何人都可以使用url调用该服务,那么您可以实现一个令牌系统,该系统只允许具有有效令牌的人执行该服务。例如,请参阅我编辑的文章。