2

我是 PHP 新手,我尝试使用 w3 学校在表单上发布数据的示例..

它从不适合我......网页不显示任何数据,我尝试了几个论坛,也没有帮助......我仍然让它空着!

示例 #1:来自 HTML 代码的简单联系人

<form action="action.php" method="post">
 <p>Your name: <input type="text" name="name" /></p>
 <p>Your age: <input type="text" name="age" /></p>
 <p><input type="submit" /></p>
</form>

示例 #2:从我们的表单中打印数据

Hi <?php echo htmlspecialchars($_POST['name']); ?>.
You are <?php echo (int)$_POST['age']; ?> years old.

此脚本的预期输出可能是:

Hi Joe. You are 22 years old.

实际输出:

Hi . You are years old

Post 参数不显示数据。非常感谢任何帮助。

4

5 回答 5

1

在您的<form>标签中,“动作”是您发送 POST 数据的位置。那么你的文件结构看起来像这样吗?

//index.php
<form action="action.php" method="POST"> // <-- make sure to capitalize method="POST" as well
 <p>Your name: <input type="text" name="name" /></p>
 <p>Your age: <input type="text" name="age" /></p>
 <p><input type="submit" /></p>
</form>

.

//action.php
Hi <?php echo htmlspecialchars($_POST['name']); ?>.
You are <?php echo (int)$_POST['age']; ?> years old.

编辑

听起来您可能会在关闭的 PHP 中遇到错误。在 action.php 中尝试这个并重新提交页面。

//action.php
<?php
error_reporting(E_ALL);
?>
Hi <?php echo htmlspecialchars($_POST['name']); ?>.
You are <?php echo (int)$_POST['age']; ?> years old.

编辑 2

听起来您可能会在关闭的 PHP 中遇到错误。在 action.php 中尝试这个并重新提交页面。

//action.php
<?php
error_reporting(E_ALL);
?>
Hi <?php echo $_POST['name']; ?>.
You are <?php echo $_POST['age']; ?> years old.
于 2013-08-14T17:32:38.160 回答
1

W3Schools (PHP 表单处理)没有提到的是,整个 (2) 代码体需要位于单个文件中,或者位于 2 个单独的文件中,才能按预期工作。

但是,来自 W3Schools 和 OP 的代码并不相同,并且已被修改,使用htmlspecialchars(int)

如果您想使用htmlspecialchars,请在您的welcome.php文件中执行以下操作:

<?php
$fname = htmlspecialchars($fname);
?>

Welcome <?php echo $_POST["fname"]; ?>!<br>
You are <?php echo (int)$_POST['age']; ?> years old.

使用形式:

<html>
<body>

<form action="welcome.php" method="post">
Name: <input type="text" name="fname">
Age: <input type="text" name="age">
<input type="submit">
</form>

</body>
</html> 

我在 W3Schools 网站上没有看到任何关于使用htmlspecialchars(int)

Hi <?php echo htmlspecialchars($_POST['name']); ?>.
You are <?php echo (int)$_POST['age']; ?> years old.

如果您希望使用htmlspecialchars ,那么您应该使用以下语法:
$fname = htmlspecialchars( $fname ); 并放置在<?php?>标签中,例如:

<?php
$fname = htmlspecialchars( $fname );
?>

注意:我对从我自己的计算机上运行 Web 服务器几乎一无所知,但是从我在这里找到的信息中 提到,为了访问您的 PHP 文件,您需要http://localhost在您的 Web 浏览器的地址栏和您所在的文件夹中输入文件在。


请访问此答案

由于某种原因,StackOverflow 不允许我在该页面上插入代码。

于 2013-08-14T18:07:18.967 回答
0
  1. 'post''POST'在表单标签中都可以正常工作。
  2. 以下内容应在 action.php 中

     Hi <?php echo htmlspecialchars($_POST['name']); ?>.
    
     You are <?php echo (int)$_POST['age']; ?> years old.
    
  3. 如果你仍然得到这个然后去php.ini并将你的错误设置为 E_ALL 和 E_STRICT

并检查错误是什么。

很可能它现在应该可以工作了......

于 2013-08-14T17:43:06.930 回答
0

在您的表单中检查它是否没有发送空值。

第 1 步将以下代码复制并粘贴到您的文本编辑器中并运行它。它将允许您在不重定向页面的情况下测试表单中的值。

以下代码应在 index.php 中

<form action="action.php" method="POST" onsubmit="return validate()">
    <p>Your name: <input type="text" name="name" id="name"/></p>
    <p>Your age: <input type="text" name="age" id="age"/></p>
    <p><input type="submit" /></p>
</form>

<script type="text/javascript">
    function validate(){
        var name=document.getElementById("name").value;
        var age=document.getElementById("age").value;
        alert ("Name="+name+" age="+age);
        return false;
    }
</script>

此代码将检查是否正确输入了值,而无需将页面重定向到 action.php。

第 2 步 如果您从前面的代码中获得了所需的输出,那么您可以用下面的代码替换 validate 函数。(替换脚本标签之间的所有内容

    function validate(){
        var name=document.getElementById("name").value;
        var age=document.getElementById("age").value;
        if (name==null || name==""){
            return false;
        }
        if (age==null || age==""){
            return false;
        }
        return true;
    }

如果表单中同时填写了姓名和年龄,则提交现在将重定向到 action.php

第 3 步 在 action.php 中使用以下代码。

<?
//These code goes in action.php
extract ($_POST);
echo "Hi $name. You are $age years old";
?>

根据 OP 的要求进行了编辑

于 2013-08-14T17:51:32.053 回答
0

只需确保您的表单从您的服务器(http://localhost..)而不是表单位置本身(文件:///C:xampp..)运行。快乐编码

于 2016-10-09T04:39:34.440 回答