我打算使用元刷新的上下文不要求我关注后退按钮,安全性,爬虫,响应代码以及通常建议不使用HTTP元刷新的任何最佳实践。我不想使用客户端脚本。
注意这是WordPress。不正确的结果表明我没有正确的PHP语法,这就是我要问的问题:启用以下元刷新以正常运行的正确语法是什么...
<?php
$scrnD_refresh_duration = 2;
$scrnD_refresh_url = 'http://wordpress.org';
add_action('wp_head', 'scrnD_add_meta_refresh');
function scrnD_add_meta_refresh() {
echo '<meta http-equiv="refresh" content="'. $scrnD_refresh_duration .'; url='. $scrnD_refresh_url .'">';
}
?>
// echo按预期显示值...
echo $scrnD_refresh_duration; // displays 2
echo $scrnD_refresh_url; // displays http://wordpress.org
//硬编码值按预期刷新...
echo '<meta http-equiv="refresh" content="2; url=http://wordpress.org">';
//查看源代码显示该函数生成此函数时没有值...
<meta http-equiv="refresh" content="; url=">
在函数中使用的正确语法是什么?
答案 0 :(得分:3)
PHP中的函数有自己的“范围”,这意味着它有自己的变量集,与函数外部的变量无关。
这就是为什么$scrnD_refresh_duration
和$scrnD_refresh_url
在你的函数中是空的:它们从未被定义过。该函数的外部定义不适用。
对于这样的情况,PHP提供了global
语句,该语句从全局范围“拉入”变量。像这样使用它:
function scrnD_add_meta_refresh() {
global $scrnD_refresh_duration, $scrnD_refresh_url;
// ...
}
答案 1 :(得分:2)
这是范围可变的问题。请参阅http://php.net/manual/en/language.variables.scope.php。
您的函数引用了本地范围的变量$ scrnD_refresh_duration和$ scrnD_refresh_url,这些变量在函数内部没有值。您可以将值传递给函数,然后以这种方式引用它们。
function scrnD_add_meta_refresh($conent, $url) {
...