2011-03-22 94 views
0

我有这样的代码,以及完美的作品,但我想作一个简单的修改的mysqli - 问题mysqli_real_escape_string

<?php session_start(); 
require 'includes/f_banco1.php'; 
require '../PasswordHash.php'; 


function checkBd($sql, $db, $user, $codePass) { 
    $user = $_GET['userid']; //here 
    $codePass = $_GET['code'];//here 

    if(is_numeric($user)) { 

     ($sql = $db->prepare("select userid, code from password_reset where userid=? and code=?")); 

     $sql->bind_param('ss', $user, $codePass); 

     $sql->execute(); 

     $sql->bind_result($user, $codePass); 

     if ($sql->fetch()) { 
      $_SESSION['u_name']= sha1($user); 
      header("location: updatePass.php"); 
      return true; 
     } 
     else 
     echo "Não existe na BD"; 
     return false; 

    } 
    else 
    echo "Erro"; 

} 

checkBd ($sql, $db, $user, $codePass); 

?> 

我想这方面的变革

$user = $_GET['userid']; //here 
$codePass = $_GET['code'];//here 

$user = mysqli_real_escape_string($db, $_GET['userid']); 
$codePass = mysqli_real_escape_string($db, $_GET['code']); 

但随着这种改变代码简单停止工作,$用户的回声不显示任何东西

有什么想法吗?

谢谢

+0

的可能重复(http://stackoverflow.com/questions/1561586/are- php-mysqli-prepared-queries-bound-parameters-secure) – outis 2012-07-19 10:04:27

回答

1

你不需要那样做。您正在使用准备好的语句,它会自动转义变量。

+0

我不需要做scapes吗?好消息:) – user455318 2011-03-22 01:43:48

+0

@ user455318:如果你没有使用准备好的语句,你将需要逃脱 - 不要忘记:) – Jon 2011-03-22 01:44:46

+0

好的,谢谢你的帮助乔恩。问题解决了 – user455318 2011-03-22 01:46:22

0

如果你准备好你的陈述,你不需要逃避你的字符串。

注:?是PHP的MySQLi准备与安全绑定参数查询]您的数据库连接,必须打开使用mysqli_real_escape_string()