帖子上的Php简单电子邮件表单打开代码

时间:2015-04-12 09:19:02

标签: php form-submit

我正在学习php,现在我正在尝试制作简单的表单,提交时会将电子邮件发送到我的邮箱。我在本地PC上使用Vamp服务器。当我按下提交按钮时,它只是从PHP文件中打开下面的代码并将其显示在屏幕上。 没有其他行动,有人可以向我解释发生了什么,我做错了什么我只是想提交并查看我的gmail帐户上的邮件,所以我知道它的工作原理。 目录包括:form-page.html,form-to-mail-php和thank_you html。 在表单页面中,您有输入和提交,在下面的PHP代码中,它会将您重定向到感谢页面。

            <?php
    if(!isset($_POST['submit']))
    {
      //This page should not be accessed directly. Need to submit the form.
      echo "error; you need to submit the form!";
    }
    $name = $_POST['name'];
    $visitor_email = $_POST['email'];
    $message = $_POST['message'];

    //Validate first
    if(empty($name)||empty($visitor_email)) 
    {
        echo "Name and email are mandatory!";
        exit;
    }

    if(IsInjected($visitor_email))
    {
        echo "Bad email value!";
        exit;
    }

    $email_from = 'l.lawliet46@gmail.com';//
    $email_subject = "New Form submission";
    $email_body = "You have received a new message from the user $name.\n".
        "Here is the message:\n $message".

    $to = "l.lawliet46@gmail.com";
    $headers = "From: $email_from \r\n";
    $headers .= "Reply-To: $visitor_email \r\n";
    //Send the email!
    mail($to,$email_subject,$email_body,$headers);
    //done. redirect to thank-you page.
    header('Location: thank-you.html');


    // Function to validate against any email injection attempts
    function IsInjected($str)
    {
      $injections = array('(\n+)',
                  '(\r+)',
                  '(\t+)',
                  '(%0A+)',
                  '(%0D+)',
                  '(%08+)',
                  '(%09+)'
                  );
      $inject = join('|', $injections);
      $inject = "/$inject/i";
      if(preg_match($inject,$str))
        {
        return true;
      }
      else
        {
        return false;
      }
    }



    ?> 



<form method="post" name="myemailform" action="form-to-email.php">
    <p>
        <label for='name'>Enter Name: </label><br>
        <input type="text" name="name">
    </p>
    <p>
        <label for='email'>Enter Email Address:</label><br>
        <input type="text" name="email">
    </p>
    <p>
        <label for='message'>Enter Message:</label> <br>
        <textarea name="message"></textarea>
    </p>
    <input type="submit" name='submit' value="submit">
</form>

1 个答案:

答案 0 :(得分:1)

首先,显示的代码而不是服务器执行的操作表示缺少PHP模块。尝试在新文件中运行简单的phpinfo()脚本并查看返回的内容。例如,

<?php
phpinfo(INFO_MODULES);
?>

将输出您机器上安装的模块。使用WAMP,可以使用更简单的选项来修改php.ini文件。见下文,

Edit php.ini file

您应该注意,其中包含PHP脚本的.html文件需要为PHP脚本修改PHP处理程序。见下文,

Wamp Server isn't executing php code

您可以使用$.ajax将表单值从form-page.html传递到form-to-mail.php,以避免在上一步中修改PHP处理程序文件。

接下来,请考虑以下事项:

这是关于如何配置WAMP发送邮件的非常基础的教程。

http://roshanbh.com.np/2007/12/sending-e-mail-from-localhost-in-php-in-windows-environment.html

此外,您的Google帐户(我认为)不允许您在未经身份验证的情况下发送邮件。如果不是这样,请纠正我。

How to configure WAMP (localhost) to send email using Gmail?

在结账时,最好在输入中使用mysqli_real_escape_string()