我有一个Controller_Core类,目前什么都不做,但是当我想集中一些通用代码时,我可以把它放在那里。
我想知道是否有可能工作的另一种方式,当一个有一个类从Controller_Core扩展。假设一个典型的User有一个Controller_User类。在该类中,我希望自动向该类中每个函数提供的参数添加斜杠。这是可能的,而不声明一个函数foo
在Controller_Core,它做的东西像mysql_real_escape_string
?
换句话说,是否有可能从(ny)类中的方法中自动执行mysql-real-escape参数?
使用的语言是PHP。
- update
假设我有这样的代码:
class Controller_User extends Controller_Core
{
public function Login($sUsername, $sPassword)
{
# the add-slashes action should be done automatically at this point without calling a specific for such functionality (thus; $sUsername and $sPassword should be 'add-slashed' from RunFromEachCalledExtendedFunction)
$bValidationResult = // some further code
return $bValidationResult;
}
}
class Controller_Core
{
public function RunFromEachCalledExtendedFunction
{
# some code to determine which method was called, then add-slash those parameters
}
}
$oControllerUser = new Controller_User();
$bLoginResult = $oControllerUser->Login("my username' OR 1=1", "my pwd");
您不应该只在一个特定的控制器中转义数据,而是在您的所有查询中!
如果您真的不想担心SQL注入,请使用PDO。
如果你坚持使用mysql_query
-创建/使用一个数据库类包装器和使用mysql_real_escape_string
函数在执行查询的所有方法。像这样:
DB::select()->from('table')->where('field1', '=' $param1);
where()方法将使用mysql_real_escape_string
函数