2016-06-27 2 views
2

ПРИМЕЧАНИЕ: сама почта работает нормально, у меня есть размещенный сайт с настроенной почтой. Почта отправляется через этот скрипт, но мой простой пустой обработчик полей никогда не ловит пустые поля. Я уверен, что это нечто совершенно очевидное, но я очень новичок в php, и логика моего скрипта кажется звуковой. Код выглядит следующим образом:Проверка формы данных почтовой программы PHP не работает

Редактировать: Я оставил вызов формы в PHP-скрипте на случай, если кто-то обнаружит проблему с самой формой автозагрузки. Переадресация является временной, пока я не смогу улучшить обработку ошибок.

<body> 
<!-- jQuery and bootstrap --> 
    <script src="https://code.jquery.com/jquery.js"></script> 
    <script src="../js/bootstrap.min.js"></script> 
    <script src="../js/counter.js"></script> 
<div class="jumbotron-fluid" id="primary"> 
<?php 
if (isset($_POST['submit'])) { 
    $from = 'Web_Form_Contact'; 
    $to = '[email protected]'; 
    $subject = 'Job_Contact'; 
    $c_type = $_POST["c_type"]; 

if (empty($_POST["c_name"])) { 
    $errName = 'Info missing: Name'; 
    } else { 
    $c_name = $_POST["c_name"]; 
    } 

if (empty($_POST["c_email"])) { 
     $errEmail = 'Please enter a valid email address'; 
    } else { 
    $c_email = $_POST["c_email"]; 
    } 
if (empty($_POST["co_name"])) { 
    $errCoName = 'Info missing: Company Name'; 
    } else { 
    $co_name = $_POST["co_name"]; 
    } 
if (empty($_POST["j_desc"])) { 
    $errjDesc = 'Info missing: Job Description'; 
    } else { 
    $j_desc = $_POST["j_desc"]; 
    } 

    $body = "From: $c_name\n E-Mail: $c_email\n Type: $c_type\n CoName: $co_name\n Description\n $j_desc"; 

if (empty($errName && $errEmail && $errCoName && $errjDesc)) { 
    if (mail ($to, $subject, $body, $from)) { 
     $result='<div class="alert alert-success">Thank You! I will be in touch\n This page will redirect in 5 seconds.</div>'; 
    } else { 
     $result='<div class="alert alert-danger">Sorry there was an error sending your message. Please try again later</div>'; 
    } 
} else { 
    echo "$errName\n $errEmail\n $errCoName\n $errjDesc"; 
    } 
} 
    echo "$result"; 
?> 
<div class="container"> 
<form class="form-horizontal" role="form" method="post" action="php/info.php" 
    <div class="row"> 
    <div class="col-xs-10 col-sm-6 col-md-6 col-lg-offset-2 col-md-offset-2"> 
     <<h2>Contact Me! <small></small></h2> 
     <form> 
     <div class="form-group row"> 
      <label for="clientEmail" class="col-sm-2 form-control-label">Email</label> 
      <div class="col-sm-10"> 
      <input type="email" name="c_email"class="form-control" id="clientEmail" placeholder="Email" > 
      </div> 
     </div> 
     <div class="form-group row"> 
      <label for="clientName" class="col-sm-2 form-control-label">Name</label> 
      <div class="col-sm-10"> 
      <input type="text" class="form-control" name="c_name" id="clientName" placeholder="Your Name" > 
      </div> 
     </div> 
     <div class="form-group row"> 
      <label class="col-sm-2">Contact Type</label> 
      <div class="col-sm-10"> 
      <div class="radio"> 
       <label> 
       <input type="radio" name="c_type" id="gridRadios1" value="recruiter" checked> 
       I am a recruiter, and do not work directly for the company hiring. 
       </label> 
      </div> 
      <div class="radio"> 
       <label> 
       <input type="radio" name="c_type" id="gridRadios2" value="employee"> 
       I work for the company in question, and wish to discuss an open position. 
       </label> 
      </div> 
      <div class="radio"> 
       <label> 
       <input type="radio" name="c_type" id="gridRadios3" value="other" > 
       Other 
       </label> 
      </div> 
      </div> 
     </div> 
     <div class="form-group row"> 
      <label for="coName" class="col-sm-2 form-control-label">Company Name</label> 
      <div class="col-sm-10"> 
      <input type="text" class="form-control" name="co_name" id="coName" placeholder="Company Name" > 
      </div> 
     </div> 
     <!-- Job Description Text Box --> 
     <div class="form-group row"> 
      <label for="Job Description ">Job Description: (1100 character max!)</label> 
      <div class="col-sm-10 col-lg-offset-2 col-md-offset-2 col-xl-offset-2 col-sm-offset-2" > 
       <div class="form-group"> 

        <textarea class="form-control" rows="5" name="j_desc" id="jobDesc" placeholder="Job Description" ></textarea> 
        <p class="counter">1100</p> 
       </div> 
      </div> 
     </div> 
     <div class="form-group row"> 
      <div class="col-sm-offset-2 col-sm-10"> 
      <button type="submit" id="send" name="submit" value="Send"class="btn btn-secondary">Submit</button> 
      </div> 
     </div> 
     <div class="form-group"> 
     <div class="col-sm-10 col-sm-offset-2"> 
      <?php echo $result; ?> 
     </div> 
    </div> 
     </form> 
    </div> 
    </div> 
</div> 
</div> 
<!--redirect script --> 
<script> 
function redirect(page) { 
    setTimeout(function() { 
     window.location.href = page; 
    }, 5000); 
} 
//sends to homepage 
redirect("../index.html"); 
</script> 

ответ

1

Вы должны иметь пустой чек для каждой переменной:

if (empty($errName) && empty($errEmail) && empty($errCoName) && empty($errjDesc)) { 

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

+0

Спасибо! Я проверю это позже, когда я вернусь домой, даже не подумал о том, чтобы делать отдельные пустые проверки. – opxdev

+0

Полностью решил, спасибо еще раз! Я буду держать флаг в виду для дальнейших изменений. – opxdev

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