PHP:为什么将变量包含在请求语句中之后,变量却不可用?

时间:2018-12-14 16:31:19

标签: php variables scope request

我正在Coursera学习Php,现在我们应该做一个简单的CRUD(创建,读取,更新,删除)Web应用程序。

对于我的登录程序,我将所有错误消息“外包”到一个名为“ errors.php”的单独文件中:

<?php
$errors = array(
"email" => "Email must have an at-sign (@)",
"login" => "Email and password are required",
"pass"  =>  "Incorrect password");
?>

现在我想将其包含(请求)到我的登录例程中。如您所见,我两次提出/要求它。据我了解,第一个请求应该足以使错误-在整个登录脚本中均可用。它应该具有全球范围。是吗?

但是经过大量调试后,我发现我必须在函数“ returnOnerror”中请求它才能在该函数调用中使用。

在函数中不能访问全局变量吗?相反,我会理解...

<?php
session_start();

require("errors.php");

function returnOnerror($whaterror){
  require("errors.php");
  $_SESSION["error"] = $errors[$whaterror];
  header('location: login.php');
exit();
}

if ((isset($_POST['email'])) && (isset($_POST['pass']))){
  $salt = 'XyZzy12*_';
  $stored_hash = '1a52e17fa899cf40fb04cfc42e6352f1'; //(salted hash + php123)
  $passhash = hash('md5', $salt.$_POST['pass']);

if ((strlen($_POST['email']<1)) && (strlen($_POST['pass'])<1)) {
  returnOnerror("login");
}

if ((substr_count($_POST['email'], '@'))<1){
  returnOnerror('email');
}

if ($passhash==$stored_hash){
  $_SESSION['name'] = $_POST['email'];
  $_SESSION['login'] = "logged in";
  header('location: index.php');
exit();
}
else {
  returnOnerror("pass");
}
}
?>

顺便说一句,我在Stackexchange和网上进行了搜索,以找到解释,但无法进行。因此,我把这里作为最后的机会。谢谢。

0 个答案:

没有答案