Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 会话变量未传递到下一个文件_Php_Session Variables - Fatal编程技术网

Php 会话变量未传递到下一个文件

Php 会话变量未传递到下一个文件,php,session-variables,Php,Session Variables,所以我在这个网站上搜索了这个问题,并尝试了一些建议,但仍然没有成功。我想这可能是我的“服务器”(在我的平板电脑上使用KSWEB,现在没有电脑),所以我创建了两个简单的文件,在两者之间共享一个会话变量,效果很好。我不知道为什么这对这两个人不起作用。我正在尝试创建一个登录页面(我知道这是一个不安全的页面)。error函数过去是有效的(这就是我的原因),但现在不行了。文件如下。我只包括admin.php的顶部部分,因为我已经注释掉了其余部分。这真的不要紧。现在,如果您提交表单时没有在管理员提示符中输入

所以我在这个网站上搜索了这个问题,并尝试了一些建议,但仍然没有成功。我想这可能是我的“服务器”(在我的平板电脑上使用KSWEB,现在没有电脑),所以我创建了两个简单的文件,在两者之间共享一个会话变量,效果很好。我不知道为什么这对这两个人不起作用。我正在尝试创建一个登录页面(我知道这是一个不安全的页面)。error函数过去是有效的(这就是我的原因),但现在不行了。文件如下。我只包括admin.php的顶部部分,因为我已经注释掉了其余部分。这真的不要紧。现在,如果您提交表单时没有在管理员提示符中输入任何内容,则会在星号旁边显示一个错误,表示“需要填写管理员”。尽管我尽了最大的努力,但这已经不起作用了,我完全不明白为什么

Login.php

<?php 
session_start();
?>

<html>
<head>
  <style>
  .error {color: #FF0000;}
  </style>

  <script>
  function submitForm()
  {
  document.adminform.submit();
  }
  </script>
</head>

<?php echo $_SESSION["adminErr"];?>

<h2>Administrator login page</h2>
<form method="post" action="admin.php" name="adminform">
  Admin: <input type="text" name="admin" style="position:absolute; left:100px">
  <span class="error" style="position:absolute; left:285px">*<?php echo $_SESSION["adminErr"];?></span>
  <br><br>
  Password: <input type="password" name="password" style="position:absolute; left:100px">
  <span class="error" style="position:absolute; left:285px">*<?php echo $_SESSION["passwordErr"];?></span>
  <br><br>
  <button onclick="submitForm()">Submit</button>
</form>

<br><br><br>
<p><?php echo $_SESSION["flogin"];?></p>

</html>

<?php
session_destroy();
?>

.错误{color:#FF0000;}
函数submitForm()
{
document.adminform.submit();
}
管理员登录页
管理员:
*


密码: *

提交


Admin.php

<?php

session_start();

if ($_SERVER["REQUEST_METHOD"] == POST)
{
  if (empty($_POST["admin"])) // Check to make sure Admin field is filled out
    {
    $_SESSION["adminErr"] = "Admin field must filled"; // Set error if not filled
    header("location:login.php"); // Return to login page
    }
}
?>

而不是

<button onclick="submitForm()">Submit</button>

不要在文件末尾销毁会话

</html>

<?php
session_destroy();
?>

你也应该把
退出标题('Location:…')后的code>


发送标头时,浏览器会识别更改位置,但脚本不会结束。事实上,浏览器甚至不必遵循标题,它也可以继续使用脚本。您必须停止脚本,因为标题不会退出脚本。

一个安全方面是始终(只是习惯于始终这样做)使用
exit
after
header('Location:login.php')<?php echo isset($_SESSION["adminErr"])? $_SESSION["adminErr"]: "not set" ;?>
var_dump($_POST);
var_dump($_POST["admin"]);
var_dump($_SESSION);
var_dump($_SESSION["adminErr"]);
</html>

<?php
session_destroy();
?>