首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql_real_escape_string函数

mysql_real_escape_string函数
EN

Stack Overflow用户
提问于 2014-02-05 16:44:50
回答 3查看 487关注 0票数 0

我有用于登录的页面。当我不使用用户名和密码的mysql_real_escape_string时。没问题。

但是当我使用带有用户名和密码的登录时,我不能进入索引页面,并且我得到页面找不到,并且当我刷新页面时,我得到select * from mysql_real_escape_string where username= '‘和password = '’错误

表单页面

代码语言:javascript
复制
<?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
}
?>

而网页是

代码语言:javascript
复制
<?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";
}
?>
EN

回答 3

Stack Overflow用户

发布于 2014-02-05 16:52:24

您描述的问题不可能来自添加mysql_real_escape_string()。因为这个函数只转义"mysql字符“。

所以你的问题一定出在别的地方。

您应该更改的一件事是(在location后面添加一个空格字符):

代码语言:javascript
复制
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*

票数 0
EN

Stack Overflow用户

发布于 2014-02-05 17:04:23

mysql_affected_rows()替换为mysql_num_rows(),因为

代码语言:javascript
复制
int mysql_affected_rows ([ resource $link_identifier = NULL ] )

获取上次与link_identifier关联的INSERT、UPDATE、REPLACE或DELETE查询影响的行数。

代码语言:javascript
复制
int mysql_num_rows ( resource $result )

从结果集中检索行数。此命令仅对SELECT或SHOW等返回实际结果集的语句有效

通知

请记住,mysql_函数已弃用。您应该改用mysqli_

票数 0
EN

Stack Overflow用户

发布于 2014-02-05 16:54:11

php如下所示。

代码语言:javascript
复制
<?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";
  }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21572344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档