HTML-форма с добавлением php "?"в URL вместо того, чтобы сделать скрипт php - PullRequest
0 голосов
/ 01 июня 2019

Я работаю в разделе контактов на веб-сайте и Мне нужно отправить все контактные формы на почту .

Проблема в том, что у меня есть PHP-скрипт, который делает всю работу, но; когда я нажимаю "отправить" , сайт обновить и URL изменится с "www.site.com/contact.html" на "www.site".com / contact.html? ".

Кстати, я работаю с Bootstrap и PHP 5.

Мне кажется, проблема в том, что форма не распознает скрипт или яНе связывайте скрипт с формой правильно.Я пытался использовать свойство action="form_contact.php в теге html form.

HTML

<div class="row justify-content-center" style=" width: 100%">
            <div class="col-10 col-md-6 justify-content-center align-self-center">
                <form id="form_46788" data-form-type="blocs-form" novalidate data-success-msg="Your message was sent succsessfuly" data-fail-msg="Ups! something go wrong, try again.">
                    <div class="form-group">
                        <label>
                            Name
                        </label>
                        <input id="name_46788" class="form-control" required data-validation-required-message="Send your name" />
                    </div>
                    <div class="form-group">
                        <label>
                            Email
                        </label>
                        <input id="email_46788" class="form-control" type="email" required data-validation-required-message="Invalid Email" />
                    </div>
                    <div class="form-group">
                        <label>
                            Tell us about you<br>
                        </label><textarea id="message_46788" class="form-control" rows="4" cols="50" required data-validation-required-message="Invalid Message"></textarea>
                    </div> 
                    <button class="btn btn-primary" type="submit">
                        Send
                    </button>
                </form>
            </div>  
        </div>

PHP (имя файла: form_contact.php)

<?php   
    if(empty($_POST['name_contact']) && strlen($_POST['name_contact']) == 0 || empty($_POST['email_contact']) && strlen($_POST['email_contact']) == 0 || empty($_POST['message_contact']) && strlen($_POST['message_contact']) == 0)
    {
        return false;
    }

    $name_contact = $_POST['name_contact'];
    $email_contact = $_POST['email_contact'];
    $message_contact = $_POST['message_contact'];

    $to = 'irivero@ngine.digital'; // Email submissions are sent to this email

    // Create email 
    $email_subject = "Mensaje desde el website";
    $email_body = "Haz recibido un mensaje desde la página web \n\n".
                  "Name_contact: $name_contact \nEmail_contact: $email_contact \nMessage_contact: $message_contact \n";
    $headers = "MIME-Version: 1.0\r\nContent-type: text/plain; charset=UTF-8\r\n";  
    $headers .= "From: web@site.com\n";
    $headers .= "Reply-To: $email_contact"; 

    mail($to,$email_subject,$email_body,$headers); // Post message
    return true;            
?>

Фактический результат, который мне нужно получить:

Если какое-либо поле не содержит никакой информации, data-validation во входных данных формы должно отображать data-validation-required-message="error" message.

Если все поля верны, скрипт сработает, и я получу контактную форму в моем письме.

1 Ответ

1 голос
/ 01 июня 2019

Хорошо, ваш код содержит некоторые ошибки, я отредактировал ваш код, чтобы он заработал, я добавил некоторые дополнительные проверки через php (лучше, чем html5), теперь должен работать нормально, я не проверял весь код, дайте мне знать, если это тебе достаточно ...

form.php

<?php @ini_set('default_charset', 'UTF-8'); ?>
<!DOCTYPE html>

<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="pragma" content="no-cache">
  <meta name="robots" content="noindex, nofollow">
  <title>Contact Form</title>
  <link rel="stylesheet" type="text/css" media="all" href="form.css">
  <link rel="shortcut icon" href="/favicon.ico">
</head>

<body>

<div class="row justify-content-center" style="width: 100%">
  <div class="col-10 col-md-6 justify-content-center align-self-center">
    <p class="error"><?php if (isset($error)) { echo $error; } ?></p>
    <form name="form" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], NULL, 'UTF-8'); ?>" method="post">
      <div class="form-group">
        <label>Name</label>
        <input name="name_contact" id="name_contact" placeholder="Your Name..." value="<?php if (isset($_POST['name_contact'])) { echo htmlentities($_POST['name_contact'], ENT_QUOTES, 'UTF-8'); } ?>">
      </div>
      <div class="form-group">
        <label>Email</label>
        <input name="email_contact" id="email_contact" placeholder="Your Email Address..." value="<?php if (isset($_POST['email_contact'])) { echo htmlentities($_POST['email_contact'], ENT_QUOTES, 'UTF-8'); } ?>">
      </div>
      <div class="form-group">
        <label>Tell us about you</label><br />
        <textarea name="message_contact" id="message_contact" class="form-control" rows="4" cols="50" placeholder="Your Message..."><?php if (isset($_POST['message_contact'])) { echo htmlentities($_POST['message_contact'], ENT_QUOTES, 'UTF-8'); } ?></textarea>
      </div> 
      <button class="btn btn-primary" name="submit" type="submit">Send</button>
    </form>
  </div>
</div>

</body>

</html>

contact.php

<?php
@ini_set('default_charset', 'UTF-8');
if (!isset($_POST['name_contact']) || !isset($_POST['email_contact']) || !isset($_POST['message_contact'])) {
  $error = "Please, fill all required fields!";
  include("./form.php");
  exit();
}
if (!isset($_POST['name_contact']) || empty($_POST['name_contact']) || strlen($_POST['name_contact']) == 0) {
  $error = "Please, provide a valid email name!";
  include("./form.php");
  exit();
} else {
  $name_contact = htmlentities($_POST['name_contact'], ENT_QUOTES, 'UTF-8');
}
if (!isset($_POST['email_contact']) || empty($_POST['email_contact']) || strlen($_POST['email_contact']) == 0 || !preg_match("/^[a-zA-Z0-9]+([_\\.-][a-zA-Z0-9]+)*". "@([a-zA-Z0-9]+([\.-][a-zA-Z0-9]+))+$/", $_POST['email_contact'])) {
  $error = "Please, provide a valid email address!";
  include("./form.php");
  exit();
} else {
  $email_contact = $_POST['email_contact'];
}
if (!isset($_POST['message_contact']) || empty($_POST['message_contact']) || strlen($_POST['message_contact']) == 0) {
  $error = "Please, provide a valid email message!";
  include("./form.php");
  exit();
} else {
  $message_contact = htmlentities($_POST['message_contact'], ENT_QUOTES, 'UTF-8');
}
if (isset($_POST['submit'])) {
  $to = 'irivero@ngine.digital'; // Email submissions are sent to this email
  // Create email 
  $email_subject = "Mensaje desde el website";
  $email_body = "Haz recibido un mensaje desde la página web\n\n" . "Name_contact: $name_contact\nEmail_contact: $email_contact\nMessage_contact: $message_contact\n";
  $headers = "MIME-Version: 1.0\r\nContent-type: text/plain; charset=UTF-8\r\n";
  $headers .= "From: web@site.com\n";
  $headers .= "Reply-To: $email_contact"; 
  if (mail($to,$email_subject,$email_body,$headers)) { // Post message
    $error = "SUCCESS: Your Message is Sent!";
    include("./form.php");
    exit();
  } else {
    $error = "WARNING: Your Message cannot be Sent!";
    include("./form.php");
    exit();
  }
}
?>

Просто загрузите contact.php, чтобы заставить работать HTML-форму ... Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...