контактная форма не предоставляет данные

#php #forms #fat-free-framework

#php #формы #обезжиренный фреймворк

Вопрос:

У меня проблема с контактной формой без жира. Моя контактная форма ничего не делает. Например, никаких успехов или каких-либо данных об ошибках.

Моя контактная форма ОТПРАВЛЯЕТ и ПОЛУЧАЕТ маршрут:

 $f3->route('GET @contact: /contact', 'RimtayClient->GET_Contact');
$f3->route('POST @contact: /send', 'RimtayClient->contactPost');
 

Моя функция отправки контактной формы:

 function contactPost(){

        function validateInput($data) {
            $bad = array("content-type","bcc:","to:","cc:","href");
            $data = trim($data);
            $data = stripslashes($data);
            $data = htmlspecialchars($data);

            foreach ($bad as $badString) {
                if (preg_match('/('.$badString.')/i',$data)) {
                    // If it looks like someone is trying to hack
                    // into the site via the contact page, then just stop.
                    exit;
                }
            }
            return $data;
        }
        // define variables and set to empty values
        $contactNameError = $contactEmailError = $contactMessageError = "";
        $name = $email = $message = $success = "";

        if ($f3->exists('POST.name',$name)) {
            if ($name !== '') {
                $name = validateInput($name);
                if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
                    $contactNameError = "Wrong name";
                } else { // valid name
                    $f3->set('contactName',$name);
                }
            } else {
                $contactNameError = "name empty";
            }
        } else {
            $contactNameError = "name error";
        }

        if ($f3->exists('POST.email',$email)) {
            if ($email !== '') {
                $email = validateInput($email);
                if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                    $contactEmailError = "wrong email";
                } else { // valid email
                    $f3->set('contactEmail',$email);
                }
            } else {
                $contactEmailError = "email empty";
            }
        } else {
            $contactEmailError = "error email";
        }

        if ($f3->exists('POST.subject',$message)) {
            if ($message !== '') {
                $f3->set('contactMessage',$message);
            } else {
                $contactMessageError = "message tühi";
            }
        } else {
            $contactMessageError = "lambi message";
        }


        if (($contactNameError === '') amp;amp; ($contactEmailError === '') amp;amp; ($contactMessageError === '')) {
            // send the message
            $messageBody = "";
            unset($_POST['submit']);
            $messageBody = "Name: ".$name."n";
            $messageBody .= "email: ".$email."n";
            $messageBody .= "Subject: Construction - Message from " . $name."n";
            $messageBody .= $message."n";
            $messageBody = wordwrap($messageBody,70);
            
            $to = $f3->get('contactAddresses');
            $subject = 'Contact Submitted';
            if (mail($to, $subject, $messageBody)){
                $f3->set('contactSuccess',true);
            } else {
                // error sending the email to myself
            }
        } else {
            $f3->set('contactSuccess',false);
        }
        
        // Set the content source
        $this->f3->set('pageContent','contact.html');
    }
 

моя форма выглядит так:

 <form class="form" action="{{ @schemeHost.@PATH }}" method="post">
    <textarea class="textarea" name="message" placeholder="Message*">{{ @contactMessage }}</textarea>
    <div>
        <input type="text" placeholder="Name *" name="name" value="{{ @contactName }}" class="input">
        <input type="email" placeholder="Email *" name="email" value="{{ @contactEmail }}" class="input">
    </div>
    <button class="submit" type="submit" name="submit">Send</button>
</form>
 

Моя система не выдает никаких сообщений об успехах или ошибках.
И не отправляет сообщения контактной формы на электронную почту.

Я не вижу, что я там делаю не так.

Комментарии:

1. Как отображается ваш action атрибут? Просто чтобы быть уверенным.

Ответ №1:

Ваш код очень подвержен ошибкам. Например, $f3 переменная нигде не определена в вашем коде.

Как ваш код обрабатывает ошибки? Возможно, вы не видите ошибок, потому что у вас нет настройки отчетов об ошибках, и сервер молча не показывает ошибки. Я предлагаю вам проверить журнал ошибок.

Я также предлагаю использовать библиотеку проверки формы, такую как библиотека проверки CakePHP. Вам нужно будет научиться ее использовать, но в конечном итоге это сэкономит вам много времени, и ваш код станет чище.

Комментарии:

1. извините, да, это должно быть $this->f3