我试图从我目前在我网站上使用的文件管理器修改登录脚本。
目前,当登录尝试失败时(错误的密码,空白字段等),错误消息存储在$errors
变量中,并且在脚本的末尾,一个函数将包含一个file.php以$errors
作为参数,因此错误消息可以是回声' d。
我尝试做的失败是用header()+ $ errors替换这个include +参数($ errors)。
我一直在处理这个问题,但到目前为止我还没有发现任何对我有用的东西,我需要一些帮助:/
以下是将错误消息存储在$ errors中并包含file.php的登录脚本的一部分:
if(!isset($_SESSION['simple_auth']['username']) || isset($_GET["login"])) {
session_destroy();
session_start();
if(isset($_POST["submit"])) {
$user = gg::getUser($_POST['username']);
if (isset($user['permissions']) && !strstr($user['permissions'], 'r')
|| ($user['username'] == 'guest' && ggconf::get('allow_guests') == false)){
$errors = "Access Forbidden";
gg::writeLog('auth bad - not activated');
}
if (!isset($_POST['username']) || !isset($_POST['password']) || $_POST['username'] == '' || $_POST['password'] == ''){
$errors = "Enter username and password.";
gg::writeLog('auth bad - blank fields');
}
if (isset($user['akey']) && $user['akey'] != '' && strpos($user['akey'], 'otp-') === false){
$errors = "Please open your email and click on the link to proceed.";
gg::writeLog('auth bad - not activated');
}
if(!$errors && $user['username'] == $_POST['username'] && gg::checkPassword($_POST['password'], $user['password'])){
$this->loginUser($user);
}
if(!$errors){
$errors = "Wrong username or password.";
gg::writeLog('auth bad - wrong username or password');
sleep(1);
}
}
if (!isset($_GET["login"]) && ggconf::get('allow_guests') == true){
$user = gg::getUser('guest');
if($user){
$this->loginUser($user);
}
// reload
header('Location: '.ggconf::get('base_url'));
die;
}
gg::display("login.php", array('errors' => $errors));
exit;
}
正如您在此代码末尾看到的那样,gg :: display函数将包含文件及其参数,函数gg :: display如下:
/* DISPLAY VIEWS CONTROLLER */
public static function display($view, $params = null){
require_once ggconf::get('base_path').$view;
}
最后,这里是file.php中的代码,它将显示错误:
<?php if (isset($params['errors'])):?>
<div class=>
<?php echo $params['errors'];?>
</div>
<?php endif;?>
如何使用header()而不是脚本中当前使用的require_once来获取变量$ errors?
我发现有很多线程处理这个问题,但没有什么对我有用,同时请注意我在php方面还不是很有经验。
无论如何,我感谢你的帮助,欢迎任何建议。
-apatik
答案 0 :(得分:1)
如果您要重定向到另一个页面,则应通过php session存储参数
session_start(); // this should be on top
$_SESSION['errors'] = $errors; // Add this after writing an error
这是视图
<?php if (isset($_SESSION['errors'])):?>
<div class=>
<?php echo $_SESSION['errors'];?>
</div>
<?php endif;?>