2017-06-24 308 views
-3

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

这是我的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

+0

在* mysql_real_escape_string之前建立mysql连接。顺便说一下,考虑将代码升级到'mysqli',因为'mysql'在PHP 5.5.0中被弃用。 –

+0

为了在Stack Overflow上获得最佳效果,请不要发布错误消息的图像,特别是当它们太小而无法阅读时。这是一个好主意,当你收到错误信息时,要研究它们并弄清楚它们的含义。 PHP已经出现了大约二十年,错误信息非常丰富。 –

+2

另外,在这些猖獗的网络犯罪**的日子里,只有一个傻瓜做他自己的密码验证**。请,请阅读。 http://php.net/manual/en/faq.passwords.php –

回答

0

首先你会得到一个警告信息,告诉你放弃MySQL的*功能赞成的mysqli功能。

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

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

- 除此之外:stripslashes是一个不应该需要的功能,因为它试图展开的魔术引号已从多年前的php中删除。 现在,你搞砸密码时,它会包含en \

而密码:它不是以纯文本存储的,是吗?

1

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

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

对不起,你必须在mysql_num_rows中传递你的结果。 –

0

我测试你的代码将工作正常,但错误你正面临着因为您使用PHP 5.4的功能函数mysql_escape_string()已过时。所以,你需要做的MySQL驱动file.Go系统\数据库\ 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; 
} 
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'; 
}   



} 
} 
相关问题