-2

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

致命错误:无法在第 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);
}

4

1 回答 1

1

因此,为了澄清我的评论:

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

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

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

/public_html/core/functions/general.php 在第 4 行

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

一些解决方案:

将您的函数名称更改为email()以前未使用过的名称。即sendEmail()。这是一个快速的解决方法,但真的应该看看为什么你之前声明了这个函数,如果它在做同样的事情,你是否可以使用那个函数。

您可以利用命名空间将电子邮件功能与其他功能区分开来,方法namepace Example;是在文件顶部放置以下内容:虽然只是为了解决问题而这样做有点笨拙,我不推荐这样做。

或者您可以(并且应该)查看您之前声明它的原因,并从那里决定最好的选择。

  • 你能改用那个功能吗?
  • 那个功能没用吗?你能把它去掉吗?

一堆你真的可以做的事情。总而言之,问题是您有两个名称完全相同的函数,因此当您尝试使用它们时,PHP 不知道您要使用哪个函数并返回错误。

于 2016-01-20T16:52:11.050 回答