php$\u POST输出错误
我正在用PHP尝试简单的web表单操作,输入字段输出值中的任何输入都是php$\u POST输出错误,php,html,Php,Html,我正在用PHP尝试简单的web表单操作,输入字段输出值中的任何输入都是1。以及用户名,密码的未定义索引错误,当设置在$\u POST <html> <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post"> <input type="text" name="username"> <input type="password" name="password"> <in
1
。以及用户名
,密码
的未定义索引错误,当设置
在$\u POST
<html>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit"></form>
</html>
<?php
$usernmae=isset($_POST["username"]);
$pass=isset($_POST["password"]);
echo $usernmae," ",$pass;
?>
为什么要使用isset($\u POST[“username”])
?如果测试变量包含空值,则函数返回false,否则返回true
试着
if(isset($_POST))
{
$usernmae=$_POST["username"];
$pass=$_POST["password"];
echo $usernmae," ",$pass;
}
应该是
$usernmae= $_POST["username"];
$pass= $_POST["password"];
echo $usernmae," ",$pass;
isset($\u POST[“username”])
和isset($\u POST[“password”])
返回1
如果求值为TRUE
,因为isset()
返回布尔值。您需要先检查值是否存在。如果不这样做,您将得到一个错误。
因此isset($\u POST['VALUE'])
如果它存在,就得到它。如果不是,则设置为“空”
您的问题是这一行
$usernmae=isset($_POST["username"]);
$pass=isset($_POST["password"]);
您正在保存isset()
的值,该值为布尔值0或1
因为设置了2个参数,所以得到的是1(true)
您要执行以下操作:
if(isset($_POST["username"])){
$usernmae = $_POST['username'];
}
密码也是一样。试试这个。你得到1和1的原因是因为你在使用
$usernmae=isset($_POST["username"]);
这是一个你设定的理由
if(!empty($_POST['submit'])){
$usernmae=$_POST["username"];
$pass=$_POST["password"];
echo $usernmae," ",$pass;
}
不要使用
$usernmae=isset($_POST["username"]);
$pass=isset($_POST["password"]);
只放
$usernmae=$_POST["username"];
$pass=$_POST["password"];
因为isset()给出了布尔值,即1或0。在您的情况下,isset($\u POST[“username”])检查您是否在该字段中输入了值。如果用户名字段中有一些值,则返回1,否则返回0。将底部的3行替换为
$username=isset($_POST['username'])?$_POST['username']:'';
$pass=isset($_POST['password'])?$_POST['password']:'';
echo $username," ",$pass
无论变量是否设置,isset()都返回布尔值。这使它返回1。在我的回答中,如果该字段有值,它将回显该值,如果没有,它将回显空白字符串其他人告诉您如何解决该问题。我会告诉你问题出在哪里
问题
你需要知道以下几点:
PHP的布尔到字符串隐式转换
将布尔值隐式转换为字符串时
isset()
的工作原理
据报道,
如果[variable supplied as argument]存在且值不是NULL,则返回TRUE
,否则返回FALSE
尝试访问$\u POST参数时会发生什么情况
如您所知,$\u POST
参数可用于PHP脚本
action
属性指向PHP脚本name
属性为“username”
,则在提交表单后,您可以通过PHP脚本访问此信息,如下所示:
$_POST["username"]
但是,如果处理$\u POST
参数的PHP脚本与HTML表单位于同一个文件中,则在最初访问脚本时,脚本将无法使用$\u POST
参数
如果您试图在没有参数时访问$\u POST
参数,则结果是未定义索引
这里发生了什么事?
通过对以上三点的理解,我们可以推断出你的情况
当您的文件第一次加载到浏览器时,PHP解释器必须首先对其进行解释。但这是第一次,没有出现$\u POST
变量。因此,当您尝试访问$\u POST
参数时,将导致未定义索引
错误
当您将$\u POST[“…”]
表达式包装在isset()
中时,isset()
将返回FALSE
,因为参数根本不存在。由于FALSE
被转换为空字符串(“”
),因此echo
语句不会产生任何可见内容
提交表单时,isset()
调用将返回TRUE
,因为此时存在$\u POST
参数。如上所述,TRUE
在转换为字符串时变为“1”
。因此,您将获得输出1
解决方案
在访问$\u POST
参数之前,必须始终进行检查
$username = "";
if (isset($_POST["username"])) {
$username = $_POST["username"];
}
或速记:
$username = isset($_POST["username"]) ? $_POST["username"] : "";
删除isset函数快速提示:
将发回当前URL,如果您决定稍后执行“漂亮URL”,这将非常有用。它还保留所有查询字符串参数。请详细说明原因,以改进您的答案:)isset()不“给出1或0”。它返回TRUE
或FALSE
。这是一个很好的建议,但是你应该提供一些解释。
$_POST["username"]
$username = "";
if (isset($_POST["username"])) {
$username = $_POST["username"];
}
$username = isset($_POST["username"]) ? $_POST["username"] : "";
if(isset($_POST) && !empty($_POST))
{
$usernmae=$_POST["username"];
$pass=$_POST["password"];
echo "User Name is : ".$usernmae,"Password is : ".$pass;
}