【问题标题】:PHP form: Call to undefined function: str_ireplace()PHP 形式:调用未定义函数:str_ireplace()
【发布时间】:2013-12-03 19:45:22
【问题描述】:

我的 php 表单有问题,在您填写表单并单击提交按钮后,您收到一个错误

---> 致命错误:调用未定义函数:str_ireplace()

我不知道它发生了什么:(非常感谢帮助

这是部分代码:

<?php

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

    // Set email variables
    $email_to = 'office@victum.sk';
    $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]+@([-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));
   }

     ?>

【问题讨论】:

标签: php forms undefined fatal-error


【解决方案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);
}

确实,唯一需要更改的是用正斜杠将要删除的每个值括起来。

【讨论】:

  • Joshua Burns 非常感谢你!
  • 很高兴我能帮上忙。 :)
猜你喜欢
  • 2015-09-21
  • 2017-07-20
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 2013-05-19
  • 2012-04-05
相关资源
最近更新 更多