对不起,如果标题不清楚,由于我还是这个领域的新手,我想不出更好的事情。 :)
无论如何,我的问题是这样的:我想用一个页面(让我们称之为1.php)将一些信息发送到另一个页面(让我们称之为2.php)使用它(不知道正式的名字,对不起) ):
http://localhost/X/2.php?user_id=5&user_type=2&ssn=1234567890&first_name=John&last_name=Doe
正如您所看到的,信息是纯文本的,我不喜欢。有没有一种简单的方法可以在1.php上面的问号之后加密字符串,然后让2.php(获取传递的信息)解密它?我希望它能成为现实:
http://localhost/X/2.php?user_id=rj3i15k&user_type=8109fk1JIf&ssn=6893kfj399JFk ...
对不起,如果这是一个愚蠢的问题。非常感谢提前!
答案 0 :(得分:4)
如果您不想修改信息,请使用哈希字符串进行验证。
例如:
$hash = sha1($user_id."haha".$user_type.$ssn.$first_name.$last_name);
这里的“哈哈”是一种盐。使用随机字符串,它将被使用,因此有人无法重复使用您的算法来注入假数据。
然后将此哈希值放在网址的末尾,例如
http://localhost/X/2.php?user_id=5&user_type=2&ssn=1234567890&first_name=John&last_name=Doe&hash=$hash`
当您获得此信息时,再次进行哈希,并将其与发送的哈希值进行比较:如果信息被修改,则哈希值将不匹配。
答案 1 :(得分:3)
也许你的方式错了。
考虑将数据存储在服务器端会话变量中? 或者甚至在数据库中(如果你要传递给另一台机器),那么你只需要发送数据库条目的唯一标识符。
然后page2将读取会话变量,或者再次从数据库中检索它。
基本上,保持数据服务器端,然后您不需要加密/解密。
<强>第1页强>
<?
session_start();
$_SESSION['pagedata'] = array(
'user_id'=>5,
'user_type'=>2,
'ssn'=>1234567890,
'first_name'=>'John',
'last_name'=>'Doe'
);
header('Location: page2.php');
?>
<强>第2页强>
<?
session_start();
$user_id = $_SESSION['pagedata']['user_id'];
$user_type = $_SESSION['pagedata']['user_type'];
$user_ssn = $_SESSION['pagedata']['user_ssn'];
$user_first_name = $_SESSION['pagedata']['first_name'];
$user_last_name = $_SESSION['pagedata']['last_name'];
// use variables to do stuff
?>
答案 2 :(得分:2)
它被称为GET,在2路解密时从不关联100%,但这可能对你有用Best way to use PHP to encrypt and decrypt passwords?
答案 3 :(得分:2)
你可以在一边使用base64_encode而在另一边使用bas64_decode - 只是作为一种可能性 - 但请注意,这只是为了“更好看”你想要的网址(对我来说, 这个很难看。这不是为了更安全或类似的事情来加密您的数据 - 要实现这一点,使用https并且不要通过做这些疯狂的事情来混淆您的用户。
答案 4 :(得分:1)
您应该使用$_SESSION
。