2013-12-03 2 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

Joshua Burns СПАСИБО ВАМ ОЧЕНЬ МНОГО! – user3062952

+0

рад, что я мог бы помочь. :) –

Смежные вопросы