2014-01-03 4 views
0

У меня есть несколько форм php на моем веб-сайте, и все они отправляют электронное письмо в форме формы при отправке формы. У меня не было проблем до двух недель назад, но внезапно я только начал получать пустые письма (только метки, а не информация о пользователе), я пытался исправить проблему, но не повезло. Пожалуйста, помогите мне.php контактная форма не отправляет содержание

Моя форма:

<form id="form1" name="form1" method="post" action="../iletisimform.php"> 
<p><span class="sss_cevap">İletişim Formu</span></p> 
    <table width="100%" border="0" cellpadding="6"> 
    <tr> 
    <td width="20%" align="right" bgcolor="#EFF5F8"><label for="ad">Ad: </label></td> 
    <td width="80%" align="left" bgcolor="#EFF5F8"><input name="ad" type="text" id="ad" size="35" maxlength="50" /> 
    *</td> 
    </tr> 
     <tr> 
      <td align="right" bgcolor="#EFF5F8"><label for="soyad">Soyad:</label></td> 
      <td align="left" bgcolor="#EFF5F8"><input name="soyad" type="text" id="soyad" size="35" maxlength="50" /> 
      *</td> 
     </tr> 
     <tr> 
      <td align="right" bgcolor="#EFF5F8"><label for="firma">Firma:</label></td> 
      <td align="left" bgcolor="#EFF5F8"><input name="firma" type="text" id="firma" size="35" maxlength="70" /> 
      *</td> 
     </tr> 
     <tr> 
      <td align="right" bgcolor="#EFF5F8"><label for="telefon">Telefon:</label></td> 
      <td align="left" bgcolor="#EFF5F8"><input name="telefon" type="text" id="telefon" size="35" maxlength="12" /> 
      *</td> 
     </tr> 
     <tr> 
      <td align="right" bgcolor="#EFF5F8"><label for="email">Email:</label></td> 
      <td align="left" bgcolor="#EFF5F8"><input name="email" type="text" id="email" size="35" maxlength="70" /> 
      *</td> 
     </tr> 
     <tr> 
      <td align="right" bgcolor="#EFF5F8"><label for="mesaj">Mesaj:</label></td> 
      <td align="left" bgcolor="#EFF5F8"><textarea name="mesaj" id="mesaj" cols="35" rows="5"></textarea> 
      *</td> 
     </tr> 
     <tr> 
      <td align="right" bgcolor="#EFF5F8">&nbsp;</td> 
      <td align="left" bgcolor="#EFF5F8"><input name="promosyon" type="checkbox" id="promosyon" value="promogonder" /> 
      <label for="promosyon">Insuladd promosyonlarından haberdar olmak istiyorum...</label></td> 
     </tr> 
     <tr> 
      <td align="right" bgcolor="#EFF5F8"><label for="Temizle"></label> 
      <label for="temizle"></label> 
      <input type="reset" name="temizle" id="temizle" value="Temizle" /></td> 
      <td align="left" bgcolor="#EFF5F8"><label for="gönder"></label> 
      <input type="submit" name="gönder" id="gönder" value="Gönder" /></td> 
     </tr> 
     </table> 
      <p>* Alanları gereklidir<br /> 
    </p> 
    </form> 

Мой Сценарий:

<?php 


/* Subject and Email Variables */ 

    $emailSubject = 'Insuladd Bilgi Talebi!'; 
    $webMaster = '[email protected]'; 

/* Gathering Data Variables */ 

    $nameField = $_POST['ad']; 
    $lastnameField = $_POST['soyad']; 
    $companyField = $_POST['firma']; 
    $telephoneField = $_POST['telefon']; 
    $emailField = $_POST['email']; 
    $messageField = $_POST['mesaj']; 
    $promotionField = $_POST['promosyon']; 

    $body = <<<EOD 
<br><hr><br> 
Name: $ad <br> 
Last Name: $soyad <br> 
Company: $firma <br> 
Telephone: $telefon <br> 
Email: $email <br> 
Message: $mesaj <br> 
Promotion: $promosyon <br> 
EOD; 

    $headers = "From: $email\r\n"; 
    $headers .= "Content-type: text/html\r\n"; 
    $success = mail($webMaster, $emailSubject, $body, $headers); 

/* Results rendered as HTML */ 

    $theResults = <<<EOD 

EOD; 
echo header ("Location: http://www.insuladd.com.tr/iletisim/tesekkurler.html"); 

?> 
+0

Кто-то, возможно, бот, представляет пустые формы. Ты не делаешь ничего, чтобы это предотвратить. –

+3

Pro tip: ** Всегда ** проверять ввод пользователя. –

+0

Проверка на стороне клиента + повторная проверка на стороне сервера перед отправкой электронной почты. Добавить обработку ошибок в форму пустой, обязательные поля, правила полей и т. Д. – AnchovyLegend

ответ

1

Я не вижу ничего плохого функционально, что бы предотвратить вас от получения содержимого формы. Единственный вывод, который я могу сделать, это то, что вы, скорее всего, получаете сообщения от кого-то с пустым контентом. По всей вероятности, это от бота.

Этого можно легко предотвратить, подтвердив ввод пользователя, чтобы он не был пустым. Способ сделать что-то вдоль линии, что может быть ...

<?php 
    if (empty($_POST['ad']) || empty($_POST['soyad']) || empty($_POST['firma']) || empty($_POST['telefon']) || empty($_POST['email']) || empty($_POST['mesaj']) || empty($_POST['promosyon'])) 
    { 
     header('Location: [Replace with url to page with error message]'); 
    } 

/* Subject and Email Variables */ 

    $emailSubject = 'Insuladd Bilgi Talebi!'; 
    $webMaster = '[email protected]'; 

/* Gathering Data Variables */ 

    $nameField = $_POST['ad']; 
    $lastnameField = $_POST['soyad']; 
    $companyField = $_POST['firma']; 
    $telephoneField = $_POST['telefon']; 
    $emailField = $_POST['email']; 
    $messageField = $_POST['mesaj']; 
    $promotionField = $_POST['promosyon']; 

    $body = <<<EOD 
<br><hr><br> 
Name: $nameField <br> 
Last Name: $lastnameField <br> 
Company: $companyField <br> 
Telephone: $telephoneField <br> 
Email: $emailField <br> 
Message: $messageField <br> 
Promotion: $promotionField <br> 
EOD; 

    $headers = "From: $email\r\n"; 
    $headers .= "Content-type: text/html\r\n"; 
    $success = mail($webMaster, $emailSubject, $body, $headers); 

/* Results rendered as HTML */ 

    $theResults = <<<EOD 

EOD; 
header ("Location: http://www.insuladd.com.tr/iletisim/tesekkurler.html"); 

?> 

Есть гораздо более изящные способы предотвращения проблемы и реализации даже самых элементарных проверки, но это дает вам представление о том, что это ты должен попытаться.

+0

Привет, на самом деле я попытался отправить несколько писем сам, и я снова только получил метки формы, а не ассоциативный контент. Может ли это быть каким-то образом с версией PHP, которую использует мой хост? Я перешел между двумя версиями в cPanel, но ничего не изменилось ... Странно, что это точно такая же форма работала отлично 2 недели назад !!! –

+0

Можете ли вы напечатать содержимое $ _POST? Вы можете сделать это с помощью 'print_r ($ _ POST)' – Majii

+0

Я заменил весь PHP-скрипт на print_r ($ _ POST) и я получаю пустую страницу, когда я отправляю форму ... –

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