2012-03-14 7 views
0

this php codeコードを使用して、読み込まれた変数を使用してCSSを書き出します。配列を1つのPHPファイルに設定し、別のPHPファイルの問題にアクセスします。

私はこのコードのうち、デフォルトの配列を移動し、自分のサイトのためにsettings.phpファイルにそれを持ち上げるしたいが、私は、私はこのエラーメッセージを取得ないとき:

<b>Warning</b>: extract() [<a href='function.extract'>function.extract</a>]: First argument should be an array in <b>/home/drawapl1/public_html/ezamazon/demo/css/stylesheet.php</b> on line <b>19</b> 

を次のように私のコードは次のとおりです。

index.phpの中

:stylesheet.phpで

<?php 
include("settings.php"); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<link href="css/stylesheet.php" rel="stylesheet" type="text/css" media="screen" /> 

settings.phpで

$defaultCSS = array( 'body_background_colour' => 'white', 'body_text_colour' => 'black', 'body_font_size' => '1em', 'body_font_family' => 'Arial, Helvetica, sans-serif', 'h1_text_colour' => 'black', 'h2_text_colour' => 'black', 'h3_text_colour' => '#E47911', 'a_text_colour' => '#004B91', 'a_hover_text_colour' => '#2A70FC', 'news_block_background_colour' => '#EAF3FE', 'left_nav_border_colour' => '#C9E1F4', 'left_nav_h2_background_colour' => '#EAF3FE', 'button_text_colour' => '#FFFFFF', 'button_background_colour' => '#414953', 'button_hover_background_colour' => '#999999', 'price_colour' => '#990000', 'price_heading_colour' => '#666666', 'nav_links_colour' => 'black', 'nav_hover_links_colour' => '#E47911', 'hr_divider_colour' => '#DDDDDD', 'pagination_highlight_colour' => '#645538' );

問題が何であるか任意のアイデア?

ありがとうございます。

+0

なぜ実際のコード**を使用していないのですか? – zerkms

+0

あなたのコードはどのように見えますか? 'settings.php'はスタイルシートPHPの前に読み込まれますか? – jeroen

+0

'$ {$ _ GET ['theme']}'は配列ではありません。 '$ _GET ['theme']'の値をエコーし​​てここに投稿できますか? – augustknight

答えて

0

include()を使用して、すべての前にsettings.phpを含めるようにしてください。

これが動作しない可能性が高い理由は、そのファイルが$default変数を参照してください知っていないということで、パラメータの新しいnull変数を作成します。

//settings.php 

    /* set the dynamic information */ 
    //default css variable information 
    $default = array(
    'body_font_size' => '16px', 
    'body_text_color' => '#00f' 
); 

//main_php_file.php 

    include('settings.php'); // This is the important part 

    /* extract the propery array's information */ 
    extract($_GET['theme'] && ${$_GET['theme']} ? ${$_GET['theme']} : $default); 

また$defaultが正しく設定されていることを確認した後include('settings.php');print_r($default)を試してみてください。

はこれを試してみてください。 index.phpファイル内のsettings.phpを含め、その後、あなたは中のsettings.phpを含める必要があり

をstylesheet.phpするのsettings.phpに変数を渡しませんHTMLドキュメント内からstylesheet.phpを呼び出す

0

stylesheet.phpに変数を使用できるようにします。

stylesheet.php内のindex.php

<link href="css/stylesheet.php?vars=<?=urlencode(json_encode($defaultCSS))?>" rel="stylesheet" type="text/css" media="screen" /> 

あなたはまた、シリアル化/アンシリアライズ代わりjson_encodeを使用することができ、トップ

$defaultCSS = json_decode(urldecode($_GET['vars'])); 

に追加EDIT - しかし、なぜそれを含めるだけでなく、すべてのサーバー側に保管するのがはるかにクリーンです

+0

セッションなどでそれらを渡すことはありますか? –

+0

GETパラメータとして渡すための編集方法を参照してください –

関連する問題