Php 为没有数据库的窗体创建返回链接

Php 为没有数据库的窗体创建返回链接,php,session,encryption,Php,Session,Encryption,大家好,新年快乐。 我正在构建一个表单,它不允许附加数据库。这很好,因为我正在使用会话存储计算数字等所需的信息 我的问题是当用户希望返回表单时。我需要能够将表单数据存储在链接中,然后加载回用户会话中,而不必在URL中看到表单数据 我尝试过获取会话数据,然后使用openssl加密/解密来实现这一点,得到的是空白响应,假设这与URL字符有关?我也试过MCRYPT,现在有了一些奇怪的角色 代码($string始终是包含表单信息的json编码数组): 麦克里普特 $key = 'the password

大家好,新年快乐。 我正在构建一个表单,它不允许附加数据库。这很好,因为我正在使用会话存储计算数字等所需的信息

我的问题是当用户希望返回表单时。我需要能够将表单数据存储在链接中,然后加载回用户会话中,而不必在URL中看到表单数据

我尝试过获取会话数据,然后使用openssl加密/解密来实现这一点,得到的是空白响应,假设这与URL字符有关?我也试过MCRYPT,现在有了一些奇怪的角色

代码($string始终是包含表单信息的json编码数组):

麦克里普特

$key = 'the password to work with';
$linkdata = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
$key = 'the password to work with';
$decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($return_data), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
$_SESSION['hotel'] = $decrypted;
开放SSL版本

$method = "AES-128-ECB";
$password = "the password to work with";
$linkdata = openssl_encrypt($string, $method, $password);
对于解密,我执行($return\u data始终是包含编码数据的$\u GET):

麦克里普特

$key = 'the password to work with';
$linkdata = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
$key = 'the password to work with';
$decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($return_data), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
$_SESSION['hotel'] = $decrypted;
OpenSSL

$method = "AES-128-ECB";
$password = "the password to work with";
$linkdata = openssl_decrypt($return_data, $method, $password);
$_SESSION['hotel'] = $linkdata;

非常感谢大家的帮助。

尽管缺少代码,但所有内容都指向您使用
url\u decode
$\u进行解密之前获取数据


$\u GET
变量已被url解码,您不应该再次应用该函数,否则您可能(显然是)弄乱数据

不允许有一个数据库连接到它-这是一个非常奇怪的要求-我使用会话存储信息-所以你有一个数据库,它只是不是一个关系数据库。你应该仔细检查你的要求。是的,对不起。不允许拥有数据库,我的意思是我不能永久存储数据。表单完成后,数据将被发布到我们的web服务中,在web服务中对其进行处理,并根据信息创建一个系统,但这只有在完成整个表单时才会发生。所以我需要一种方法,将会话数据转换为url,然后在某个地方调用session_start()?是的,这些都在一个php文件中,我用于所有保存/调用操作,会话开始在页面顶部,在您不需要url解码获取变量之后。你不应该这么做。