Php表单示例不起作用

时间:2014-08-14 16:28:00

标签: php webforms

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

有两个.php页面 第一页叫做form.php,这本书没有解释放在哪里。 它没有在root中工作,所以我创建了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>

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

 <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>

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

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

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

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

3 个答案:

答案 0 :(得分:1)

只需在type=""属性周围添加引号,然后在表单末尾插入>

了解POST方法的工作原理非常重要。您的第一个表单上的action属性应包含目标网页的网址。然后使用

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

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

答案 1 :(得分:0)

<form>标记的类型属性包含在引号中。 <input type=submit value="submit"><input type=reset value="clear"> 应该 <input type="submit" value="submit"><input type=reset value="clear">

除此之外,您的代码似乎工作正常。

答案 2 :(得分:0)

无论您关注哪本书,我都建议您先查看一些HTML基础知识。

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

我所做的是:

  1. 定义DOCTYPE foreach文件(这很重要,不是我们的 有HTML5。
  2. 语法错误已得到纠正,几乎无处不在(在两个脚本中)。
  3. 尝试使用一些effor来使这段代码更具响应性。您已使用的大多数代码已弃用,例如cellpaddingbgcolor
  4. 本教程的内容是使用提取 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>
    

    最重要的是:

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

    现在,为了使其正常工作,您应该在C:\ xampp \ htdocs \文件夹中找到一个名为 phpforms 的文件夹,其中包含一个CILE CALLED form.php 。如果你没有这样,你的表单永远不会工作,因为它的目标是 form.php脚本,它位于 / phpforms 文件夹。不要忘记您已在前面的表单中的操作参数中定义了该内容,请写下: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()函数将解析名为&#34; your_name&#的输入值34;在变量 $ your_name 中,以及名为&#34; your_phone&#34;的输入值进入变量 $ your_phone

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

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

    输出结果如下:

    主页(也许 peter.php ?):

    enter image description here

    提交后:

    enter image description here