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 因方法过时以及完全不准确而臭名昭著。重要的是,您不要一开始就走错了路。当您准备好进入数据库访问时,请查找更现代的教程资源!
像<?php echo "hello"; ?>
这样的东西有用吗?您的 PHP 安装可能存在问题,并且该页面可能未解析。浏览器会将<?php ?>
解释为标签并将其隐藏。检查结果页面的来源,以防万一。
【参考方案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 );
并放置在<?php
和?>
标签内如:
<?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】:在您的<form>
标签中,“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 不显示数据 - 显示示例代码的主要内容,如果未能解决你的问题,请参考以下文章