2016-01-20 91 views
-2

宣佈我創造我的登錄頁面,當我裝起來我似乎得到這個錯誤說:致命錯誤:不能重新聲明電子郵件()之前在

Fatal error: Cannot redeclare email() (previously declared in /home/a4625512/public_html/core/functions/general.php:2) in /home/a4625512/public_html/core/functions/general.php on line 4

我的主人是000webhost的,所以我不知道它是否與他們有關, 和我在網上搜索到處都是。

general.php代碼:

function email($to, $subject, $body) { 
    mail($to, $subject, $body, 'From: [email protected]'); 
} 

登錄代碼:

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); 
} 

+0

錯誤消息說明了這一切。你不能重新聲明... –

+0

我不知道如何解決這個問題 –

+0

有幾個解決方案;你可以改變函數的名稱,或者使用命名空間來停止衝突,或者因爲'email'沒有被保留,所以你應該能夠使用它,你可以追查到函數email()已經被聲明的地方(提示:'核心/功能/一般。php:2'),如果沒有使用,請將其刪除 – Mikey

回答

1

所以要澄清我說:

你應該尋找在錯誤的開始部分是:Fatal error: Cannot redeclare email()

此錯誤是告訴你,你的函數email()之前已宣佈的其他地方,如果你看它是告訴你錯誤的其餘部分正是你應該開始尋找:

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

/public_html/core/functions/general.php on line 4

所以,你的下一步應該是去這些文件,並找出原因,你聲明的函數名稱之前。

一些解決方案:

更改先前沒有被使用的email()功能的東西的名稱。即sendEmail()。這是一個快速的解決方案,但是真的應該研究爲什麼你之前聲明瞭這個函數,以及是否可以使用這個函數,而不是它是否執行相同的操作。

你可以利用命名空間來區分電子郵件功能和你的其他人,方法是在你的文件的頂部添加如下內容:namepace Example;儘管這樣做只是一個解決問題的方法,但有點不合理, t推薦它。

或者你可以(也應該)看看你之前爲什麼宣佈它,並決定從那裏最好的選擇是什麼。

  • 您可以使用該功能嗎?
  • 該功能沒有被使用嗎?你能刪除它嗎?

一堆東西,你可以做的真的。總而言之,問題在於你有兩個名字完全相同的函數,所以當你嘗試使用它們時,PHP並不知道你想使用哪個函數並拋出錯誤。

+0

謝謝你的幫助 –

相關問題