Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Php не отправляет данные
цитата
01/06/13 в 14:53
 VideoEditor2005
Помогите плз ламеру icon_smile.gif
Не отправляет имейл, хотя пишет что отправила. Знания php очень базовые.

Часть html
   <p id="hireus">
         <div class="hire-us">
            <div class="container">
               <div class="area_title">
                  Free Consultation
                  <div id="subtitle">
                     Send us your info, and we'll get in touch!
                  </div>
               </div>
               <div class="hireform">
                  <form method="POST" name="contactform" class="form" action="form.php">
                     <input class="input" type="text" name="name" placeholder="Your Name"/>               
                     <input class="input" type="text" name="email" placeholder="Email Address"/>
                     <input type="submit" value="Submit" class="submit"/>
                  </form>
               </div>
            </div>
         </div>
      </p>




часть php



<?php
if(isset($_POST['email'])) {
     
    // EDIT THE 2 LINES BELOW AS REQUIRED
    $email_to = "videoeditor2005@gmail.com";
    $email_subject = "Your email subject line";
     
     
    function died($error) {
        // your error code can go here
        echo "We are very sorry, but there were error(s) found with the form you submitted. ";
        echo "These errors appear below.<br /><br />";
        echo $error."<br /><br />";
        echo "Please go back and fix these errors.<br /><br />";
        die();
    }
     
    // validation expected data exists
    if(!isset($_POST['email'])) {
       
        died('We are sorry, but there appears to be a problem with the form you submitted.');     
    }
     
    $first_name = $_POST['name']; // required
    $email_from = $_POST['email']; // required


     
    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  if(!preg_match($email_exp,$email_from)) {
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
  }
   
  if(strlen($error_message) > 0) {
    died($error_message);
  }
    $email_message = "Form details below.\n\n";
     
    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }
     
    $email_message .= "First Name: ".clean_string($name)."\n";
    $email_message .= "Email: ".clean_string($email_from)."\n";

     
     
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>



Thank you for contacting us. We will be in touch with you very soon.

<?php
}
?>
цитата
01/06/13 в 15:38
 adfire
1) убери @ перед @mail($email_to, $email_subject, $email_message, $headers);
что говорит?

2) попробуй простой скрипт сделать и запустить:
mail("videoeditor2005@gmail.com","sub","text");
что скажет? если ничего то глючит сендмайл на хостинге а не скрипт.
цитата
01/06/13 в 15:54
 VideoEditor2005
убрал все также говорит что все ок, а письмо не приходит

скрипт письмо отослал

я подозреваю что там что-то с передачей данных от хтмл формы
цитата
01/06/13 в 16:17
 Pentarh
Скорей всего там проблема не в пхп, а в самой доставке почты с сервера. Надо /var/log/maillog смотреть.
цитата
01/06/13 в 16:40
 VideoEditor2005
да я же говорю что скрипт mail("videoeditor2005@gmail.com","sub","text");
отправил без проблем
цитата
01/06/13 в 18:05
 st01en
вот здесь не правильно
$first_name = $_POST['name']; // required
нужно
$name = $_POST['name']; // required

А в остальном все работает. Скорей всего у тебя на сервере какие-то специфичные настройки. Проверил с обычным сендмейлом - отправляет.
цитата
01/06/13 в 19:35
 VideoEditor2005
Не знаю чего там было, но я решил пойти путем упрощения и оно заработало. Правда от кода ничего не осталось)

<?php
    $email_to = "videoeditor2005@gmail.com";
    $email_subject = "NEW CLIENT";
     
 
     
   
$name = $_POST['name']; // required
$email_from = $_POST['email']; // required




mail($email_to, $email_subject,$name, $email_from);

?>



Thank you for contacting us. We will be in touch with you very soon.

<?php
?>

А как сделать что-бы форма не перекидывала на новую страницу, а как-то более спокойно сообщала об успехе?
цитата
01/06/13 в 20:20
 Pentarh
Ajax, jquery
цитата
02/06/13 в 01:04
 st01en
Попробуй так, а то нехорошо без проверки поля принимать
<?php

// EDIT THE 2 LINES BELOW AS REQUIRED
    $email_to = "videoeditor2005@gmail.com";
    $email_subject = "Your email subject line";
   $email_message = "Form details below.\n\n";
   
function died($error)
{
        $mess = "We are very sorry, but there were error(s) found with the form you submitted. These errors appear below.<br /><br />".
      $error."<br /><br />Please go back and fix these errors.<br /><br />";
        echo $mess;
}
   
function clean_string($string)
{
    $bad = array("content-type","bcc:","to:","cc:","href","'","\"");
    $str = str_replace($bad,"",$string);
   return strip_tags($str);
}
   
if(isset($_POST['email']))
{
     
   if(empty($_POST['email']))
   {
        died('We are sorry, but email is require.');
      return false;
   }
   else
   {
      $name = $_POST['name']; // required
      $email_from = $_POST['email']; // required
      $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';      
        if(!preg_match($email_exp,$email_from))
        {
          died('The Email Address you entered does not appear to be valid.<br />');
          return false;
        }
    }

$email_message .= "First Name: ".clean_string($name)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$headers = 'From: '.$email_from."\r\n";
mail($email_to, $email_subject, $email_message, $headers);

?>
Thank you for contacting us. We will be in touch with you very soon.
<?php
}
?>
цитата
02/06/13 в 10:04
 Дартаньян
trollface.png по моему и так все понятно, гугл фильтрует письма когда домен !=IP(куда сложнее объяснить это я для примера)


Эта страница в полной версии