通过使用php输入正确的密码将用户移动到另一个页面

时间:2014-11-07 10:02:18

标签: php

我有一个登录页面。我希望当用户输入正确的用户名和密码时,他想要为他打开的页面。如果密码和用户名不正确,他会在当前页面收到错误。 另一个问题是,当您首先打开页面时,您有一个PHP未定义的索引错误。

<form action="<?php echo $_SERVER["PHP_SELF"]?>" method="post">
       <div class="data">
       <label for="name">username: </label>
          <input type="text" name="UserName"/>
       </div>
       <div class="data">
       <label for="name">password: </label>
          <input type="password" name="PassWord"/>
       </div>
       <input type="submit" value="Log In" name="submit" id="submit"/>
<?php
$dbUserName = "alex";
$dbPassWord = "1234";
 $UserName = $_POST["UserName"];
 $PassWord = $_POST["PassWord"];
 if($UserName = $dbUserName&&$PassWord = $dbPassWord){
    //the code which moves the user to another page.
 }else echo "please enter the correct username and password";
?>
   </form>

感谢。

6 个答案:

答案 0 :(得分:3)

您必须将PHP代码移动到文件的开头才能在服务器端执行(这是正确的做法),以避免在设置标头之前输出错误。此外,您的条件是分配变量值(=)而不是比较值(==)。

可以使用的设置(未经测试)示例:

<?php
$dbUserName = "alex";
$dbPassWord = "1234";

if(isset($_POST['UserName']))
{
    $UserName = $_POST["UserName"];
    $PassWord = $_POST["PassWord"];

    if($UserName == $dbUserName && $PassWord == $dbPassWord)
    {
        header("Location: http://example.com/the/page/where/your/user/should/end/up");
        exit;
    }
    else
    {
      $error = true;
    }
} 
?>

<form action="<?php echo $_SERVER["PHP_SELF"]?>" method="post">
       <div class="data">
       <label for="name">username: </label>
          <input type="text" name="UserName"/>
       </div>
       <div class="data">
       <label for="name">password: </label>
          <input type="password" name="PassWord"/>
       </div>
       <input type="submit" value="Log In" name="submit" id="submit"/>
</form>
<?php if(isset($error)): ?>
please enter the correct username and password
<?php endif; ?>

答案 1 :(得分:2)

在你的if语句中,你不小心把单个&#39; =&#39;应该加倍的字符:

if($UserName == $dbUserName&&$PassWord == $dbPassWord){

答案 2 :(得分:2)

试试这个 -

<?php
$dbUserName = "alex";
$dbPassWord = "1234";
if (isset($_POST["UserName"]) && isset($_POST["PassWord"])) {
   $UserName = $_POST["UserName"];
   $PassWord = $_POST["PassWord"];
   if($UserName == $dbUserName && $PassWord == $dbPassWord){
      header('location:path/location');
      exit;
   } else echo "please enter the correct username and password";
}
?>

Undefined index错误即将发生,因为UserName&amp;在表单发布之前,password将不会出现在那里。所以添加了支票。

答案 3 :(得分:1)

在您的情况下,=是将值设置为变量(赋值运算符)的运算符。

使用=====您创建条件并检查值。

if($UserName == $dbUserName&&$PassWord == $dbPassWord) {

http://php.net/manual/en/language.operators.comparison.php

答案 4 :(得分:1)

与其他人说的一样,请使用==代替=

有关重定向的问题,请参阅Repox answer。

答案 5 :(得分:0)

if($UserName == $dbUserName && $PassWord == $dbPassWord){

正如phansen所说,你实际上是在使用赋值运算符,它总是等于true。