致命错误:无法重新声明之前声明的email()

时间:2016-01-20 16:24:51

标签: php html sql declare redeclare

我正在创建我的登录页面,当我加载它时,我似乎得到了这个错误说:

  

致命错误:无法在第4行的/home/a4625512/public_html/core/functions/general.php中重新声明email()(之前在/home/a4625512/public_html/core/functions/general.php:2中声明)

我的主人是000WebHost,所以我不知道它是否与它们有关, 我到处搜索它。

general.php代码:

function email($to, $subject, $body) {
    mail($to, $subject, $body, 'From: hello@points4u.com');
} 

登录代码:

include 'core/init.php';

if(empty($_POST) === false){
    $username = $_POST['username'];
    $password = $_POST['password'];
    if(empty($username) === true || empty($password) === true){
        $errors[] = 'You need to enter a username and password.';
    }else if(user_exists($username) === false){
        $errors[] = 'We cant find that username. Have you registered?';
    }else if(user_active($username) === false){
        $errors[] = 'You have not activated your account!';
    }else{
        $login = login($username, $password);
        if($login === false){
            $errors[] = 'That username/password is incorrect.';
        }else{
            $_SESSION['user_id'] = $login;
           header('location: index.php');
            exit();
        }
    }
    print_r($errors);
}

                                 

1 个答案:

答案 0 :(得分:1)

所以澄清我评论的内容:

您应该关注的错误的初始部分是:Fatal error: Cannot redeclare email()

此错误告诉您,您的函数email()之前已在其他地方声明,如果您查看错误的其余部分,它会告诉您应该从哪里开始查看:

  

/public_html/core/functions/general.php:2

     第4行的

/public_html/core/functions/general.php

所以接下来的步骤应该是转到这些文件并找出之前声明函数名称的原因。

一些解决方案:

email()功能的名称更改为以前未使用过的功能。即sendEmail()。这是一个快速修复,但是真的应该考虑一下你之前声明这个函数的原因,以及你是否可以使用那个函数而不是它做同样的事情。

您可以利用命名空间来区分电子邮件功能,方法是将:namepace Example;放在您文件的顶部,尽管这样做只需要一次性解决问题就有点笨拙了我不推荐它。

或者你可以(而且应该)看看你之前宣布它的原因并决定从哪里获得最佳选择。

  • 您可以使用该功能吗?
  • 该功能未被使用?你能把它删掉吗?

你可以做的一堆东西。总结一下,问题是你有两个具有完全相同名称的函数,所以当你尝试使用它们时,PHP不知道你想使用哪个函数并抛出错误。