@Alex_87

Правильно ли написан php код?

Здравствуйте! Я прошу проверить мой код на его правильность. Задача этого кода - отправка email на почту. Человек должен ввести в поля определённые данные, и при нажатии кнопки "Оставить заявку" данные должны быть отправлены на определённую почту. Я к сожалению не могу проверить это на локальном! Меня также смущает то, что выдаются ошибки при не заполнении полей, хоть я и попытался это прописать...
59d4b98aecd52797911340.png
<div class="contact">
            <div class="wrapper">
                 <div class="contact-title" id="about">Оставьте заявку сейчас и получите бесплатную консультацию!</div>
                 <form action="" method="post" class="form">
                     <input type="text" placeholder="Ваше имя" name="name" value="<?=$_POST['name']?>"  />
                     <span style="color:red"><?=$err['name']?></span>
                     <input type="e-mail" placeholder="Ваша почта" name="e-mail" value="<?=$_POST['e-mail']?>" />
                     <span style="color:red"><?=$err['email']?></span>
                     <input type="text" placeholder="Ваш Skype"  name="skype" value="<?=$_POST['skype']?>" />
                     <textarea name="sms" id="" cols="30" rows="10" placeholder="Ваше сообщение" value="<?=$_POST['sms']?>"></textarea>
                     <span style="color:red"><?=$err['sms']?></span>
                     <div>
                        <input type="submit" value="Оставьте заявку" />
                     </div>
                 </form>
              </div>
         </div>

if(isset($_POST['submit'])){
                     $to = 'какая-то почта';
                     $subject = 'Новое сообщение';
                     $name = $_POST['name'];
                     $email = $_POST['e-mail'];
                     $skype = $_POST['skype'];
                     $sms = $_POST['sms'];
                     $error = false;
                     $err = array('email' => '', 'name' => '', 'sms' => '');

                     if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)){
		          $err['email'] = 'Вы ввели не корректный email';
			  $error = true;
		     }
                     if (empty($name)){
		          $err['name'] = 'Вы не ввели имя';
			  $error = true;
		     }
                     if (empty($sms)){
		          $err['name'] = 'Вы не ввели сообщение';
			  $error = true;
		     }

                     if(!$error){
                        $subject = "=?utf-8?B?".base64_encode($subject)."?=";
                        $headers = "From: $from\r\nReply-to: $from\r\nContent-type:text/plain; charset=utf-8\r\n";
                        mail($to, $subject, $sms, $headers);
                     }

                 }
  • Вопрос задан
  • 250 просмотров
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега PHP
Web developer
  1. В форме возможна инъекция
  2. $_POST['submit'] не существует
  3. Нет проверки, что существует индекс $_POST['skype'] и пр.
  4. $from не существует, не используется $email
  5. Письмо формируется некошерно (нет разбиения длинного заголовка, недостаточно headers и пр.). Лучше использовать библиотеку
  6. Недостоверный почтовый сервер, подмена обратного адреса и пр. - большая вероятность попадания в спам и блокировки почтовыми серверами
  7. Нет защиты от спама (многоразовой отправки формы ботом)

И т.д.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 16:26
3000 руб./за проект
03 мая 2024, в 16:09
1200 руб./за проект
03 мая 2024, в 16:06
3000 руб./за проект