0

ユーザーがテーマを選択できるWebページを作成しています。この提案に基づいてそれを構築するにはどうすればよいですか(SESSIONを使用する必要があります):

<link rel="stylesheet" type="text/css" href="<?php echo $_SESSION['style']?>" />

私は'theme'次のようにmysqlデータベースで名前が付けられたテーブルを作成しようとしました:

    id | th_name | link    
    1  | blue    | style.css
    2  | back    | black.css
    3  | pink    | pink.css
.................

そして私のコード(動作しません):

<?php       

        echo "<form>";
        echo "<select>";
        $sql = "select * from theme";
        foreach ($dbh->query($sql) as $row)
        {
?>
<option value="<?php $row['link'] ?>"><?php echo $row['th_name'] ?></option>

<?php
        }
        echo "</select>";
        echo "</form>";
?>

最初のコードが鍵です。これに対する解決策はありますか?(jqueryなどを使用して....?)

4

2 に答える 2

1

上に示した方法でそれを行うこともできますが、セキュリティのために、おそらく少し異なる方法で行うことをお勧めします(あなたの方法は、XSSに大きなチャンスを与えるでしょう)。

基本的に、スタイルを持つようにグローバル変数を設定する必要があり、$_SESSIONそれはデータベースから直接取得する必要があります。それが私なら、私はこれをします:

<?php       
    echo "<form>";
    echo "<select name=\"theme\" id=\"select-theme\">";
    $sql = "select * from theme";
    foreach ($dbh->query($sql) as $row)
    {
?>
<option value="<?php $row['id'] ?>"><?php echo $row['th_name'] ?></option>
<?php
    }
    echo "</select>";
    echo "</form>";
?>

次に、ポストバックスクリプトで、次のようにします。

<?php
if (isset($_POST['theme']) {
    // Perform query here to get the link's file, using PDO - watch out for XSS

    // Note - you may have to call session_start()
    // depending on your php.ini's settings
    $_SESSION['style'] = $link;
}

jQueryを使用してオンザフライでこれを実行したい場合は、次の情報を参照してください:jQueryを使用してCSSスタイルシートを切り替えるにはどうすればよいですか?

さらに、次のように変更を永続化する必要があります。

<script type="text/javascript">
    $("#select-theme").on("change", function() {
    $.post({
        url:'yoururl.php',
        data: { 
            theme: $(this).find("option:selected").value() 
        });
    });

于 2012-12-22T03:15:33.297 に答える
1

なぜmysqlデータベースを使用したいのですか?変数に同じ名前のcssファイルを付けることができます。そしてクッキーを使用してください。これは実装例です

しっかりと固定するように注意してください!

于 2012-12-22T03:19:43.347 に答える