在将信息从一个页面移动到另一个页面时,有没有办法保护PHP中链接中携带的变量?因此出于安全目的,护照号码不会以原始形式显示在地址栏上。
<a href=\"edit_employee.php?$employee[passport_number]\">" . $row['first_name'];>
答案 0 :(得分:2)
这个问题的简单答案是,通过在您公开的URL中放置一条“敏感”信息(对于在使用该网站时看到该URL的任何人)。有许多方法可以通过编码来隐藏URL中的数据,但它们并不真正保护数据。
唯一的选择,如果你想在URL中,左边是使用双向加密方案加密信息。这是CPU密集型的,可能不是必需的。
正如deceze和Alex Coles建议的那样,解决这个问题的一种方法是为每个员工分配一个独特的随机ID号码,然后使用这个号码从数据库中提取敏感信息,防止它被放入URL。鉴于您需要搜索(根据您的评论),此解决方案似乎是最合适的,请考虑此示例:
员工姓名:John Doe
Passport#:123456789
员工ID:2899
在编写搜索代码时,只需返回如下链接:
<a href=\"edit_employee.php?$employee[employee_id]\">" . $row['first_name'];>
然后在edit_employee.php页面上,只需使用ID号从数据库中提取员工信息。
希望这有帮助。
答案 1 :(得分:1)
您可以将员工护照号码存储在会话中,但最好为员工使用唯一ID,而不是通过护照号码引用它们。
答案 2 :(得分:1)
使用 urlencode ()
<?php
$link = 'edit_employee.php?passport_number=' . urlencode($employee[passport_number]);
echo "<a href=\"$link\">test</a>";
- 编辑 -
如果您不希望它显示在地址栏上,请使用$ _COOKIE或$ _SESSION
<?php
// a.php
setcookie('number', $employee[passport_number]);
// or $_SESSION['number'] = $employee[passport_number];
<?php
//b.php
echo $_COOKIE['number'];
// or $_SESSION['number']
答案 3 :(得分:0)
从URL获取变量时,您可以在网址中指定变量的类型,例如$passport_number=(int)$_GET['passport_number'];