我有用于登录的页面。当我不使用用户名和密码的mysql_real_escape_string时。没问题。
但是当我使用带有用户名和密码的登录时,我不能进入索引页面,并且我得到页面找不到,并且当我刷新页面时,我得到select * from mysql_real_escape_string where 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";
}
?>发布于 2014-02-05 16:52:24
您描述的问题不可能来自添加mysql_real_escape_string()。因为这个函数只转义"mysql字符“。
所以你的问题一定出在别的地方。
您应该更改的一件事是(在location后面添加一个空格字符):
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*
发布于 2014-02-05 17:04:23
将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_
发布于 2014-02-05 16:54:11
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";
}https://stackoverflow.com/questions/21572344
复制相似问题