2014-05-08 141 views
0

我無法識別我的代碼中的問題。我使用的代碼來自WordPress的內容管理系統:PHP致命錯誤:調用未定義的函數esc_url()

<?php 
include_once 'includes/register.inc.php'; 
include_once 'includes/functions.php'; 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="UTF-8"> 
     <title>Secure Login: Registration Form</title> 
     <script type="text/JavaScript" src="js/sha512.js"></script> 
     <script type="text/JavaScript" src="js/forms.js"></script> 
     <link rel="stylesheet" href="styles/main.css" /> 
    </head> 
    <body> 
     <!-- Registration form to be output if the POST variables are not 
     set or if the registration script caused an error. --> 
     <h1>Register with us</h1> 
     <?php 
     if (!empty($error_msg)) { 
      echo $error_msg; 
     } 
     ?> 
     <ul> 
      <li>Usernames may contain only digits, upper and lower case letters and underscores</li> 
      <li>Emails must have a valid email format</li> 
      <li>Passwords must be at least 6 characters long</li> 
      <li>Passwords must contain 
       <ul> 
        <li>At least one upper case letter (A..Z)</li> 
        <li>At least one lower case letter (a..z)</li> 
        <li>At least one number (0..9)</li> 
       </ul> 
      </li> 
      <li>Your password and confirmation must match exactly</li> 
     </ul> 
     <form action="<?php echo esc_url($_SERVER['PHP_SELF']); ?>" 
       method="post" 
       name="registration_form"> 
      Username: <input type='text' 
       name='username' 
       id='username' /><br> 
      Email: <input type="text" name="email" id="email" /><br> 
      Password: <input type="password" 
          name="password" 
          id="password"/><br> 
      Confirm password: <input type="password" 
            name="confirmpwd" 
            id="confirmpwd" /><br> 
      <input type="button" 
        value="Register" 
        onclick="return regformhash(this.form, 
            this.form.username, 
            this.form.email, 
            this.form.password, 
            this.form.confirmpwd);" /> 
     </form> 
     <p>Return to the <a href="index.html">login page</a>.</p> 
    </body> 
</html> 

而且我收到一個錯誤:PHP的致命錯誤:調用到/var/www/html/register.php未定義功能esc_url()。此功能在這裏進行消毒從PHP_SELF服務器變量輸出:這裏是我的這個功能:

function esc_url($url) { 

    if ('' == $url) { 
     return $url; 
    } 

    $url = preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url); 

    $strip = array('%0d', '%0a', '%0D', '%0A'); 
    $url = (string) $url; 

    $count = 1; 
    while ($count) { 
     $url = str_replace($strip, '', $url, $count); 
    } 

    $url = str_replace(';//', '://', $url); 

    $url = htmlentities($url); 

    $url = str_replace('&amp;', '&#038;', $url); 
    $url = str_replace("'", '&#039;', $url); 

    if ($url[0] !== '/') { 
     // We're only interested in relative links from $_SERVER['PHP_SELF'] 
     return ''; 
    } else { 
     return $url; 
    } 
} 

我找不到在哪裏會有這兩段代碼中拋出一個錯誤。

+0

你在 – VBCPP

+0

中聲明的函數是什麼文件就像@VBCPP所建議的那樣,檢查你是否包含正確的文件,如果不是,請在包含的文件中回顯一行,看看PHP是否真的包含它。 –

回答

1

你說的功能是存在於文件

/var/www/html/register.php 

在但你包括

include_once 'includes/register.inc.php'; 

這是不正確的文件名。如果您使用過require_once,那麼您將自己發現錯誤。將include更改爲require並獲取錯誤消息。

require_once 'includes/register.inc.php'; 
require_once 'includes/functions.php'; 

編輯

好像我overread錯誤消息和register.php不應該包括的文件。但是,這個答案仍然會在這裏,不會被刪除,因爲錯誤仍然是由於同樣的問題。

如果遇到函數未定義的消息,它只是未定義。這隻意味着它既不在當前文件中,也不在任何包含的文件中。當然,這不是一個PHP核心功能。

+1

你可以清楚地看到這是輸出錯誤的文件,所以這個答案是錯誤的。 –

+0

你對這種誤解是正確的。但這仍然是答案。讓我們等待,找出 –

+0

只是有些人不回來告訴我們它是否有效:) –

相關問題