-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;名前空間を利用して、ファイルの先頭に次のようなものを配置することで、電子メール機能を他のものと区別することができます。

または、以前に宣言した理由を調べて、そこから最適なオプションを決定することもできます (またそうすべきです)。

  • 代わりにその機能を使用できますか?
  • その機能は使われていませんか?削除していただけますか?

本当にできることの束。問題を要約すると、まったく同じ名前の関数が 2 つあるため、それらを使用しようとすると、PHP は使用する関数を認識できず、エラーが返されます。

于 2016-01-20T16:52:11.050 に答える