PHP $_POST 不显示数据 - 显示示例代码

Posted

技术标签:

【中文标题】PHP $_POST 不显示数据 - 显示示例代码【英文标题】:PHP $_POST doesn't display data - Example code shown 【发布时间】:2013-08-16 19:05:52 【问题描述】:

我是 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 参数不显示数据。非常感谢任何帮助。

【问题讨论】:

而示例 2 来自 action.php? 尝试 print_r($_POST) 查看 _POST 数组中的所有数据,如果不存在,则说明您做错了 您的 HTML 文件的名称是什么(带有 HTML 表单)?如果不是action.php,那你能把action.php的内容贴出来吗?怀疑你的问题在那里。 顺便说一句,我建议您找到一个更好的教程网站。 w3Schools 因方法过时以及完全不准确而臭名昭著。重要的是,您不要一开始就走错了路。当您准备好进入数据库访问时,请查找更现代的教程资源! &lt;?php echo "hello"; ?&gt; 这样的东西有用吗?您的 PHP 安装可能存在问题,并且该页面可能未解析。浏览器会将&lt;?php ?&gt; 解释为标签并将其隐藏。检查结果页面的来源,以防万一。 【参考方案1】:

W3Schools (PHP Form Handling) 没有提到的是,整个 (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 ); 并放置在&lt;?php?&gt;标签内如:

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

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


请访问this answer

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

【讨论】:

你好 Fred,即使他们不这样做,如图所示.. 但它适用于他们! de.php.net/manual/en/tutorial.forms.php @MonkeyZeus 所以我也在附和它,但它没有用。 OP没有提到他/她“如何”设置它。如果 OP 遵循 W3schools 的示例到“T”,它将不起作用。 @fishspy 你好。嗯……你有没有机会“测试”过它?猴子宙斯也是? @Fred 还好他没有使用 W3 学校 你好 Fred,我已经在我的系统中保存了这 2 个 php 文件,我不知道如何运行它.. 需要保存在服务器中什么的..?我正在使用Xampp ..你也可以解释一下吗..【参考方案2】:

在您的&lt;form&gt; 标签中,“action”是您的 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.

【讨论】:

它仍然不起作用..我正在尝试制定一个示例,如de.php.net/manual/en/tutorial.forms.php 所示...这是 HTML 文件
// 你的名字:

你的年龄:

这是 PHP 文件 //action.php 你好 。你是 岁。
你好 MonkeyZeus.. 我试过了,但它显示了;错误报告(E_ALL);你好 。你几岁了。 你好 MonkeyZeus,它没有显示任何错误!输出是 Hi 。你几岁了。还是发现数据没有显示出来!! 您只是访问action.php页面还是每次都重新提交表单? 我正在重新提交表单.. 为您提供更多详细信息.. 我将 PHP 保存在“D:\Arun C\xampp\php”下.. 这个程序保存在“D :\RubyProgrammer\Projects\PHP" .... 每次我重新提交表单.. 它会进入 PHP 页面,但没有显示任何数据!【参考方案3】:
    'post''POST' 在表单标签中都可以正常工作。

    action.php中应该有以下内容

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

    如果还是这样,请转到 php.ini 并将错误设置为 E_ALL 和 E_STRICT

并检查错误。

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

【讨论】:

你好 Rahul,php.ini 有这个内容 -- error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT 1.将错误报告为 E_ALL & ~E_DEPRECATED & E_STRICT 2. 只需告诉您在 wamp 或 xamp 或任何其他服务器上运行它?【参考方案4】:

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

第 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 的要求进行了编辑

【讨论】:

你好洗碗机,你能告诉我如何运行上面的代码吗?上面两个 Javascript 函数都来自 udner index.php? 包含第一个 javascript 并测试表单。如果您的输出正确显示,则将其替换为第二个。是的,两者都在 index.php 中。第一个函数会在不重定向页面的情况下提醒您输出,第二个函数是对表单的实际验证。【参考方案5】:

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

【讨论】:

以上是关于PHP $_POST 不显示数据 - 显示示例代码的主要内容,如果未能解决你的问题,请参考以下文章

$_POST 为空,但是 php://input 显示存在的值 [重复]

php接收POST数据并循环输出的代码

PHP $_POST 变量

PHP避免刷新页面重复提交

显示显示结果的计数

PHP $_GET与$_POST 变量