我想创建一个简单的登录门户网站,但有一些问题
我创建了一个简单的登录门户网站,但有一些问题,我尝试了几个解决方案。我想创建一个简单的登录门户网站,但有一些问题
这是我的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>  <b>Username:</b>
<br>  <input type="text" placeholder="User Name" name="username"
required id="text">
<br>  <b>Password:</b><br>  <input type="password"
placeholder="Enter Password" name="password" required id="text" min="8">
<br>  <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的服务器上,你在图像中看到。 请帮我..谢谢。
首先你会得到一个警告信息,告诉你放弃MySQL的*功能赞成的mysqli功能。
然后,您会看到使用标准用户连接到数据库的错误,并且没有密码失败。
连接到数据库之前您使用mysql_real_escape_string。 当使用转义函数时没有连接时,php会尝试使用默认用户进行连接,这通常会失败。
- 除此之外:stripslashes是一个不应该需要的功能,因为它试图展开的魔术引号已从多年前的php中删除。 现在,你搞砸密码时,它会包含en \
而密码:它不是以纯文本存储的,是吗?
您必须检查表中是否有此详细信息的记录,而不是匹配用户输入与提取数据。 你必须检查
if(mysql_num_rows ==1)
{
return true; //or redirect user to home page
}
else
{
return false;
}
对不起,你必须在mysql_num_rows中传递你的结果。 –
我测试你的代码将工作正常,但错误你正面临着因为您使用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;
}
试试这个
$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';
}
}
}
在* mysql_real_escape_string之前建立mysql连接。顺便说一下,考虑将代码升级到'mysqli',因为'mysql'在PHP 5.5.0中被弃用。 –
为了在Stack Overflow上获得最佳效果,请不要发布错误消息的图像,特别是当它们太小而无法阅读时。这是一个好主意,当你收到错误信息时,要研究它们并弄清楚它们的含义。 PHP已经出现了大约二十年,错误信息非常丰富。 –
另外,在这些猖獗的网络犯罪**的日子里,只有一个傻瓜做他自己的密码验证**。请,请阅读。 http://php.net/manual/en/faq.passwords.php –