Typo3 v4.5.30是否自动转义字符串?
我正在尝试调试一个问题(不是我自己的代码),当项目重新保存时,字符串会被转义并重复转义 代码使用mysql\u real\u escape\u字符串,但即使禁用了魔引号,调用我的操作时post变量已经被引用,因此对mysql\u real\u escape\u字符串的调用将引号加倍。然后每次重新保存项目时,越来越多的斜杠堆积起来 因此,我需要确保项目在进入数据库之前转义(一次),但在页面上显示时取消转义 我的行动是这样开始的:Typo3 v4.5.30是否自动转义字符串?,typo3,mysql-real-escape-string,extbase,magic-quotes-gpc,Typo3,Mysql Real Escape String,Extbase,Magic Quotes Gpc,我正在尝试调试一个问题(不是我自己的代码),当项目重新保存时,字符串会被转义并重复转义 代码使用mysql\u real\u escape\u字符串,但即使禁用了魔引号,调用我的操作时post变量已经被引用,因此对mysql\u real\u escape\u字符串的调用将引号加倍。然后每次重新保存项目时,越来越多的斜杠堆积起来 因此,我需要确保项目在进入数据库之前转义(一次),但在页面上显示时取消转义 我的行动是这样开始的: public function adminAction() {
public function adminAction() {
$prizes = $_POST['tx_xxx_bingofrontend']['prize'];
//at this point my prize[] elements are already quoted, why?
foreach ($prizes as $key => $prize) {
foreach ($prize as $field => $value) {
// echo "Magic quotes is " . (get_magic_quotes_gpc() ? "ON" : "OFF");
// echo strip_tags($value) ;die;
// OFF gets printed
$cleanedValues[$field] = mysql_real_escape_string(strip_tags($value));
}
.... more code
我使用的是typo3 v4.5.30,是否存在typo3设置或可能在某个地方进行的扩展api调用,在触发操作代码之前调用转义
如何确保字符串正确显示和重新保存
谢谢
更新:
我现在有了这个代码:
public function adminAction() {
$postsvars = t3lib_div::_POST();
$prizes = $postsvars['tx_xxx_xxfrontend']['prize'];
foreach ($prizes as $key => $prize) {
foreach ($prize as $field => $value) {
//echo "Magic quotes is " . (get_magic_quotes_gpc() ? "ON" : "OFF");
// echo strip_tags($value) ;die;
$cleanedValues[$field] = $GLOBALS['TYPO3_DB']->quoteStr(strip_tags($value),'tx_xxx_domain_model_prize' );
它在每次更新和创建之前运行,并正确地添加了斜杠(我不确定它在调用中如何使用我的tablename,但它似乎工作得很好)。但当我阅读资料并删除斜线以在模型中显示时:
public function UnEscapePrize( ){
$this->setTitle(stripslashes( $this->getTitle()));
..... other vars get un-escaped
}
删除斜杠会保存到数据库中,这不是我想要的。我只想删除它们,以便查看。我怎样才能做到
更新2:
还是我什么都不担心?当使用默认的更新和添加方法时,typo3 4.5.3/extbase 1.3是否容易受到sql注入攻击?若它使用字符串concat来拼凑sql,那个么它可能是,但若它使用prepared语句,它就不是。我来自一个仍然使用大量字符串concat sql的地方,所以这种担心对我来说只是第二天性。TYPO3自动转义POST变量,这是正确的 在typo3中访问它们的正确方法是
t3lib\u div::\u POST($name)
,这将使它们不被替换
请参阅。好的,如果我直接从发布中获取它们,它们将被转义,然后我将它们粘贴到数据库中,然后当它们被读取时,我如何取消它们的显示,以便当它们再次显示时,没有斜线。现在,当项目从网页重新保存时,斜杠会堆积起来。不要使用$\u POST。就这么简单。这真的是一个基于extbase的扩展吗?扩展可以基于extbase、pi_-base或pur-PHP代码。我希望你们的分机能扩展pi_基地。如果使用f.e.exec\U INSERTquery mysql\U real\U escape\U字符串将自动处理。