2013-12-03 32 views
1

我有一個問題,我的PHP的形式,你填寫後的表格,然後點擊提交按鈕您收到一個錯誤PHP形式:呼籲未定義功能:str_ireplace()

--->致命錯誤:調用未定義功能:str_ireplace()

我不知道是怎麼回事,它:(幫助將多不勝感激

這是代碼的一部分:

<?php 

    $headers = 'Content-type: text/html; charset=UTF-8' . "\r\n" . 

    // Set email variables 
    $email_to = '[email protected]'; 
    $email_subject = 'Form submission'; 

    // Set required fields 
    $required_fields = array('fullname','firma','telefon','email','comment'); 

    // set error messages 
    $error_messages = array(
    'fullname' => 'Prosím zadajte krstné meno.', 
    'firma' => 'Prosím zadajte názov firmy.', 
    'telefon' => 'Prosím zadajte kontakt.', 
    'email' => 'Prosím zadajte správnu formu email adresy.', 
    'comment' => 'Prosím zadajte poznámku pre pokračovanie.' 
    ); 

    // Set form status 
    $form_complete = FALSE; 

    // configure validation array 
    $validation = array(); 

    // check form submittal 
    if(!empty($_POST)) { 
    // Sanitise POST array 
    foreach($_POST as $key => $value) $_POST[$key] =             remove_email_injection(trim($value)); 

    // Loop into required fields and make sure they match our needs 
    foreach($required_fields as $field) {  
     // the field has been submitted? 
     if(!array_key_exists($field, $_POST)) array_push($validation, $field); 

     // check there is information in the field? 
     if($_POST[$field] == '') array_push($validation, $field); 

     // validate the email address supplied 
     if($field == 'email') if(!validate_email_address($_POST[$field]))  array_push($validation, $field); 
    } 

    // basic validation result 
    if(count($validation) == 0) { 
     // Prepare our content string 
     $email_content = 'New Website Comment: ' . "\n\n"; 

     // simple email content 
     foreach($_POST as $key => $value) { 
      if($key != 'submit') $email_content .= htmlspecialchars($key) . ': ' . htmlspecialchars($value) . "<br>\n"; 
} 

     // if validation passed ok then send the email 
     mail($email_to, $email_subject, $email_content, $headers); 

     // Update form switch 
     $form_complete = TRUE; 
    } 
} 

     function validate_email_address($email = FALSE) { 
    return (preg_match('/^[^@\s][email protected]([-a-z0-9]+\.)+[a-z]{2,}$/i', $email))? TRUE : FALSE; 
} 

     function remove_email_injection($field = FALSE) { 
     return (str_ireplace(array("\r", "\n", "%0a", "%0d", "Content-Type:",  "bcc:","to:","cc:"), '', $field)); 
    } 

    ?> 
+0

您使用哪個PHP版本? – ComFreek

+0

我忘了 - - - >是這樣的形式 - - - >請嘗試一下,親眼看到 http://oila.sk/kontakt.php – user3062952

+0

檢查手冊上['str_ireplace'(HTTP:// php.net/str_ireplace),它支持PHP的版本。然後切換提供商。 – mario

回答

1

str_ireplace已在PHP 5中實現。如果您使用的版本大於5,這可以解釋爲什麼您嘗試調用的函數不存在。真的沒有任何其他可以解釋的理由,你會遇到這樣的錯誤。

如果你被困在PHP 3.x或4.x版本,也可以使用preg_replace代替str_ireplace,略有修改的定義:

function remove_email_injection($field = FALSE) { 
    return preg_replace(array("/\r/", "/\n/", "/%0a/", "/%0d/", "/Content-Type:/", "/bcc:/","/to:/","/cc:/"), '', $field); 
} 

真的,唯一的變化是需要圍繞每個值用正斜槓去掉。

+1

約書亞伯恩斯 非常感謝你! – user3062952

+0

很高興我能幫上忙。 :) –