PHP:isset修改HTML元素

时间:2017-01-04 21:20:39

标签: php html

这是我的代码:

<?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>

4 个答案:

答案 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>

我可以做任何优化吗?