最近两天我一直遇到这个问题。我的本地主机上有两个文件。 http://localhost/project/sign-in.php和 http://localhost/project/form-handle/index.php
当用户登陆登录页面时,会创建一个会话变量
<?php
ob_start();
session_start();
$token = strtoupper(uniqid());
$_SESSION['token-string'] = $token;
然后我将会话值放在一个隐藏字段中
<input type='hidden' name='token-string' value='<?php echo $token; ?>'>
到目前为止,太好了。但是,当我将表单值发送到http://localhost/project/form-handle/index.php时 并返回令牌字符串会话的值,该值与隐藏字段中的值不同。我正在使用jquery ajax发送请求。 这是我在表单处理页面中检查它的方法:
<?php
ob_start();
session_start();
if(isset($_SESSION['token-string'])){
$token = $_SESSION['token-string'];
echo $token;
}
?>
返回的值完全不同!同样重要的是要知道返回的错误值是由函数
生成的字符串strtoupper(uniqid());
我在这里做错什么了吗? 这是提交表单的jQuery
$('#service-login').click(function (evt) {
evt.preventDefault();
var form = $('#Ads-Login');
var data = form.serialize();
var url = 'form-handle/index.php';
var method = form.attr('method');
$.ajax({
type: method,
url: url,
data: data,
success: function (response) {
alert(response);
},
error: function () {
}
})
});
html表单在这里
<form action="" method="post" id="Ads-Login">
<div class="form-group">
<input type="email" name="email" id="" class="form-control" placeholder="Email Address">
</div>
<div class="form-group">
<input type="hidden" name="token-string" value="<?php echo $token; ?>">
<input type="password" name="Password" id="" class="form-control" placeholder="Account Password">
<a class="btn btn-white dark-grey-text font-bold ml-0" href="" id="service-login"><i class="fa fa-play mr-1"></i> Login</a>
</div>
</form>