#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