我正在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和网上进行了搜索,以找到解释,但无法进行。因此,我把这里作为最后的机会。谢谢。