联系表单值将进入URL

时间:2018-06-05 12:10:24

标签: php html wampserver mail-server

所以我现在正在一个网站上工作,我希望客户能够通过联系表单直接发送到我的电子邮件。我现在正在通过wamp服务器3运行所有文件,现在我正在测试邮件功能是否与侦听端口25的Test Mail Server一起使用。

这是表单的PHP代码:

<?php

$myemail  = "test.xample@xample.com";

if (isset($_POST['email'])) 
{
    echo "Thank you for contacting us!";

    /* Set e-mail recipient */

    /* Check all form inputs using check_input function */
    $name = ($_POST['name']);
    $subject  = ($_POST['subject']);
    $email    = ($_POST['email']);
    $message = ($_POST['message']);

    /* If e-mail is not valid show error message */
    if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
    {
        show_error("E-mail address not valid");
    }

    if ($name = "") 
    {
        show_error("You need to write your name...");
    }

    if ($email = "") 
    {
        show_error("You need to enter a email...");
    }

    if ($message = "") 
    {
        show_error("A message is required if you wish to have out help...");
    }
    /* Let's prepare the message for the e-mail */
    $mail = "Hello!

    Your contact form has been submitted by:

    Name: $yourname
    E-mail: $email

    Message:
    $Message

    End of message
    ";

    /* Send the message using mail() function */
    mail($myemail, $subject, $message);

    /* Functions we used */
    function check_input($data, $problem='error')
    {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        if ($problem && strlen($data) == 0)
        {
            show_error($problem);
        }
        return $data;
    }

    function show_error($myError)
    {
    ?>
        <html>
        <body>

        <b>Please correct the following error:</b><br />
        <?php echo $myError; ?>

        </body>
        </html>
    <?php
    exit();
    }
}
?>

这是表单的HTML部分:

<form class="mt-5 ml-5 mr-5" method="_POST" action="handler.php" id="reused_form">
        <p id="contactForm" class="h4 text-center mt-5"><strong>Kontakta oss</strong></p>

        <!-- input text(Name) -->
        <div class="md-form">
            <i class="fa fa-user prefix">*</i>
            <input type="text" name="name" id="name" class="form-control">
            <label for="name">Ditt namn</label>
        </div>

        <!-- input email -->
        <div class="md-form mt-5">
            <i class="fa fa-envelope prefix">*</i>
            <input type="email" name="email" id="email" class="form-control validate">
            <label for="email" data-error="Fel" data-success="Rätt">Din email</label>
        </div>

        <div class="md-form mt-5">
            <i class="fa fa-user prefix"></i>
            <input type="text" id="subject" class="form-control">
            <label for="subject">Ämne</label>
        </div>

        <!-- input message -->
        <div class="md-form mt-5">
            <i class="fa fa-pencil prefix">*</i>
            <textarea type="text" name="message" id="message" maxlength="5000" class="form-control md-textarea" rows="3"></textarea>
            <label for="textareaPrefix">Meddelande</label>
        </div>

        <div class="text-center mt-4 mb-4">
            <button class="btn danger-color" type="submit">Skicka</button>
        </div>
    </form>

当我按下提交按钮时,唯一发生的事情就是将其添加到URL:

我对此测试的输入:

  • 姓名:asd
  • 电子邮件:asd @ ad
  • message:asd

/handler.php?name=asd&email=asd%40ad&message=asd

所以它只是在URL中添加输入的值......

我需要帮助的是如何解决这个问题并能够发送邮件。如果有人可以提供帮助,我会很高兴。

1 个答案:

答案 0 :(得分:1)

Yo正在使用method=_POST这是不正确的方法,所以默认情况下,表单使用GET method来发送数据。

请尝试使用method=POST代替method=_POST,它会完美运作。

<form method="POST">
   .........
</form>