我想在用户点击网址时将ID从一个页面传递到另一个页面。可以存在多个url,每个url对应于单独的id。根据点击的网址,我想传递相应的ID和动作。目前我正在使用以下方法:
<a href="Process.php?action=del&id='.$id.'">
然而,url中都显示了action和id。有没有办法在URL中隐藏这些信息而不通过url传递? 此外,如果我使用隐藏字段传递它们,可以使用浏览器开发工具访问它们。我想让它们安全,因此根本无法阅读或修改它们。 我想隐藏这个用于安全目的,所以没有任何用户可以看到这个
答案 0 :(得分:3)
仅在HTML中,您无法通过$_GET
传递“隐藏”变量。
如果您确实想在用户点击链接时隐藏某些变量,则可以使用带有自动提交表单的Javascript来使用$_POST
变量。
实施例
<form method="POST" action="yourpage.php" id="yourform" style="display:none;">
<input type="hidden" name="hiddenfield" value="__" />
</form>
<a href="" onclick="document.getElementById('yourform').submit();return false;" />
现在,在yourpage.php
中,您将能够获得$_POST['hiddenfield']
值。
修改
我认为无法真正隐藏开发工具中的值。顺便说一下,你可以使用会话,它会更“安全”..
示例:
// page1.php
session_start();
$_SESSION['yourname'] = 'yourvalue';
// page2.php
session_start();
$_SESSION['yourname']; // Contains 'yourvalue'
答案 1 :(得分:0)
隐藏ID(如果你的意思是安全性)的最好方法是加密它。您应该使用MCRYPT函数来加密ID。您可以在一个字符串中加密 ID 和 ACTION ,只需将此字符串传递给网址,然后当您想要使用它时,您可以解密参数并将其拆分。当您在htaccess中将其与 MOD_REWRITE 连接时,您可以获得以下网址:
<a href="Process,Some title of yourpage,í,eHGxC•z»@”“§``"> to make it more "pretty" you can use base64 on this string.
或使用base64,mcrypt和mod_rewrite
<a href="Process,SWRlYW">
解密字符串你应该使用 base64_decode(), mcrypt_decrypt()
答案 2 :(得分:-1)
您可以使用base64(如果安全性确实是一个大问题)。在将其传递给URL之前, 你可以先编码,然后在接收端编码,你可以解码它。
检查此网址:http://www.webtoolkit.info/javascript-base64.html
编辑:
请忽略括号中的上述行。
根据以下评论,base64实际上不负责安全性。更好的方法是使用服务器端语言来加密/解密值。通过javascript使用base64不是一个好主意。谢谢Bobby。