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 打字稿否定条件IP/if-if-else_Typo3_Conditional Statements_Typoscript - Fatal编程技术网

Typo3 打字稿否定条件IP/if-if-else

Typo3 打字稿否定条件IP/if-if-else,typo3,conditional-statements,typoscript,Typo3,Conditional Statements,Typoscript,有可能用打字稿否定条件吗 如果您的ip地址在10.*.*.范围内,我们有一个只显示部分的页面: [IP=10.*.*.*] # show internal content [global] 这很有效。但现在我们有以下问题。新的loadbalancer(waf)也有一个内部地址(即10.1.2.3),因此内部内容与上述条件一起显示! 不幸的是,IP条件的否定不起作用。我试过: [IP=10.*.*.*] && [IP!=10.1.2.3] 否定条件的有效解决方案是: [IP

有可能用打字稿否定条件吗

如果您的ip地址在
10.*.*.
范围内,我们有一个只显示部分的页面:

[IP=10.*.*.*]
  # show internal content
[global]
这很有效。但现在我们有以下问题。新的loadbalancer(waf)也有一个内部地址(即
10.1.2.3
),因此内部内容与上述条件一起显示! 不幸的是,IP条件的否定不起作用。我试过:

[IP=10.*.*.*] && [IP!=10.1.2.3]
否定条件的有效解决方案是:

[IP=10.1.2.3]
  # do nothing
[ELSE]
  # show internal content
[global] 
但是我也需要条件
[IP=10.*.]
! 我也试过了

[IP=10.1.2.3]
  # do nothing
[IP=10.*.*.*]
  # show internal content
[global] 
但它也不起作用

也许有人有办法解决它!更改loadbalancer ip不是选项

谢谢,
英里/小时

我会用一辆自行车。要检索IP地址,可以使用
GeneralUtility::getIndpEnv('REMOTE_ADDR')
,要比较IP地址,可以使用
GeneralUtility::cmpIP()。要检索IP地址,您可以使用
GeneralUtility::getIndpEnv('REMOTE_ADDR')
并比较IP地址,有
GeneralUtility::cmpIP()

您要做的不是更改条件,而是将此IP标记为反向代理,如:

$GLOBALS['TYPO3_CONF_VARS']['SYS']['reverseProxy']='10.1.2.3'; $GLOBALS['TYPO3_CONF_VARS']['SYS']['reverseProxyHeaderMultiValue']='last'

这不使用loadbalancer的IP,而是使用连接到它的原始IP。因此,您的条件将一如既往地工作(前提是您的负载平衡器设置了适当的
X-Forwarded-For
标题)


您之所以要这样做,是因为这不仅解决了这些条件的问题,而且还解决了日志记录(登录尝试的TYPO3 sys_log)、IP身份验证等问题。因此,这是解决问题的正确方法。

您要做的不是更改条件,而是将此IP标记为反向代理,如:

$GLOBALS['TYPO3_CONF_VARS']['SYS']['reverseProxy']='10.1.2.3'; $GLOBALS['TYPO3_CONF_VARS']['SYS']['reverseProxyHeaderMultiValue']='last'

这不使用loadbalancer的IP,而是使用连接到它的原始IP。因此,您的条件将一如既往地工作(前提是您的负载平衡器设置了适当的
X-Forwarded-For
标题)


您之所以要这样做,是因为这不仅解决了这些条件的问题,而且还解决了日志记录(登录尝试的TYPO3 sys_log)、IP身份验证等问题。因此,这是解决您问题的正确方法。

对您在主题中的问题的基本回答:是的,这是可能的,我已经解决了,下面是一个示例:

[browser = msie] && [version =  <7] && [globalVar = TSFE:id != 100]

[browser=msie]&&[version=对您在主题中的问题的基本回答:是的,这是可能的,我已经做到了,下面是一个示例:

[browser = msie] && [version =  <7] && [globalVar = TSFE:id != 100]

[browser=msie]&&[version=纯打字脚本有一种方法:

TS常数:

[IP=10.1.2.3]
[else]
  temp.noWaf = 1
[end]
TS设置:

[IP = 10.*.*.*] && [globalVar = LIT:1 = {$temp.noWaf}]
  # show internal content
[end]
然而,将逻辑拆分为TS常量和设置是非常混乱的。使用
globalVar=LIT
很难理解


最后,我的一些清理尝试失败了,例如使用
LIT:0
!=LIT:1

纯打字有一种方法:

TS常数:

[IP=10.1.2.3]
[else]
  temp.noWaf = 1
[end]
TS设置:

[IP = 10.*.*.*] && [globalVar = LIT:1 = {$temp.noWaf}]
  # show internal content
[end]
然而,将逻辑拆分为TS常量和设置是非常混乱的。使用
globalVar=LIT
很难理解


最后,我的一些清理尝试失败了,例如使用
LIT:0
!=LIT:1

嗨,谢谢你的回答!我已经实现了一个检查ip的UserFunction php脚本,它正在工作!我通过
include_一次(“myuserfuncfile.php”)将它包含在LocalConfiguration.php中
。我想,这不是官方的方式-你能解释一下,我应该在哪里保存和包含这个文件吗?我使用的是typo3 6.2。不要使用LocalConfiguration.php,因为这个文件会随着对已安装扩展名和安装工具设置的每次更改而完全重写。最好的做法是创建一个扩展名来存储所有配置,tempates,等等--一个“站点包”。这样你就可以简单地引用userFunc中的类和函数名。我链接到的文档建议将它放在AdditionalConfiguration.php(也在typo3conf目录中)。谢谢!我现在正在使用AdditionalConfiguration.php-非常好用!嗨,Jigal,也许你可以回答我以下问题:我已经定义了一个fe用户组“intranet”,它也使用ip过滤器(10.*.*)。我可以使用我新定义的userfunc作为过滤器吗?嗨,谢谢你的回答!我已经实现了一个UserFunction php脚本,它检查了ip,并且正在工作!我通过
include_once(“myuserfuncfile.php”)将它包含在LocalConfiguration.php中
。我想,这不是官方的方式-你能解释一下,我应该在哪里保存和包含这个文件吗?我使用的是typo3 6.2。不要使用LocalConfiguration.php,因为这个文件会随着对已安装扩展名和安装工具设置的每次更改而完全重写。最好的做法是创建一个扩展名来存储所有配置,tempates,等等--一个“站点包”。这样你就可以简单地引用userFunc中的类和函数名。我链接到的文档建议将它放在AdditionalConfiguration.php(也在typo3conf目录中)。谢谢!我现在正在使用AdditionalConfiguration.php-非常好用!嗨,Jigal,也许你可以回答我以下问题:我定义了一个fe用户组“intranet”,它也使用ip筛选器(10.*.*.*)。我可以使用我新定义的userfunc作为筛选器吗?globalVar不支持字符串(ip地址),但float/integer。@stmlr这不是完全正确的。有:arghl…注释不可编辑;enter提交表单…schtäkowerflo…因此,首先是globalVar LIT,它基本上支持文本。其次是globalString,它的功能与globalVar几乎相同,但用于字符串。globalString还支持PCRE样式的regular表达式。添加了所有这些信息后,编写打字脚本就不难了