
[英]How do I get these strange characters when I try to “echo” the html string?
[英]When I try to echo a posted string, the output is a boolean
我试图提高我的PHP技能,当我发布姓氏和名字时,echo输出1 1
。 不管我放什么,回声都是1 1
。 为什么我的代码这样做?
<?php
error_reporting(E_ALL); ini_set('display_errors', '1');
if (isset($_POST['firstname'])&& isset($_POST['lastname'])){
$firstname=isset($_POST['firstname']);
$lastname=isset($_POST['lastname']);
echo $lastname;
echo $firstname;
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<form action="practice2.php" method="post" name="user" >
Please Enter your First Name: <br>
<input type="text" name= "firstname"id="firstname">
<br>
Please Enter your Last Name: <br>
<input type="text" name="lastname" id="lastname">
<input type="submit" name="Submit">
</form>
</body>
</html>
isset
方法返回一个布尔值,该布尔值在打印时将向您显示1.您想要的是:
if (isset($_POST['firstname'])&& isset($_POST['lastname'])){
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
echo $lastname;
echo $firstname;
}
如果他们在你的设置你已经检查if
声明,没有任何理由在其内再次检查。
您可以通过尝试更轻松地查看原始代码的行为
# this will output "1". isset is returning "true" in your original example
echo true;
为了补充他们已经说明手头问题的其他答案,请提交以下内容,以展示如何将代码减少70%。
您可以替换整个块:
if (isset($_POST['firstname'])&& isset($_POST['lastname'])){
$firstname=isset($_POST['firstname']); // issue has been addressed about this
$lastname=isset($_POST['lastname']); // issue has been addressed about this
echo $lastname;
echo $firstname;
}
并使用三元运算符和回波,所有这些都汇总为一个
( 回显/检查/分配 ):
echo $firstname=isset($_POST['firstname']) ? $_POST['firstname'] : '';
echo $lastname=isset($_POST['lastname']) ? $_POST['lastname'] : '';
或使用!empty()
echo $firstname=!empty($_POST['firstname']) ? $_POST['firstname'] : '';
echo $lastname=!empty($_POST['lastname']) ? $_POST['lastname'] : '';
如果要保留值并在输入中回显,则可以使用三元运算符并将其用作值:
旁注:仅当您使用了如上所述的三元运算符时,此方法才有效。
Please Enter your First Name: <br>
<input type="text" name= "firstname"id="firstname" value="<?php echo !empty($_POST['firstname']) ? $_POST['firstname'] : ''; ?>">
<br>
Please Enter your Last Name: <br>
<input type="text" name="lastname" id="lastname" value="<?php echo !empty($_POST['lastname']) ? $_POST['lastname'] : ''; ?>">
要了解三元运算符,请访问:
使用isset()
可以检查是否已设置值,但是不会获得它的值。 它返回一个布尔值-在您的情况下为true
,其echo
为1。
代替
$firstname=isset($_POST['firstname']);
$lastname=isset($_POST['lastname']);
尝试
$firstname=$_POST['firstname'];
$lastname=$_POST['lastname'];
并且您应该获得所需的输出。
步骤1:检查按钮是否已提交(如果已提交)。 步骤2:使用$ _POST ['']从文本框中获取值。 步骤3:回显
<?php
if(isset($_POST['Submit'])){
$firstname =$_POST['firstname'];
$lastname = $_POST['lastname'];
echo $firstname . " " . $lastname;
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<form action="practice2.php" method="post" name="user" >
Please Enter your First Name: <br>
<input type="text" name= "firstname"id="firstname">
<br>
Please Enter your Last Name: <br>
<input type="text" name="lastname" id="lastname">
<input type="submit" name="Submit">
</form>
</body>
</html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.