2015-11-22 3 views
0

Я создаю систему электронной почты, поэтому я сделал этот маленький тест-лакомый кусочек, и он работает ..... немного?

<html> 
 
    <head><title>EMail Test</title></head> 
 

 
    <body> 
 
<input type="text" name="email"> 
 

 
EMail (required) 
 

 
<br><br> 
 

 
<textarea name="comment" rows="5" cols="40"></textarea> what's your problem? 
 
<br><br> 
 
<form method="POST" action=''> 
 
<input type="submit" name="button1" value="Submit"> 
 
</form> 
 

 
<?php 
 

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

 
    $msg=$_POST['email']." asks: ".$_POST['comment']; 
 

 
    echo $msg; 
 
    $email=$_POST['email']; 
 
    $SupportNinga="[email protected]"; 
 

 
    $mail=mail($SupportNinga,"Question from ".$email,$msg); 
 
    echo "Emailing..."; 
 
    if($mail) { 
 
     echo"E-mail sent sucessfully"; 
 
    } 
 
} 
 
?> 
 

 
</body> 
 

 
</html>

Это был введен в интернет-хозяина, и, похоже, не работает.

Он отправил электронное письмо, но он просто сказал «Вопрос от-спрашивает:». Я могу сказать, что он неправильно читает $ _POST.

Помощь назначена. : P

ответ

7

Во-первых, эта часть вашего кода находится вне вашей формы.

<textarea name="comment" rows="5" cols="40"></textarea> what's your problem? 

Как <input type="text" name="email">

Поместите все элементы формы внутри <form></form> тегов.

Ваши mail() параметры также выключен.

прочитать инструкцию http://php.net/manual/en/function.mail.php

отчетов Использование ошибок.

Добавьте error reporting в начало файла, в котором будут найдены ошибки.

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// rest of your code 

Sidenote: Отображение ошибок не должно быть сделано только в постановке, и никогда производства.


Вы должны также проверить empty() «Несс на ваш электронный вход.

Кроме того, используя FILTER_VALIDATE_EMAIL против него:


HTML блюстителей:

Что касается использования <html>, то лучше всего объявить doctype, например <!DOCTYPE html>.

Firefox для одного, бросит (красное) предупреждение в исходный HTML-код, разместив мышь над <html>.

Такие, как:

Начальный тег видел, не видя доктайп первым. Ожидается "<!DOCTYPE html>".

  • <form method="POST" action=''> быть последовательным и использовать все двойные кавычки.

  • Отделите свой PHP от HTML. Поместите свой PHP над своим HTML, если вы не будете эхом ничего особенного, кроме сообщения «Успех по почте».


Предотвращение Повторная подача данных:

Вы должны перенаправлять на новую страницу с помощью заголовка, и с помощью сеансов/маркеров, чтобы предотвратить людей от повторной одни и те же данные, если пользователь обновляет что стр.

Список литературы:

XSS инъекций:

$msg=$_POST['email']." asks: ".$_POST['comment']; 

Вы должны сначала объявить свои переменные, назначенные из ваших массивов POST, а затем объединить эти переменные. Вы стоите на получение XSS-инъекции.

Ссылки:


Пользователь знак вверх по электронной почте сноске:

«Я создаю систему электронной почты».

Кажется, вы новичок в работе с электронной почтой, и вот несколько указателей для вас.

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

Есть законы об этом и выходит за рамки этого вопроса.

Канада для одного и быть моей страной, имеет строгие законы о защите от спама, как и другие страны.

Итак, убедитесь, что люди, которые зарегистрируются, знают, что они получают в себя и есть метод двойного отказа в для проверки.

В противном случае вы попадете в черный список.

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