【问题标题】:Php form example is not workingphp表单示例不起作用
【发布时间】:2014-08-14 16:27:59
【问题描述】:

我正在学习 PHP,从一本书下面的例子中阅读它。 但是有些东西不像书中描述的那样工作,我不明白为什么不 我已经安装了 XAMP,并且正在运行 PHP 版本 5.5.9。 register_globals 没有像书中描述的那样设置(据我所知,这是 v 5.5.9 中的默认值)

有两个 .php 页面 第一页叫做form.php,书上没有说明放在哪里。 它在根目录下不起作用,所以我创建了 phpforms 文件夹并将其放置在那里

<html><head><title>First HTML Form</title></head>
<body>
<table cellpadding ="15"><td bgcolor="lightblue" >
<form action="/phpforms/form.php" method="POST" >
<p> Please enter your name: <br />  <input type="text" size=80 name="your_name">
<p> Please enter your phone: <br /> <input type="text" size=80 name="your_phone">
<p>
<input type=submit value="submit"><input type=reset value="clear">
</form>
</table></body></html>

第二页用于读取输入的值。

 <HTML><Head><Tile>Show me the data</Title></Head><body>
 <?php  extract($_REQUEST, EXTR_SKIP); // Extracting the form input
        print "Welcome to PHP $your_name<br />";  
        print "Can I call you at $your_phone<br />";
 ?>
 </body></HTML>

当我在第一页输入数据时,它没有出错。 但是,当我尝试在第二页中读取输入的数据时,它不起作用 我得到两行显示

注意:未定义变量:C:\xampp\htdocs\Peter.php 第 3 行中的 your_name *

注意:未定义变量:C:\xampp\htdocs\Peter.php 第 4 行中的 your_name *

它是对 php 表单的介绍,但它对于继续阅读这本书非常重要。我是新手,有人可以帮我吗?

【问题讨论】:

  • 你应该使用 $_POST["your_name"] 你没有 $your_name 变量
  • 等一下,提交按钮好像是针对'/phpforms/form.php',你的错误怎么和'Peter.php'有关?
  • 您在&lt;form action="/phpforms/form.php" method="POST" 中缺少一个结束&gt;&lt;form action="/phpforms/form.php" method="POST"&gt; 也是如此
  • @user219279:我已经重写了你所有的代码,我会给你一个答案,请阅读它,远离你的书。
  • 我认为你在书中的错误是正确的,在 post 命令中提到了错误的目标页面。读取数据的页面是 ./Peter.php 和 ./phpforms/form.php 用于输入数据。 Briosheje,写了一篇解释清楚的文章,但就像我的书帖仍然有 /phpforms/form.php 阅读 Bleuhounds 帖子后,我清楚地看到了错误(尽管在文本中 briosheje 是正确的,只有我的文件的示例代码它不起作用)。那么我现在应该奖励谁呢?

标签: php webforms


【解决方案1】:

只需在type="" 属性周围添加引号并在表单末尾插入&gt;

了解POST 方法的工作原理很重要。第一个表单上的 action 属性应该包含目标页面的 url。然后使用

$name = $_POST["your_name"];
echo $name;

在第二页显示信息。 $_POST 表单返回一个关联数组,因此所有键都对应于表单中的 name="" 属性,并且所有值都等于表单的值。请务必使用:if (isset($_POST["your_name"]){} 来处理任何异常。

【讨论】:

  • 我用来读取数据的文件是 Peter.php 我应该把它放在那里而不是 phpforms/form.php 因为 form.php 包含用于输入数据的表单
  • 啊哈这确实是书中的错误。我将 Actrion 属性更改为 /Peter.php 提交后它也打开了该页面,我现在也了解它是如何工作的。
  • 好吧,因为你的笔记很清楚我奖励你 stackexhange 积分。你的回答简短而中肯。 biobrehe 的另一个长答案,他花了很长时间才写出来,我也要感谢他。
【解决方案2】:

用引号将&lt;form&gt; 标签的类型属性括起来。 &lt;input type=submit value="submit"&gt;&lt;input type=reset value="clear"&gt; 应该 &lt;input type="submit" value="submit"&gt;&lt;input type=reset value="clear"&gt;

除此之外,您的代码似乎运行良好。

【讨论】:

    【解决方案3】:

    无论你在读什么书,我都建议你先检查一些 HTML 基础知识。

    无论如何,我在这里重写了整个代码,实际上是在尝试尽可能接近您的

    我所做的是:

    1. 为每个文件定义一个 DOCTYPE(这很重要,不是我们 有 HTML5。
    2. 语法错误已得到纠正,几乎无处不在(在两个脚本中)。
    3. 试图让这段代码响应速度更快。您使用的大多数标签都已弃用,例如cellpaddingbgcolor

    本教程的内容是使用 extract php 函数将传递给表单的值提取到一些临时变量中,以便不必使用 $_POST 存储每个变量,这是聪明,但你不经常看到。

    首先,检查 extract() 函数:http://php.net/manual/en/function.extract.php

    我做了什么,我重写了你的主要代码:

    应该有任何名称,在你的情况下,它应该是 peter.php,在 主目录中:

    <!doctype HTML>
    <html>
    <head>
        <meta charset="utf-8">
        <title>First HTML Form</title>
    </head>
    <body>
    <table>
        <tr>
            <td style="background: lightblue; padding: 1%;" >
                <form action="/phpforms/form.php" method="POST" >
                    <p> Please enter your name:</p> <br />  <input type="text" size=80 name="your_name">
                    <p> Please enter your phone:</p> <br /> <input type="text" size=80 name="your_phone">
    
                    <input type="submit" value="submit"><input type="reset" value="clear">
                </form>
            </td>
        </tr>
    </table>
    </body>
    </html>
    

    最重要的:

    • 字符集:现在,请定义一个字符集。
    • 您的表结构完全错误。它仍然没有意义,但至少它有一个正确的语法
    • 我已经更正了您遇到的所有语法错误:首先,您没有关闭您的&lt;form,其次,您没有关闭任何带有&lt;/p&gt;&lt;p&gt; 标签,第三,您没有关闭正确附上您的提交和重置按钮,但一些浏览器仍然会正确解释它。

    现在,为了让它工作,你应该在你的 C:\xampp\htdocs\ 文件夹中有一个名为 phpforms CONTAINING A FILE CALLED form.php 的文件夹强>。如果你没有这个,你的表单将永远不会工作,因为它是针对位于 /phpforms 中的 form.php 脚本强>文件夹。不要忘记您已在前面表格中的操作参数中定义了这一点,写为:action="/phpforms/form.php"

    此时,form.php 页面的结构应如下所示:

    <!doctype HTML>
    <html>
        <head>
            <meta charset="utf-8">
            <title>Show me the data</title>
        </head>
        <body>
         <?php  
            extract($_REQUEST, EXTR_SKIP); // Extracting the form input
            print "Welcome to PHP $your_name<br />";  
            print "Can I call you at $your_phone<br />";
         ?>
        </body>
    </html>
    

    它是如何工作的?

    在$_REQUEST 上使用extract() 将得到$_REQUEST 数组并根据已编译表单的名称将其分解为一系列变量。 由于您在前面的表单中将两个 输入 命名为 name="your_name"name="your_phone",因此 extract() 函数将解析变量 $ 中名为“your_name”的输入的值your_name 并将名为“your_phone”的输入值放入变量 $your_phone

    提取值后,您可以使用以下方法轻松打印它们:

    print "Welcome to PHP $your_name<br />";  
    print "Can I call you at $your_phone<br />";
    

    输出是这样的:

    主页(可能是peter.php?):

    一旦提交:

    【讨论】:

    • 嗯,我已经在 phpforms 文件夹(创建为 windows 文件夹)中有表单,重新检查了它。感谢您的解释。到目前为止,在我的书中

      并没有像

      那样关闭,但我看到了更多这样的小错误。除此之外,我仍然遇到同样的错误。然后我复制了你的php源代码,仍然出现同样的错误
    • 我不知道该奖励谁,你帮助了我,但我的设置不同 form.php 是表单,而 Peter.php 用于读取它。您的示例包含书中的错字,尽管您在文本中进行了解释。只有在阅读了下面的用户 Bleuhound 帖子后,我才明白错误是 POST 方法。
    • 你还不明白的是,你的书的例子并不想让你使用 $_POST :)
    猜你喜欢
    • 2013-08-02
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    相关资源
    最近更新 更多