2017-01-14 3 views
-2

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

Поскольку это будет на сайте, я боюсь любых инъекций. То, что я сделал до сих пор, это использовать htmlentities() для защиты действия, использовать функцию test_input из школ w3 и использовать функцию require, но я знаю, что ее можно легко извлечь.

Заранее благодарен!

<?php 
     // define variables and set to empty values 
     $name = $email = $gender = $comment = $website = ""; 
     function test_input($data) { 
      $data = trim($data); 
      $data = stripslashes($data); 
      $data = htmlspecialchars($data); 
      return $data;} 
     if ($_SERVER["REQUEST_METHOD"] == "POST") { 
      $name = test_input($_POST["name"]); 
      $email = test_input($_POST["email"]); 
      $website = test_input($_POST["telnr"]); 
      $comment = test_input($_POST["message"]); 
      echo"Bedankt voor het invullen, we nemen zo snel mogelijk contact met u op."; 
      } 
      else{ 
      ?> 
      <form action="<?php echo htmlentities($_SERVER["PHP_SELF"]);?>" method="post"> 
       <div class="form-group row"> 
        <label for="inputEmail3" class="col-sm-2 col-form-label">naam</label> 
        <div class="col-sm-10"> 
         <input type="text" class="form-control" name="name" placeholder="naam" required> 
        </div> 
       </div> 
       <div class="form-group row"> 
        <label for="inputPassword3" class="col-sm-2 col-form-label">e-mail</label> 
        <div class="col-sm-10"> 
         <input type="email" class="form-control" name="email" placeholder="e-mail" required> 
        </div> 
       </div> 
       <div class="form-group row"> 
        <label for="inputPassword3" class="col-sm-2 col-form-label">tel.nr</label> 
        <div class="col-sm-10"> 
         <input type="tel" class="form-control" name="telnr" placeholder="telefoonnummer" required> 
        </div> 
       </div> 
       <div class="form-group row"> 
        <label for="inputPassword3" class="col-sm-2 col-form-label">bericht</label> 
        <div class="col-sm-10"> 
         <input type="text" class="form-control" name="message" placeholder="bericht" required> 
        </div> 
       </div> 
       <div class="form-group row text-center"> 
        <div class="offset-sm-2 col-sm-10"> 
         <button type="submit" class="btn btn-primary">Verstuur bericht!</button> 
        </div> 
       </div> 
      </form> 

     <?php } ?> 
+0

Что это * сделать *? Кажется, вы не отправляете почту или не сохраняете данные. –

+0

Он ничего не делает, как объяснялось выше. Строки, которые формируют почту формы, должны быть добавлены. – KevinPV

+0

есть предопределенные функции для дезинфекции ввода: [filter_input] (http://php.net/manual/en/function.filter-input.php) (заменяет ваш пользовательский 'test_input()') – Jeff

ответ

0

Определенно хорошо escape the PHP_SELF value хотя, если вам не требуется портативность она предоставляет, вы всегда можете упростить вещи немного и жёстко целевой формы.

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