2016-12-12 2 views
-1

Я пытаюсь добавить форму на мою страницу Wordpress, однако проблема, которую я имею сейчас, заключается в том, что форма отправляет мне письмо в любое время, когда страница посещает мою веб-страницу. Я думаю, это потому, что я поместил php в файл заголовка, поэтому каждый раз, когда заголовок загружается, он отправляет электронное письмо. Как я могу сделать это, только отправьте электронное письмо с отправкой формы, когда оно действительно заполнено?Форма отправки отправки пустой информации после каждой страницы посещения

HTML

<form name="infoform" method="post" action="" > 

    <br><input type="text" name="ffirstname" placeholder="First Name"/><input type="text" name="lastname" placeholder="Last Name"/> 
    <br><br><input type="text" name="address" placeholder="Address"/><input type="text" name="unit" placeholder="Unit"/></br> 
    <br><input type="text" name="city" placeholder="City"/><select name="province" > 
<option value="ab">AB</option> 
    <option value="BC">BC</option> 
    <option value="BC">MB</option> 
    <option value="NB">NB</option> 
<option value="NL">NL</option> 
<option value="NS">NS</option> 
<option value="ON">ON</option> 
<option value="PE">PE</option> 
<option value="QC">QC</option> 
<option value="SK">SK</option> 
</select><input type="text" name="postal" placeholder="Postal Code"/></br> 
<br><input type="text" name="country" placeholder="Country"/></br> 
<Br><input type="text" name="email" placeholder="Email"/><input type="number" name="phone" placeholder="Phone#"/></br> 
<br> <br><input class="submit" type="submit" value="Next" /> 

CSS

<style> 

    input[type=text], input[type=number], select[name=province]{ font-family: arial; width:100%; 
    border: 1px solid #E5E5E5; padding: 10px 20px;} 
input[name=ffirstname] {width:49%; margin-right:1%; } 
input[name=lastname] {width:49%; margin-left:1%; } 
input[name=address] {width:65.6667%; margin-right:1%; } 
input[name=unit] {width:32.3337%; margin-left:1%; } 
input[name=city] {width:49%; margin-right:1%; } 
select[name=province] {width:24%; margin-left:1%;} 
input[name=postal] {width:24%; margin-left:1%; } 
input[name=email] {width:49%; margin-right:1%; } 
input[name=phone] {width:49%; margin-left:1%;} 

input[class=submit] { 

    background-color: #f05a28; 
    color: white; 
    padding: 8px 20px; 
    margin-left: 85%; 
    border-radius: 4px; 
    border: none; !important; 
    outline: none; !important ; 
    cursor: pointer; 
    box-shadow: none; !important;} 

PHP

<?php 

$name = $_POST['ffirstname']; 
$lastname = $_POST['lastname']; 
$address = $_POST['address']; 
$unit = $_POST['unit']; 
$city = $_POST['city']; 
$province = $_POST['province']; 
$postal = $_POST['postal']; 
$country = $_POST['country']; 
$email = $_POST['email']; 
$phone = $_POST['phone']; 
$formcontent=" From: $name $lastname \n Address: $address 
\n Unit: $unit \n City: $city \n Province: $province \n 
Postal Code: $postal \n Country: $country \n 
Email: $email \n Phone: $phone \n "; 
$recipient = "[email protected]"; 
$subject = "Contact Form"; 
$mailheader = "From: $email \r\n"; 
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!"); 

?> 
+0

A: использовать условный 'пустой()' 's для входов и 'Исеть()' на отправке кнопка. Этот вопрос задавался много раз. –

+0

isset() по какой-то причине не работает –

+0

Как вы используете isset() или empty()? – Slico

ответ

0
<?php 
if(isset($_POST['submit'])){ 
$name = $_POST['ffirstname']; 
$lastname = $_POST['lastname']; 
$address = $_POST['address']; 
$unit = $_POST['unit']; 
$city = $_POST['city']; 
$province = $_POST['province']; 
$postal = $_POST['postal']; 
$country = $_POST['country']; 
$email = $_POST['email']; 
$phone = $_POST['phone']; 
$formcontent=" From: $name $lastname \n Address: $address 
\n Unit: $unit \n City: $city \n Province: $province \n 
Postal Code: $postal \n Country: $country \n 
Email: $email \n Phone: $phone \n "; 
$recipient = "[email protected]"; 
$subject = "Contact Form"; 
$mailheader = "From: $email \r\n"; 
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!"); 
} 
?> 

Как предполагают Фред вы должны проверить, форма представляется и изменить кнопку отправить

<input class="submit" type="submit" name="submit" value="Next" /> 
+0

Лучше всего добавить условные 'empty()' для входов Adam. Они хотят получать пустые электронные письма, если кто-то просто нажимает кнопку отправки. –

+0

Да, у меня нет моей кнопки с именем, иди цифрой. Благодаря!! –

2

Вы должны проверить, если Представлять установлен и входы не являются пустыми.

Sidenote: Вы можете добавить в остальной части массивов POST и давая вашему <input class="submit" type="submit" value="Next" /> имя:

<input class="submit" name="submit" type="submit" value="Next" /> 

Пример:

if(isset($_POST['submit'])) { 

if 
    (
    !empty($_POST['ffirstname']) 
    && 
    !empty($_POST['lastname']) 

    // ... and any other inputs you wish to check for. 

    ) 
{ 

    $name = $_POST['ffirstname']; 
    $lastname = $_POST['lastname']; 
    $address = $_POST['address']; 
    $unit = $_POST['unit']; 
    $city = $_POST['city']; 
    $province = $_POST['province']; 
    $postal = $_POST['postal']; 
    $country = $_POST['country']; 
    $email = $_POST['email']; 
    $phone = $_POST['phone']; 
    $formcontent=" From: $name $lastname \n Address: $address 
    \n Unit: $unit \n City: $city \n Province: $province \n 
    Postal Code: $postal \n Country: $country \n 
    Email: $email \n Phone: $phone \n "; 
    $recipient = "[email protected]"; 
    $subject = "Contact Form"; 
    $mailheader = "From: $email \r\n"; 
    mail($recipient, $subject, $formcontent, $mailheader) or die("Error!"); 

    } 

} 

<form name="infoform" method="post" action="" > является главной причиной, почему ты 'получать пустые значения в Email, так как вы используете весь свой код в том же файле, что и PHP-процессор, и не проверяете, остались ли какие-либо входы пустыми или нет.

+0

красивый !! оно работает. Mucho gracias :) –

+0

@JoonJoonam De nada ;-) –

+0

@JoonJoonam У вас есть выбор, чтобы отметить вопрос так же, как и решить, так что другие не думают, что он все еще открыт. –

0

Что происходит, так это то, что ваш PHP-скрипт работает каждый раз, когда загружается страница. Вам нужно включить условный оператор в ваш PHP, который гласит: «Когда эта кнопка нажата, сделайте это ...»

Для этого вам необходимо будет обновить свой HTML-код и добавить атрибут имени в свой отправить кнопку. Я дал этому атрибуту значение «Следующий». Вы всегда можете это изменить. Однако убедитесь, что это изменение отражено в вашем скрипте PHP.

<br> <br><input name="Next" class="submit" type="submit" value="Next" /> 

И тогда в вашем PHP скрипт следующий будет обернуть весь сценарий:

if(isset($_POST['Next'])){ 
//Your script goes here 
} 
Смежные вопросы