我想创建一个简单的登录门户,但有一些问题

时间:2017-06-24 11:12:30

标签: php html mysql

我创建了一个简单的登录门户网站但有一些问题,我尝试了几种解决方案。

这是我的login.php文件。

<!DOCTYPE html>
<html>
<head>
<title>Login Page</title>
    <link rel="short icon" href="sopraicon.ico">
<link rel="stylesheet" href="login.css">
 <body>
<form method="POST" action="process.php" >
<img src="soprasteria.png" alt="sopra steria" width="20%" align="center"> 

<img src="share.png" alt="share" id="img1" align="right">
       <a href="">  <img src="search.png" id="img1" align="right"></a>
 <input type="text" class="search" name="search" placeholder="Search.."><br>
 <br> <div class="sidediv"></div>
 <p class="data">Sign in to Sopra Steria</p><br>
  <h3 class="h3">User Login</h3>
 <br><img src="Login.jpg" alt="login iamge" height="150px" width="170px" 
  align="left" style="padding-left:160px"><br>&emsp;&emsp;<b>Username:</b>
 <br>&emsp;&emsp;<input type="text" placeholder="User Name" name="username" 
  required id="text">
 <br>&emsp;&emsp;<b>Password:</b><br>&emsp;&emsp;<input type="password" 
  placeholder="Enter Password" name="password" required id="text" min="8">
    <br>&emsp;&emsp;<button type="submit" id="logbtn" 
  name="submit">Login</button><br>
  <div class="bottomdiv"></div>

  </form>
  </body>
  </head>
  </html>

这是我的process.php文件

    <?php
     $username = $_POST['username'];
     $password = $_POST['password'];

     $username = stripcslashes($username);
     $password = stripcslashes($password);
      $username = mysql_real_escape_string($username);
    $password = mysql_real_escape_string($password);
       mysql_connect("localhost","root","");
     mysql_select_db("login");
    $result = mysql_query("select * from users where username='$username' 
     and password='$password'") or die("failed to query 
     database".mysql_error());
    $row = mysql_fetch_array(result);
     if($row['username']==$username && $row['password']== $password){
    echo"login success";
   }
    else{
   echo"failed";
   }
       ?>

但是我在WAMP服务器上遇到错误,如图所示。 请帮帮我..谢谢。

Error Image

4 个答案:

答案 0 :(得分:1)

您必须检查表中是否有任何包含此详细信息的记录,而不是将用户输入与获取数据匹配。 你必须检查

if(mysql_num_rows ==1)
{
return true; //or redirect user to home page
}
else
{
return false;
}

答案 1 :(得分:0)

首先你会收到警告,告诉你放弃mysql *函数,转而使用mysqli函数。

然后,您会收到错误,即使用标准用户连接到数据库,并且没有密码失败。

在使用mysql_real_escape_string 之前连接到数据库。 当使用转义函数时没有建立连接时,php将尝试使用默认用户进行连接,默认用户通常会失败。

- 除此之外:stripslashes是一个不应该需要的函数,因为它试图使用的魔法引用在几年前被删除了。 现在,当它包含en \

时,你会弄乱密码

密码:它没有以纯文本形式存储,是吗?

答案 2 :(得分:0)

我测试了你的代码它会正常工作,但你面临的错误是因为你使用PHP 5.4函数mysql_escape_string()已被弃用。所以你需要在mysql驱动文件中做一些更改。转到system \ database \ drivers \ mysql \ mysql_driver.php并找到escape_str函数并用这段代码替换函数代码:

 public function escape_str($str, $like = FALSE)
 {
  if (is_array($str))
  {
   foreach ($str as $key => $val)
      {
    $str[$key] = $this->escape_str($val, $like);
      }

      return $str;
     }

  $str = is_resource($this->conn_id) ? mysql_real_escape_string($str, $this->conn_id) : addslashes($str);

  // escape LIKE condition wildcards
  if ($like === TRUE)
  {
   return str_replace(array($this->_like_escape_chr, '%', '_'),
      array($this->_like_escape_chr.$this->_like_escape_chr, $this->_like_escape_chr.'%', $this->_like_escape_chr.'_'),
      $str);
  }

  return $str;
 }

答案 3 :(得分:0)

试试这个

$password=$_POST['password'];
$username = stripcslashes($username);
$password = stripcslashes($password);
if(!empty($username)&&!empty($password))
{   
$query="SELECT username,password FROM users WHERE username='$username' 
    AND password='$password' ";


if($query_run= mysqli_query($conn, $query)){
    $query_num_rows= mysqli_num_rows($query_run);
    if($query_num_rows==NULL){   
        echo "Invalid Username/password combination";
    }   elseif($query_num_rows==1){
        while ($row=mysqli_fetch_assoc($query_run)) {

            $username=$row['username'];
            $password=$row['password'];
            echo' you are logged in <br>';
            echo 'Welcome'.$username;


        }


        }

    }
}else{
echo 'Please fill all fields';
}        



}
}