我在PHP中尝试简单的Web表单操作,输入字段输出值中给出的任何输入都是1
。在username
password
不存在时,isset
,$_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;
?>
答案 0 :(得分:11)
<?php
/*** if else in a single statement ****/
$username = isset($_POST["username"]) ? $_POST["username"] : "";
$pass = isset($_POST["password"]) ? $_POST["password"] : "";
echo $username." - ".$pass;
?>
答案 1 :(得分:7)
不要使用
$usernmae=isset($_POST["username"]);
$pass=isset($_POST["password"]);
只放
$usernmae=$_POST["username"];
$pass=$_POST["password"];
因为 isset()给出布尔值,即1或0.在您的情况下 isset($ _ POST [&#34;用户名&#34;])检查您是否已将值放在此字段中。如果用户名字段中有一些值,则返回1,否则返回0.
答案 2 :(得分:5)
应该是
$usernmae= $_POST["username"];
$pass= $_POST["password"];
echo $usernmae," ",$pass;
如果评估为isset($_POST["username"])
,则{p> isset($_POST["password"])
和1
会返回TRUE
,因为isset()
返回布尔值。
答案 3 :(得分:3)
其他人告诉你 如何 来解决问题。我会告诉你 问题。
您需要了解以下事项:
当隐式将布尔值转换为字符串时,PHP acts a bit weird。
$testVar = false;
echo (string)$testVar; //will output a empty string (as that evaluates to false)
$testVar = true;
echo (string)$testVar; //will output 1 (as that evaluates to true)
isset()
如何运作根据PHP Manual,
如果[作为参数提供的变量]存在且其值不是NULL,则返回
TRUE
,否则返回FALSE。
众所周知,{/ 1}}参数可用于PHP脚本,
$_POST
属性指向PHP脚本如果表单中字段的action
属性为name
,则可以在提交表单后从PHP脚本中访问此信息,如下所示:
"username"
但是,如果处理$_POST["username"]
参数的PHP脚本与HTML表单位于同一文件中,则在最初访问脚本时,脚本将无法使用$_POST
个参数。
如果您在没有参数时尝试访问$_POST
参数,则结果为$_POST
。
通过对上述三件事的理解,我们可以推断出您案件中发生的事情。
当您的文件第一次加载到浏览器时,PHP解释器必须先解释它。但是在这第一次,没有Undefined index
变量存在。因此,当您尝试访问$_POST
个参数时,会导致$_POST
错误。
当您将Undefined index
表达式包裹在$_POST["..."]
中时,isset()
将返回isset()
,因为参数根本就不存在。由于FALSE
转换为空字符串(FALSE
),因此您的""
语句不会显示任何内容。
当您提交表单时,echo
来电将返回isset()
,因为这次会出现TRUE
个参数。如上所述,$_POST
在转换为字符串时变为TRUE
。因此,您获得输出"1"
。
在访问1
参数之前,您必须始终检查。
$_POST
或简写:
$username = "";
if (isset($_POST["username"])) {
$username = $_POST["username"];
}
答案 4 :(得分:2)
为什么使用isset($_POST["username"])
?如果测试变量包含NULL值,则isset()
函数返回false,否则返回true。
尝试
if(isset($_POST))
{
$usernmae=$_POST["username"];
$pass=$_POST["password"];
echo $usernmae," ",$pass;
}
答案 5 :(得分:2)
您需要先检查值是否存在。如果你不这样做,你就会收到错误。
因此isset($_POST['VALUE'])
如果它存在,那就去吧。如果没有,请设置为&#34;清空&#34;
<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
/**
* Created by PhpStorm.
* User: Devunne3
* Date: 25/09/14
* Time: 12:32
*/
$usernmae=isset($_POST["username"])?$_POST['username']:'';
$pass=isset($_POST["password"])?$_POST['password']:'';
echo $usernmae," ",$pass;
?>
答案 6 :(得分:2)
你的问题就在这一行
$usernmae=isset($_POST["username"]);
$pass=isset($_POST["password"]);
您正在保存isset()
的值,这是一个布尔值0或1。
因为设置了2个参数,所以你得到1(真)。
你想这样做:
if(isset($_POST["username"])){
$usernmae = $_POST['username'];
}
和密码相同。
答案 7 :(得分:2)
试试这个。以及你获得1和1的原因,因为你正在使用
$usernmae=isset($_POST["username"]);
这是你设定的一种方式。
if(!empty($_POST['submit'])){
$usernmae=$_POST["username"];
$pass=$_POST["password"];
echo $usernmae," ",$pass;
}
答案 8 :(得分:2)
用
替换底部的3行$username=isset($_POST['username'])?$_POST['username']:'';
$pass=isset($_POST['password'])?$_POST['password']:'';
echo $username," ",$pass
无论是否设置了变量,isset()都会返回boolean。这使它返回1.在我的答案中,如果字段有值,它将回显值,如果没有,将回显空字符串
答案 9 :(得分:1)
if(isset($_POST) && !empty($_POST))
{
$usernmae=$_POST["username"];
$pass=$_POST["password"];
echo "User Name is : ".$usernmae,"Password is : ".$pass;
}