为php会话变量返回不同的值

时间:2018-10-24 05:38:09

标签: php jquery ajax session

最近两天我一直遇到这个问题。我的本地主机上有两个文件。 http://localhost/project/sign-in.phphttp://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>

0 个答案:

没有答案