这是我的代码:
<?php
$printhename = $_POST['username3'];
if(isset($_POST['username3']) && $printhename == "Carlos"){
echo "<h1 class='title123'>Hello $printhename </h1>";
}
else {
echo "<h1 class='title123'>You don't belong here!</h1>";
}
?>
我想要做的是,如果未设置“username3”,则会显示“您不属于此处”的消息。否则,如果设置了名称并且它是Carlos,则显示另一条消息。我必须以错误的方式执行此操作,因为它始终打印“Hello $ printhename”,而不管输入的名称是什么。
我希望有人能够对此有所了解。我是PHP的新手。
如果有帮助,这是我的HTML代码:
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
<div class="centerlogin">
<form class="formlogin" name="login" method="POST" action="testing.php">
<input type="text" placeholder="username" NAME="username3">
<input type="submit" name="login_submit" value="login">
</form>
</div>
</div>
答案 0 :(得分:2)
所以$ _POST ['username3']将始终 set ,因为它是HTML表单中的一个字段,并且始终由它提交。但是,如果访问者没有使用值填充表单字段,$ _POST ['username3']将为空。
所以你可能想测试空($ _ POST ['username3'])而不是isset($ _ POST ['username3'])...
因为你比较“不空和等于'卡洛斯'”你可以完全放弃“非空”状态。 (如果它等于卡洛斯,它不是空的!)
回顾一下Fred -iii的评论:
<?php
$printhename = $_POST['username3'];
if($printhename == "Carlos"){
echo "<h1 class='title123'>Hello $printhename </h1>";
}
else {
echo "<h1 class='title123'>You don't belong here!</h1>";
}
?>
希望这有帮助!
答案 1 :(得分:2)
这里有一些问题。
放置您最初为变量指定的POST数组,并使用POST数组来检查它是否等于&#34; Carlos&#34;在条件陈述中。
<?php
// $printhename = $_POST['username3']; // this throws an undefined variable
if(isset($_POST['username3']) && $_POST['username3'] == "Carlos"){
$printhename = $_POST['username3'];
echo "<h1 class='title123'>Hello $printhename </h1>";
}
else {
echo "<h1 class='title123'>You don't belong here!</h1>";
}
?>
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
<div class="centerlogin">
<form class="formlogin" name="login" method="POST" action="testing.php">
<input type="text" placeholder="username" NAME="username3">
<input type="submit" name="login_submit" value="login">
</form>
</div>
</div>
记住,&#34; Carlos&#34;和&#34;卡洛斯&#34;是两种不同的动物。
补充说明;如果你想避免显示&#34;你不属于这里!&#34;消息,您可以检查是否先设置了提交;以防你的HTML和PHP也在同一个文件中。
即:
<?php
if(isset($_POST['login_submit']) ){
if(!empty($_POST['username3']) && $_POST['username3'] == "Carlos"){
$printhename = $_POST['username3'];
echo "<h1 class='title123'>Hello $printhename </h1>";
}
else {
echo "<h1 class='title123'>You don't belong here!</h1>";
}
}
?>
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
<div class="centerlogin">
<form class="formlogin" name="login" method="POST" action="testing.php">
<input type="text" placeholder="username" NAME="username3">
<input type="submit" name="login_submit" value="login">
</form>
</div>
</div>
旁注:
使用!empty()
代替isset()
进行文字输入,它实际上更适合那些并且它会检查两者;如果它已经设置而不是空的。
答案 2 :(得分:0)
将您的PHP更改为:
<?php
if(isset($_POST['username3']))
{
$printhename = $_POST['username3'];
}
else
{
/* If it is not set, redirect client */
header('Location: /login.php');
}
if($printhename == "Carlos"){
echo "<h1 class='title123'>Hello $printhename </h1>";
}
else {
echo "<h1 class='title123'>You don't belong here!</h1>";
}
?>
答案 3 :(得分:0)
非常感谢您的回复 - 他们对我帮助很大,我感激不尽。
我不知道为什么我将方法更改为GET,之前是POST! 为了实现我想要的外观,我必须像这样处理代码。
介于“head”标签之间:
<?php
$printhename = $_POST['username3'];
?>
身体:
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
<div class="centerlogin">
<?php
if($printhename == "Carlos"){
echo "<h1 class='title123'>Hello $printhename </h1>";
}
if (isset($printhename) && $printhename != "Carlos") {
echo "<h1 class='title123'>You don't belong here!</h1>";
}
if(empty($printhename)) {
echo "<h1 class='title'>Log in, please</h1>";
}
?>
<form class="formlogin" name="login" method="POST" action="testing.php">
<input type="text" placeholder="username" NAME="username3">
<input type="submit" name="login_submit" value="login">
</form>
</div>
</div>
我可以做任何优化吗?