正确的PHP语法将值传递给HTTP元刷新?

时间:2015-10-18 18:02:59

标签: php html wordpress

我打算使用元刷新的上下文不要求我关注后退按钮,安全性,爬虫,响应代码以及通常建议不使用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=">

在函数中使用的正确语法是什么?

2 个答案:

答案 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) {
...