2013-12-16 4 views
0

현재 PHP로 완전히 동적 인 웹 사이트를 만들고 있습니다. 이제 내 Index.php를 통해 일부 CSS 속성을 편집하고 싶습니다.PHP를 사용하여 CSS에 변수 보내기

Inside Index.php 나는 테두리 색상을 세션과 함께 CSS 파일에 보내고 있습니다.

session_start(); 
$_SESSION['CssBorder'] = 'red'; 

그리고 내 CSS 파일에

, 내가

.Container{ 
     border-left: 1px solid <?php echo $CssBorder ?>; 

이 작동하지 않습니다 따를

<?php 
header('Content-type: text/css'); 

    $CssBorder = $_SESSION['CssBorder']; 

?> 

그리고 CSS를 내부에 그것을 사용하는 세션을 가지고, 그것은 색상을 표시되지 않습니다 . 그리고 내가 따라야 할 CSS 속성이 사용되지 않고 그 이후의 모든 내용이 있어야하기 때문에 나는 뭔가 잘못 했어야합니다.

또한 정상적인 문자열로 세션을 바꿀 때 작동합니다. 그것은 완벽하게 작동합니다.

$string = 'red'; 

왜 작동하지 않으며 어떻게 해결할 수 있습니까?

대단히 감사합니다. 이 방법 AFAIK 외부 스타일 시트에 액세스 할 수 있어야합니다 아니, 당신을위한 최고의 솔루션입니다

+2

나는 당신의 CSS 파일을 PHP로 처리하고있다. (예를 들어 아파치에서'AddHandler .css php-script'-type stuff를했거나'whatever.php'라고 이름 붙였다. PHP 코드로 실행 되나요? –

+0

내 대답 확인 :) – dev1234

+0

시도해주세요. [link] (http://css-tricks.com/css-variables-with-php/) –

답변

0

PHP와 생성의 CSS는 드문하지만 가능한 방법입니다. 어떤 환경에서는 경쟁 조건이있을 수 있다고 생각합니다. 특히 $_SESSION을 사용하는 것이 명시 적으로 명시되어 있기 때문에 문제가 될 수 있습니다.

나는 PHP 생성 스타일 시트가 요청되었을 때 $_SESSION['CssBorder']이 플러시되었고 다른 프로세스에서 읽을 수 있다고 확신하지 못합니다. 이때 예

browser >>>: GET index.php 
server <<<: 200 OK 
server <<<: Set-Cookie: PHPSESSIONID=blah 
server <<<: HTML response body here... until some style.php 
browser <<<: GET style.php 
browser <<<: Cookie: PHPSESSIONID=blah 

들어 $_SESSION['CssBorder'] 아직 두 번째 요청을 처리하는 과정을 표시하지 않을 수있다. 그러나 그것은 단지 추측입니다.

+0

해결 된 것으로 신고하고 있습니다. 이는 솔루션의 일부입니다. 솔루션은 주석을 통해 발견되었으며 해결사로 플래그를 지정할 수 없으며 사람들이 불필요하게 내 게시물을 방황하지 않도록 할 수 있습니다. 다들 감사 해요. 그리고 내 가장 깊은 사과. –

2

, 헤더에

설정 스타일 태그와 헤더 전에 $CssBorder 값을 할당해야합니다.

<head> 
<style type="text/css"> 
h1 {color:red;} 
p {color:blue;} 
.Container {border-left: 1px solid <?php echo $CssBorder ?>; 
</style> 
</head> 

참고 : 모범 사례의 관점에서 볼 때 클래스 이름을 의미있는 이름으로 변경해야한다고 생각합니다. 동적 국경

그래서 모양을,

.dynamic-border {border-left: 1px solid <?php echo $CssBorder ?>; 
+0

죄송합니다. 제 HTML에서 CSS를 사용하는 팬이 없습니다. 가능한 해결책을 가져 주셔서 감사합니다. 그러나 이것은 저에게 도움이되지 않습니다. 대단히 감사합니다. –

+0

정확히 왜 그가 할 수 없습니까? – Raffaele

+0

@Raffaele 가능합니까? 나는 그런 방법을 알지 못한다. – dev1234

0

@ Nikil이 말한대로, '나는 당신의 CSS 파일에서 start_session()이 누락 된 것 같습니까? '내 CSS 파일에서 시작 세션을 놓쳤습니다.

나는 내 문제에서 이런 종류의 오류로 질문을 만들었습니다. 저는 초보자 용 PHP 코더이며 세션을 사용하지 않았습니다.

당신은 seassion 변수를 생성 한 파일 내에 session_start 만 필요로하고 읽었습니다.

감사합니다. 진심으로 사과드립니다. (내 영어)

관련 문제