当我将我的 php 联系表单从 get 切换到发布时,它不起作用


When I switch my php contact form from get to post it doesn't work

这是我的联系表格,你可以在页面底部的 benlevywebdesign.com 看到它。

<form id="form1" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="text/plain" method="get">    
        <fieldset>
            <p class="form">
                <label for="name">Name</label>
                <input type="text" name="name" id="name" size="30" />
            </p>
            <p class="form">
                <label for="email">Email</label>
                <input type="text" name="email" id="email" size="30" />
            </p>
            <p class="form">
                <label for="web">Website</label>
                <input type="text" name="web" id="web" size="30" />
            </p>            
        </fieldset>
        <fieldset>                                                                          
            <p class="form">
                <label for="message">Message</label>
                <textarea name="message" id="message" cols="30" rows="10"></textarea>
            </p>                                
        </fieldset>                 
        <p class="submit"><button name="submit" type="submit">Send</button></p>
    </form>`

这是我尝试从get切换到post的php代码。我不知道那么多php

<?php
        if(isset($_GET['submit'])){
            $to = "benlevygraphics@gmail.com";
            $headers = "From: " . $_GET['email'];
            $subject = "Ben, you have been contacted by...";
            $body = "Name: " . $_GET['name'] . "'nEmail: " . $_GET['email'] . "'nWebsite: " . $_GET['web'] . "'nMessage: " . $_GET['message'];
            if(mail($to, $subject, $body, $headers)){
                echo("<p>Your message has been sent!</p>");
            }
            else{
               echo("<p>Message delivery failed...</p>");
            }
       }
?>

首先,去掉你的enctype属性。您将其设置为规范中规定的text/plain

使用文本/纯格式的有效负载旨在使人类可读。计算机无法可靠地解释它们

其次,将method设置为"POST"

第三,在PHP中使用$_POST$_GET

第四,不要在没有先使用 htmlspecialchars 编码的情况下将$_POST/GET/SERVER/ETC的内容输出到 HTML 文档中。否则,您将面临巨大的XSS安全漏洞。

尝试更改:

<p class="submit"><button name="submit" type="submit">Send</button></p>

<p class="submit"><input type="submit" name="submit" id="submit" value="Send" /></p>