简单的PHP提交表单不起作用

时间:2013-12-31 17:32:23

标签: php forms submit form-submit contact-form

只是制作一个简单的提交表单,似乎无法使其正常工作。

它甚至不会报告奇怪的错误。

检查了php.ini,一切看起来都很好。

HTML:

<form id="submit-form" action="receiving.php" method="POST">
        <h3>Submit a Link</h3>
        <fieldset>
            <table>
                <tr>
                    <td><label for="name">You</label></td>
                    <td><input id="name" name="name" type="text" placeholder="Your Twitter or Blog ect." /></td>
                </tr>
                <tr>
                    <td><label for="submit-links">Link(s)</label></td>
                    <td><input id="sumbit-links" name="submit-links" type="text" placeholder="" required="" /></td>
                </tr>
                <tr>
                    <td><input name="submit" type="submit" value="SUBMIT" /></td>
                </tr>
            </table>
        </fieldset>
    </form>

receiving.php:

<?php 
error_reporting(-1);
$name = $_POST['name']; 
$submit-links = $_POST['submit-links']; 
if(isset($_POST['submit'])){
 $from_add = "submit@webdesignrepo.com"; 
 $to_add = "ben@webdesignrepo.com"; 
 $subject = "Your Subject Name";

 $message = "Name:$name \n Sites: $submit-links";

 $headers = 'From: submit@webdesignrepo.com' . "\r\n" .
'Reply-To: ben@webdesignrepo.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion()

 if(mail($to_add,$subject,$message,$headers)){
    $msg = "Mail sent";
 } 
}
print "<p>Thanks $name</p>";
?>

非常感谢任何帮助:)

3 个答案:

答案 0 :(得分:6)

$submit-links不是有效的变量名称。将所有实例切换为$submit_links

答案 1 :(得分:3)

您的表单存在一些问题,我在发布此答案之前测试

正如Jeremy Miller在他的回答中指出的那样(+1 Jeremy btw),在变量中使用连字符无效,请改用下划线。

你也错过了'X-Mailer: PHP/' . phpversion()之后的结束分号,顺便说一下,你不应该使用(出于安全目的),但是...如果你绝对想要使用它,请像这'X-Mailer: PHP/' . phpversion(); - 请参阅下面的编辑(暗示用法)。

成功提交后,此$msg = "Mail sent";不会打印“Mail sent”消息,因为您只是将变量分配给文本;你需要echo it我在下面添加;这不是一个错误,但如果你不打算使用它,为什么要这样做。 (眨眼)。

HTML表单

<form id="submit-form" action="receiving.php" method="POST">
        <h3>Submit a Link</h3>
        <fieldset>
            <table>
                <tr>
                    <td><label for="name">You</label></td>
                    <td><input id="name" name="name" type="text" placeholder="Your Twitter or Blog ect." /></td>
                </tr>
                <tr>
                    <td><label for="submit_links">Link(s)</label></td>
                    <td><input id="sumbit_links" name="submit_links" type="text" placeholder="" required="" /></td>
                </tr>
                <tr>
                    <td><input name="submit" type="submit" value="SUBMIT" /></td>
                </tr>
            </table>
        </fieldset>
</form>

<强> PHP

<?php 
error_reporting(-1);

$name = $_POST['name']; 
$submit_links = $_POST['submit_links']; 

if(isset($_POST['submit']))
{
$from_add = "submit@webdesignrepo.com"; 
$to_add = "ben@webdesignrepo.com"; 
$subject = "Your Subject Name";
$message = "Name:$name \n Sites: $submit_links";

$headers = 'From: submit@webdesignrepo.com' . "\r\n" .
'Reply-To: ben@webdesignrepo.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

if(mail($to_add,$subject,$message,$headers)) 
{
    $msg = "Mail sent";

echo $msg;

} 
}

print "<p>Thanks $name</p>" ;

?>

编辑(暗示用法)

我建议您使用以下PHP,因为如果直接访问PHP文件,您的当前条件语句将抛出以下错误,这可能发生。

另外,使用'X-Mailer: PHP/' . phpversion()可以让人们知道您正在使用哪个PHP版本。

我有良好的权威,使用它是一个安全漏洞。他的名字现在逃脱了我,但是一旦我记得,我会加上它。

  

注意:未定义的索引:第4行的名称

     

注意:未定义的索引:第5行的...中的submit_links

我已将变量设置在if(isset($_POST['submit']))条件语句中。

<?php 
error_reporting(-1);

if(isset($_POST['submit']))
{
$name = $_POST['name']; 
$submit_links = $_POST['submit_links']; 
$from_add = "submit@webdesignrepo.com"; 
$to_add = "ben@webdesignrepo.com"; 
$subject = "Your Subject Name";
$message = "Name:$name \n Sites: $submit_links";

$headers = 'From: submit@webdesignrepo.com' . "\r\n" .

'Reply-To: ben@webdesignrepo.com' . "\r\n";

if(mail($to_add,$subject,$message,$headers)) 
{
    $msg = "Mail sent";

 echo $msg;
} 

print "<p>Thanks $name</p>" ;
}

// else conditional statement for if(isset($_POST['submit']))
else {
echo "Sorry, you cannot do that from here. Please fill in the form first.";
}

?>

答案 2 :(得分:0)

行动可能有误。 例如,如果您的htaccess重定向到https.www而不是http,则在以下示例中您将看不到$_POST

<?php  $formAction = 'http://somedomain.com/receiving.php'; ?>
<form  method="post"  action="<?php echo $formAction; ?>" >
//$_POST will be empty

但是如果你使用

它会起作用
<?php  $formAction = 'https://www.somedomain.com/receiving.php'; ?>
<form  method="post"  action="<?php echo $formAction; ?>" >
//$_POST will contain variables