【问题标题】:HTML Form and PHP Script not workingHTML 表单和 PHP 脚本不起作用
【发布时间】:2013-09-12 11:18:13
【问题描述】:

我创建了一个 HTML 表单和一个 PHP 处理脚本。当我点击发送按钮时,什么也没有发生。

我的 HTML 表单:

            <form method="post" action="../core/code/php/notes.php" id="sendNote">
            <input type="hidden" name="sender" value="user">
            <ol>
            <li><label for="sendto">Send to:</label></li>
            <li>
                <select name="sendto">
                    <option value="admin">admin</option>
                    <option value="bnguyen654">bnguyen654</option>
               </select>  
            </li>
            <li><label for="message">Message:</label></li>
            <li><textarea name="message" style="font-family:'Charter BT';"></textarea></li>
            <li><input type="button" value="Send" name="send"></li>
            </ol>             
            </form>

我的 PHP 代码:

<?php 
$to = $_REQUEST['sendto']; 
$from = $_REQUEST['sender'] ; 
$message = $_REQUEST['message'];

if($message == '') {echo '<script type="text/javascript"> alert("You have not entered a message, please go back and try again"); history.go(-1)</script>';} 
else { 
$file = "../../../Admin/%to/notes.txt";
$fh = fopen($myFile, 'a') or die("Can't find file");
$stringData = "%message ~%from";
$send = fwrite($fh, $stringData);
fclose($fh); 

if($send)
    {echo '<script type="text/javascript"> alert("Message sent successfully"); window.location={"../../../Admin"};</script>';} 
else {
{echo "We encountered an error sending your message, please try again."; } 
}
}

?>

发送按钮什么也不做。没有成功消息或错误。这真是令人沮丧。我确实倾向于忽略这样认为的事情......

  • 这是在服务器上
  • 链接正确

  • 我知道要经历很多事情

  • 任何帮助将不胜感激

谢谢, ~BN

【问题讨论】:

    标签: php html forms button


    【解决方案1】:

    我可以看到两个错误:

    <input type="hidden" name="sender" value="login">
                                             ^ Needs quotes around the value
    

    <input type="submit" value="Send" name="send">
                  ^ Change this to Submit from send.
    

    在 HTML 中没有“发送”类型的表单输入,但 submit 类型在按下时提交表单。

    编辑(根据下面的评论):

    如果您没有进入回显某些 javascript 的脚本部分,那是因为您没有写入文件。我检查了 echo 语句,它运行良好。这意味着您要么无法写入文件 - 如果尚未写入文件,fwrite() 将返回 false。此外,如果它无法正确打开它 - 即 fopen() 失败,那么它也会返回 false。

    再看一下您的代码,您将要更新的文件命名为$file,然后在fopen() 命令中将其称为$myFile

    $file = "../../../Admin/%to/notes.txt";
    $fh = fopen($myFile, 'a') or die("Can't find file");
    

    你应该使用相同的变量吧?

    $myFile = "../../../Admin/%to/notes.txt";
    $fh = fopen($myFile, 'a') or die("Can't find file");
    

    编辑 2:要在 fopen() 之后测试连接,您可以执行以下操作:

    $fh = fopen($myFile, 'a') or die("Can't find file");
    if($fh)
    { echo "Connection to file is okay";}
    else { echo "File couldn't be opened it seems.";}
    

    这与您对已发布代码末尾的 $send 变量所做的基本相同。

    【讨论】:

    • 成功了,但由于某种原因,警告框没有弹出。
    • @BrandonNguyen 对答案进行了编辑,虽然我很乐意提供帮助,但请务必仔细检查您的代码 - 您应该能够自己找到不匹配的变量 - 尽管有时我们确实明白这一点只是想念他们。
    • @BrandonNguyen 好的,你能传递一些额外的信息吗?是在写入文件吗?你能测试一下$fhfwrite()之后是否返回true吗?需要一些额外的信息,而不是“不起作用”的伙伴:)
    • 嗯..我是个初学者,你会怎么做?
    • @BrandonNguyen 我做了另一个编辑。你能玩一下那个游戏并尝试找出错误发生的地方吗?
    【解决方案2】:

    您的输入类型错误。按钮输入类型用于可以附加 javascript 的无操作按钮。 submit 类型用于提交表单。

    【讨论】:

    • 您的带有警报调用的脚本标签是否真的得到了回应?
    • 您是否调用了 var_dump($send) 来查看您的 fwrite 调用究竟发生了什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 2018-07-08
    • 2011-01-13
    • 2021-12-14
    • 2018-03-27
    相关资源
    最近更新 更多