表单提交出错

时间:2012-04-26 13:17:44

标签: php html forms submit

我正在尝试将一个html表单提交给发送邮件的php文件。我试着在ajax之前尝试过,当我改为纯粹的html& php它也表现得很奇怪。 所以我有这样的形式:

<form id="comandaform" action="send.php" method="post">
        <div class="ordercol">
            <label for="nume">Nume companie</label>
            <input type="text" id="nume" name="nume" />
            <label for="email">Email</label>
            <input type="text" id="email" name="email" />
            <label for="tel">Telefon (te sunam noi!)</label>
            <input type="text" id="tel" name="tel" />
        </div>
        <div class="ordercol">
            <label for="detalii">Detalii despre domeniul tau de activitate</label>
            <textarea name="detalii" id="detalii"></textarea>
            <input type="submit" id="submit" value="trimite"/>
        </div>
</form>

处理此问题的PHP脚本是:

<?php

$nume = $_POST["nume"];
$mail = $_POST["email"];
$tel = $_POST["tel"];
$det = $_POST["detalii"];
$mess = "";

if(isset($nume)&&isset($mail)&&isset($tel)&&isset($det))
{
$to      = 'mail@gmail.com';
$subject = 'Comanda Site100';
$message = 'Nume companie:  '.$nume.'\n'.
    'Telefon: '. $tel.'\n'.
    'E-mail: '. $mail.'\n'.

'Detalii:\n'.
$det;

if(mail($to, $subject, $message))
{
    echo "succes";
}else{
    echo "fail";
}
}else{
    echo "fail";
}
?>

当我尝试提交时,浏览器将找不到send.php文件。我做错了吗?

2 个答案:

答案 0 :(得分:1)

你真的得到一个找不到文件的错误吗?

在send.php

的顶部添加一行代码

类似的东西:

echo'处理表格......';

这样您就可以看到页面正确加载。

然后尝试手动加载

例如。

如果你的表格是

http://www.mydomain.com/form.html

然后尝试输入

来加载send.php

http://www.mydomain.com/send.php

确保加载正常。

您也可以将所有$ _POST更改为$ _REQUEST然后您可以使用查询字符串对其进行测试

例如

http://www.mydomain.com/send.php?nume=bob

应该让你朝着找到问题的方向前进......如果没有回复,让我们知道上面发生了什么。

答案 1 :(得分:0)

我立即注意到有关你的代码的两件事。

首先,如果您的浏览器未找到send.php,则强烈表示您有路径错误。您要么在HTML操作路径中缺少子文件夹,要么文件位于您预期的位置以外的位置。

其次,即使您确实找到了表单,也可能会出错。如果这些字段中的任何一个为空,则在尝试将$ _POST键分配给局部变量时会出现错误unidentified index call。接下来,当您检查变量是否已设置时,当然它们毕竟只是设置它们。但是,如果表单的任何字段留空,则它们的值将为undefined。

//Use an inline check when assigning the form field values
$nume = isset($_POST["nume"]) ? $_POST["nume"] : '';

然后,在检查完整性时......

//Check for empty values
if (!empty($nume) && !empty($mail) && !empty($tel) && !empty($det)){
// Etc...