2

我想知道如何发送 POST 参数而不在 html 源中显示我的秘密数据。

<input type="hidden" name="url" value="$secretdata">

$secrerdata必须发送,$_POST["url"]但我想在服务器端发送。

4

2 回答 2

3

除非您从不让数据到达客户端,否则这是不可能的。否则,“秘密”数据将始终对用户可见 - 通过拦截传输的数据或查看 HTML 源或查看 JS 源(如果您尝试使用 JS 隐藏它)。

您可以做的是将数据存储在$_SESSION数组中,并通过第二页上的同一数组访问它,而不是使用 POST。当然,$_POST如果某些(错误的)代码依赖于它的存在,您可以手动为其分配一个字段。

另一种选择——只有在由于某种原因不能使用会话时才应该使用——将使用用户不知道的密钥加密数据(即仅在服务器端代码中使用)。

显然,您也可以在您的 PHP 代码中发送一个 POST 请求(使用curl) - 但是该请求并非来自用户的 IP,并且取决于您想要执行的操作,这可能是一个问题。

于 2013-01-26T14:11:44.317 回答
2

我认为你真正需要的是一个会话。在那里,您可以存储仅由服务器处理并与特定用户关联的数据。

为了使用它,您需要session_start()在需要提供此数据的每个页面的开头放置。然后你可以使用

$_SESSION['yourkey'] = 'Something';

在此会话中存储数据。之后$_SESSION['yourkey']甚至可以在其他页面上使用它。

您可以在官方文档中找到有关会话的所有信息。

于 2013-01-26T14:12:18.893 回答