Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typo3 v4.5.30是否自动转义字符串?_Typo3_Mysql Real Escape String_Extbase_Magic Quotes Gpc - Fatal编程技术网

Typo3 v4.5.30是否自动转义字符串?

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() {

我正在尝试调试一个问题(不是我自己的代码),当项目重新保存时,字符串会被转义并重复转义

代码使用mysql\u real\u escape\u字符串,但即使禁用了魔引号,调用我的操作时post变量已经被引用,因此对mysql\u real\u escape\u字符串的调用将引号加倍。然后每次重新保存项目时,越来越多的斜杠堆积起来

因此,我需要确保项目在进入数据库之前转义(一次),但在页面上显示时取消转义

我的行动是这样开始的:

 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字符串将自动处理。