【问题标题】:HTML submit forms using PHP使用 PHP 提交 HTML 表单
【发布时间】:2012-01-10 23:12:48
【问题描述】:

我现在正在学习 PHP,所以请原谅我无法解决的愚蠢问题。 我创建了一个简单的 Web 表单,其中显示了用户输入的值。

function submitform()
{
  document.forms["myForm"].submit();
} // in head of html



<form action ="res.php" id="myForm" method="post" >
 Name: <input type="text" name="name" size="25" maxlength="50" /> <br> </br>
 Password:<input type="password" name="password" size="25" maxlength="50" /> 
 Description: <textarea name="editor1"> </textarea> 
<input type="submit" value="Submit" onclick="submitForm()" />
</form>

并且 res.php 包含:

foreach($_POST as $field => $value)
{
  echo "$field = $value";
}

当我点击提交按钮时,我只是得到一个空白页面,没有任何来自表单的值。谁能告诉我我错过了什么?

【问题讨论】:

  • 您甚至没有看到等号?如果是这样,你的循环永远不会被运行。您确定您的发布方法确实有效吗?您可以通过 Fiddler (fiddler2.com/fiddler2) 进行验证。
  • 首先删除javascript,您不需要它来提交表单。而且由于它没有添加任何东西,因此它更有可能导致问题而不是帮助。
  • 您是否尝试过不使用(不必要的)javascript submitForm() 函数?在您提供的代码中,它没有任何作用。尝试首先从提交按钮中删除“onClick”属性,因为提交按钮将简单地提交表单而无需 javascript。
  • 听起来你在res.php 的某个地方遇到了错误。您的php.ini 中是否将display_errors 设置为On?另外,您在脚本中是否正确输入了&lt;?php?&gt;
  • 我相信您的表单必须具有 name="myForm" 才能使 javascript 正常工作

标签: php html forms submit


【解决方案1】:

不需要 javascript。应该这样做:

<form action ="res.php" id="myForm" method="post" >
        Name: <input type="text" name="name" size="25" maxlength="50" /> <br> </br>
        Password:<input type="password" name="password" size="25" maxlength="50" /> 
        Description: <textarea name="editor1"> </textarea> 
        <input type="submit" value="Submit" />
  </form>

【讨论】:

  • 删除了 func,但仍然没有运气。当我点击提交时,它现在显示我的 php 文件的内容。在响应文件中 "; foreach ($_POST as $field => $value) { echo "$field == $value \n"; } ?>
  • 嗯...@Shilpa 您的服务器甚至可以识别 php 吗?它在 标签内吗?
  • 是的,我正在使用 Netbeans(启用 PHP)。 在响应文件中!"; foreach ($_POST as $field => $value) { echo "$field = $value
    \n"; } ?>
  • @Shilpa 看到我的回答并告诉我这是否有效(第一个 sn-p)
  • 使用 并运行它。它显示你好。但是,如果我在现有的 HTML 项目中添加 sme 东西,它不会显示任何内容。如果我添加 Hello'; ?> 在我现有的 HTML 项目中,然后在提交后显示“Hello '; ?>”
【解决方案2】:

让我们从修复错误开始:

JavaScript 区分大小写。我看到您的函数名称是submitform,而表单的onclick 调用submitForm

【讨论】:

  • 好电话。虽然稳健的解决方案是完全摆脱 JavaScript。
  • 是的,通常JavaScript 不需要提交表单,但我假设 OP 想要对之前的 JavaScript 进行某种操作(未在问题中发布)表单提交。
【解决方案3】:

从您向我们展示的内容来看,javascript 并不是必需的,我会在单个 php 页面上尝试一下,看看它是否有效:

为测试目的创建一个 test.php 文件:

<?php
if($_POST){
    foreach($_POST as $key=>$value){
        echo "$key: $value<br />";
    }
}else{
    <form action="test.php" method="post">
        <input type="text" value="1" name="name1" />
        <input type="text" value="2" name="name2" />
        <input type="submit" value="submit" name="Submit" />
    </form>
}
?>

如果它确实有效,请慢慢进入您当前的表单设置,看看是什么破坏了它。如果它不起作用,则有更大的事情在起作用。

【讨论】:

  • 试过了,但还是不行。当我点击提交时,它给出了 HTTP 状态 404 错误
  • 所以您创建了一个新的 test.php 文件,当您提交该文件时,它会转到 test.php 并且什么都没有出现?这听起来像是提交到错误的页面。检查你的 URL,它是否真的进入了正确的 test.php 页面?
  • 是的,我创建了一个新的 test.php,并将表单操作中的名称更改为 test.php。提交后显示 404 错误。 url 是 localhost:8080/sampleproj/test.php- 所以它访问正确的文件
  • 404 表示未找到该页面。这不是代码错误,而是服务器错误。未找到它正在访问的文件。它基本上是在说“test.php 文件不存在”。坦率地说,这是不可能的。我的猜测是,在你提交 URL 更改到 localhost:8080/test.php 之后,这是不正确的。
  • 我在示例项目中有我的 test.php(带有上面的代码)。点击提交后,表单被重定向到 test.php(form action = test.php) 所以它访问 localhost:8080/sampleproj/test.php
【解决方案4】:

你现在应该做两件事。

  1. 删除 JavaScript 函数以提交表单。这不是必需的(或必要的)。提交按钮的默认行为是……嗯……提交。您无需使用 JavaScript 帮助它。
  2. 使用error_reporting(E_ALL)启用错误显示。

完成这两项操作后,您应该能够更轻松地调试和评估问题。

【讨论】:

  • 我添加了 echo error_reporting(E_ALL);在php文件中。提交后仍然显示空白页面。所以我需要检查错误日志中的错误还是会显示在网页中
【解决方案5】:

将你的 php 代码放在 php 标签中!

<?php

foreach($_POST as $field => $value)
{
  echo $field ." = ." $value.'<br />';
}

?>

如果你这样做了

<?php
  print_r($_POST);
?>

你得到了什么? 如果这仍然不起作用,您的服务器是否解析 php?

创建文件 test.php 并直接访问它http://localhost/test.php 或任何你的 URL

<?php
echo 'Hello';
?>

如果这不起作用..这是一个完全不同的问题

【讨论】:

  • @Shilpa 尝试 print_r($_POST) 或 var_dump($_POST) 并告诉结果(请参阅我的更新答案)
  • 我尝试了 print 和 var_dump,提交后仍然是空白页。
【解决方案6】:

您可以使用带有fsubmit 库的 PHP 提交 HTML 表单。

例子:

require_once 'fsubmit.php';
$html = "<form action ='res.php' method='post'><input type='text' name='name'/></form>";
$form = new Fsubmit();
$form->url = 'http://submit_url_here.com';
$form->html = $html;
$form->params = ['name'=>'kokainom'];
$response = $form->submit();
echo $response['content'];

【讨论】:

    猜你喜欢
    • 2017-08-28
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    相关资源
    最近更新 更多