我有登录页面。 当我不使用mysql_real_escape_string用户名和密码。没问题。
但是当我使用带有用户名和密码的mysql_real_escape_string时,我无法进入索引页面并且我找不到页面,当我刷新页面时,我从登录中选择*,其中username =''和password =''错误
表单页面
<?php
session_start();
if(!isset($_SESSION['username'])) {
?>
<html>
<body>
<form action="w.php" method="post">
Username :
<input type = "text" name="username" />
<br />
Pass :
<input type = "password" name = "password" />
<input type="submit" vale = "ok">
</form>
</body>
</html>
<?php
} else {
?>
<html>
<body>
you are login
<a href ="logout.php">logout</a>
</body>
</html>
<?php
}
?>
和网页
<?php
session_start();
$_POST = array_map('removeSlashes',$_POST);
function removeSlashes($value) {
if(is_array($value)) {
$value = array_map('removeSlashes',$value);
} else {
$value = stripslashes($value);
}
return $value;
}
$con = mysql_connect('localhost', 'root', 'a12345');
$db ='sess1';
$select = mysql_select_db($db);
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$query= "select * from login where username= '$username' and password = '$password' ";
echo "$query";
$result = mysql_query($query) or die (mysql_error());
if(mysql_affected_rows() > 0) {
$_SESSION['username'] = true;
header('location:index.php');
} else {
echo "wrong";
}
?>
答案 0 :(得分:0)
您所描述的问题可能源于添加mysql_real_escape_string()。由于此函数只能转义“mysql字符”。
所以你的问题必须在其他地方。
您应该更改的一件事是(在位置后添加空格字符):
header('location: index.php');
此外,你不应该使用mysql *函数,因为它被删除了。请改为查看mysqli或PDO!
修改强>
深入研究您的代码。其中大部分都违反了最佳做法。我建议你从一个好的教程开始。
也许其中一个吼叫: http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL http://webcodingtutorial.blogspot.se/2013/05/php-mysqli-secure-login-page-with.html http://forums.devnetwork.net/viewtopic.php?f=28&t=135287
所有这些都使用不同的mysqli解决方案。
如果您愿意,还可以搜索和使用PDO示例或其他内容。但我强烈建议您不要使用mysql *
答案 1 :(得分:0)
将mysql_affected_rows()
替换为mysql_num_rows()
,因为
int mysql_affected_rows ([ resource $link_identifier = NULL ] )
通过与link_identifier关联的最后一次INSERT,UPDATE,REPLACE或DELETE查询获取受影响的行数。
int mysql_num_rows ( resource $result )
从结果集中检索行数。此命令仅对SELECT或SHOW等返回实际结果集
的语句有效<强>通知强>
请记住,mysql_
函数已弃用。您应该使用mysqli_
代替
答案 2 :(得分:-1)
php在下面。
<?php
session_start();
$con = mysql_connect('localhost', 'root', 'a12345');
$db ='sess1';
$select = mysql_select_db($db);
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$query= "select * from login where username= '".$username."' and password = '".$password."' ";
echo "$query";
$result = mysql_query($query) or die (mysql_error());
if(mysql_affected_rows() > 0) {
$_SESSION['username'] = true;
header("Location: index.php");
} else {
echo "wrong";
}