意料之外。如何解决这个问题。我的会话无法在 Hostgator 服务器上运行。但在其他服务器上它工作正常。
这是代码示例。
<form action="/payment-select/" method="post">
<select name="payment" onchange="this.form.submit()">
<option value=""<?php if(empty($_SESSION['payment'])) { echo ' selected="selected"'; } ?>><?php echo $lang_please_select; ?></option>
<?php
$sp = 'SELECT * FROM payment';
$qp = $db->rq($sp);
while($payment = $db->fetch($qp)) {
?>
<option value="<?php echo $payment['bank']; ?>"<?php if($_SESSION['payment'] == $payment['bank']) { echo ' selected="selected"'; } ?>><?php echo $payment['bank']; ?></option>
<?php } ?>
</select>
</form>
The /payment-select/
include_once('includes/connection.php'); // session_start() here
include_once('includes/formatting.php');
$_SESSION['payment'] = strip_html_tags($_POST['payment']);
header("location:/payment/");
exit();
Update
- 所有必需的页面都有
session_start()
在顶端。
- 我将脚本安装到
server A
工作正常。然后server B
好吧..但是hostgator
使用相同的 phpinfo$_SESSION['payment']
标题重定向到后不会保存/payment/
page.
我不共享服务器之间的会话。就像我在服务器A上安装wordpress,服务器B正常,服务器C有问题。 (举例说明情况)
会话不在服务器之间共享。如果您将一台服务器上具有会话的用户传递到另一台服务器上的页面(您希望在其中保留会话),您将需要开发一种将其移交的方法。最好带有令牌并加密序列化$_SESSION
然后可以对其进行身份验证并加载。
Host 1
$s = serialize($_SESSION);
$enc = encrypt($s); // However you want to encrypt it, I recommend it.
$token = gen_token(); // Again, find a good way to generate a secure token;
Host 2
$token = $_POST['token'];
if(is_valid($token))
{
// Load the session (wrapped in a function, basically loop through the
// array and load the respective values.
load_session(unserialize(decrypt($_POST['enc'])));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)