2015-02-13 3 views
-2

Я пытаюсь динамически устанавливать свойства CSS. Но по какой-то причине это с использованием метода post не работает.Настройка свойства CSS через PHP post method

Это работает:

<?php header("Content-type: text/css", 
    "Location: http://localhost/template/index.php"); 
    $backgcol = '#333'; 
?> 

body 
{ 
    background-color:<?=$backgcol?>; 
} 

Но это не работает:

<?php header("Content-type: text/css", "Location: http://localhost/template/index.php"); 
    $backgcol = $_POST['color']; 
?> 

body 
{ 
    background-color:<?=$backgcol?>; 
} 

И это HTML:

<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
     <link rel="stylesheet" type="text/css" href="style.php"> 
    </head> 
    <body> 
     <form action="style.php" method="post"> 
     <input type="text" name="color"><br> 
      <input type="submit" value="Set color"> 
     </form> 
    </body> 
</html> 
+0

во втором примере вы видели, что выходсгенерированный с помощью источника просмотра? – fcalderan

+1

В чем смысл этого «местоположения» в этом контексте? Вы говорите браузеру, что контент, который он хочет, находится где-то в другом месте ... поэтому вывод данных таблицы стилей после этого не имеет большого смысла. – CBroe

+0

Fabrizio: Во втором примере выход - это таблица стилей CSS. Он показывает значение css, установленное для того, что я хочу, но не перенаправляет обратно на index.php и не работает на index.php. Это как если бы индекс вообще не был связан со стилем. CBroe: Я использую его для перенаправления обратно на index.php – alenphp

ответ

0

Вы misuderstanding слишком много очков.

  • См PHP Manual - header. Использование второго аргумента отличается от того, что вы рассматриваете. По крайней мере, это следует назвать несколько раз:
<?php 
header('Content-Type: text/css'); 
header('Location: http://localhost/template/index.php'); 
  • Location заголовок не имеет ничего общего с запросами CSS файлов.
  • $_POST Значение больше не задается в запросах файла CSS.
  • $_POST переменная является временной по каждому запросу. Его нельзя сохранить.

Действительно Пример:

setcolor.php

<?php 
    const COLOR_REGEX = '/\A#(?:(?:[\da-f]{3}){1,2}+|AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGray|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGray|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGray|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gray|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGray|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGray|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGray|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\z/i'; 
    function h($str) { 
     return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); 
    } 
    $color = (string)filter_input(INPUT_POST, 'color'); 
    if ($color !== null) { 
     if (preg_match(COLOR_REGEX, $color)) { 
      file_put_contents('color.dat', $color, LOCK_EX); 
      $msg = 'Color setting has been saved: ' . $color; 
     } else { 
      $msg = 'Color format is invalid:' . $color; 
     } 
    } 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
     <link rel="stylesheet" type="text/css" href="style.php"> 
    </head> 
    <body> 
<?php if (isset($msg)): ?> 
     <p><?=h($msg)?></p> 
<?php endif; ?> 
     <form action="" method="post"> 
      <input type="text" name="color"><br> 
      <input type="submit" value="Set color"> 
     </form> 
    </body> 
</html> 

style.php

<?php 
header('Content-type: text/css'); 
$color = is_readable('color.dat') ? file_get_contents('color.dat') : "#ffffff"; 
?> 
body { 
    background-color: <?=$color?>; 
} 
Смежные вопросы