在TYPO3中使用IP限制内容元素

时间:2016-10-28 09:31:33

标签: php typo3 typoscript typo3-7.6.x

我的要求是限制具有特定国家/地区的IP的内容元素(例如:奥地利)。这意味着从奥地利IP访问网站的人应该看到内容元素,对于所有其他用户,它应该被隐藏。我正在使用geoip解决方案来检查国家。我写了一个用户函数来实现这个功能。我写了一个小扩展,并根据国家设置隐藏的标志1和0。但是由于TYPO3缓存,我希望每次都清除缓存以反映前端的变化。我将扩展名包含为USER_INT,扩展名是不可缓存的。但不幸的是没有工作。功能工作,但由于缓存变化不能实时反映。

$uid = 175; // uid of the content element needs to be hidden         
$geoplugin = new \geoPlugin();
$geoplugin->locate();
$countryCode = $geoplugin->countryCode;
if( $countryCode == 'AT' ){
    $GLOBALS['TYPO3_DB']->exec_UPDATEquery('tt_content', 'uid IN ('.$uid.')', array('hidden' => 0));
}else{
    $GLOBALS['TYPO3_DB']->exec_UPDATEquery('tt_content', 'uid IN ('.$uid.')', array('hidden' => 1));
}

TYPO3中是否有任何方法可以限制特定IP /国家/地区的内容元素?或者你们可以建议一个解决方案来解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

根据访问者的国家/地区,Jost的解决方案比隐藏数据库中的元素要简单得多。按照您的方式,数据库可能会在每次用户访问时更改。 只需创建一个微扩展。