2015-10-18 31 views
1

我打算使用元刷新的上下文並不要求我關心後退按鈕,安全性,搜尋器,響應代碼或通常不推薦使用HTTP元刷新的任何最佳實踐。我不想使用客戶端腳本。更正PHP語法以將值傳遞給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 $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="> 

什麼是在函數中使用的正確語法?

回答

3

PHP中的一個函數有它自己的「範圍」,這意味着它有自己的一組變量,獨立於那些函數以外的變量。

這就是爲什麼$scrnD_refresh_duration$scrnD_refresh_url在您的功能中是空的:它們從來沒有在那裏定義過。該功能的以外的定義不適用。

對於像這樣的情況,PHP提供了global語句,它從全局範圍「拉入」變量。像這樣使用它:

function scrnD_add_meta_refresh() { 
    global $scrnD_refresh_duration, $scrnD_refresh_url; 
    // ... 
} 
2

這是一個可變範圍的問題。見http://php.net/manual/en/language.variables.scope.php

你的函數引用了本地作用域變量$ scrnD_refresh_duration和$ scrnD_refresh_url,它們在函數內部沒有值。您可以將值傳遞給您的函數,然後以此方式引用它們。

function scrnD_add_meta_refresh($conent, $url) { 
... 
+0

如此指出 - 需要更多研究範圍 – ClintonGallagher