php файл за стилове

anonimen

Super Moderator
Здравейте, опитвам се да вмъкна css стилове във формат .php, но не се получава.
HTML:
<link rel="stylesheet" href="style.php" />
Изненадах се, защото ако по същия начин сложа js файл, става:
HTML:
<script src="script.php"></script>
Идеи как да го оправя?
 
ivo75 каза:
Какъв е смисълът от това!?
Правя разни проверки с php и това извежда различни стилове и скриптове. В зависимост от това дали потребителя си е влезнал в профила, се показва различно съдържание, за което трябват различни стилове. Освен това може да не искам пък всеки да ми гледа как съм си направил страницата, а това "скриване" не мога да го направя с css или js, затова ползвам php (ако искаш, погледни тук как си скривам файловете)

syneidesys каза:
Да, вече го видях, много мерси :) +1

syneidesys , имаш точката, но ще ме прощаваш - ще изчакам още малко, много се дразня :o, когато не мога да пиша в тема, в която съм дал точка. :)
 
Аз не мисля,че можеш да скриеш css-а!
Защо?Защото ако го скриеш няма и бразърът да го види...
Може да го скриеш от некои хора(логнати или не) но като цяло няма как да стане номера. :)
 
както ти казаха по-нагоре това се използва, с малко допълнения:

PHP:
<?php 
$lastModified=filemtime($_SERVER['SCRIPT_FILENAME']);
$etagFile = md5_file($_SERVER['SCRIPT_FILENAME']);
$ifModifiedSince=(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : false);
$etagHeader=(isset($_SERVER['HTTP_IF_NONE_MATCH']) ? trim($_SERVER['HTTP_IF_NONE_MATCH']) : false);
header('Content-type: text/css');
header("Last-Modified: ".gmdate("D, d M Y H:i:s", $lastModified)." GMT");
header("Etag: $etagFile");
header('Cache-Control: public'); ?>

аз използвам php поради две причини, първата - да е всичко на едно място и втората за да мога да лимитирам това което да извеждам - пример:

loadcss.php?nivoslider=yes


за js работата е аналогична:

PHP:
<?php $lastModified=filemtime($_SERVER['SCRIPT_FILENAME']);
$etagFile = md5_file($_SERVER['SCRIPT_FILENAME']);
$ifModifiedSince=(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : false);
$etagHeader=(isset($_SERVER['HTTP_IF_NONE_MATCH']) ? trim($_SERVER['HTTP_IF_NONE_MATCH']) : false);
header('Content-type: text/javascript');
header("Last-Modified: ".gmdate("D, d M Y H:i:s", $lastModified)." GMT");
header("Etag: $etagFile");
header('Cache-Control: public'); ?>
 
vasilev, много си сложен - аз такива функции никога не използвам и твоя код е напълно неразбираем за мен. Ако сложиш по някое друго коментарче може и да схвана идеята.

Fakeheal каза:
От любопитство как си си скрил css-a? :)
Ами... правя сесия, която се изтрива половин секунда по-късно (или даже по-бързо).

index.php

PHP:
<?php session_start(); $_SESSION['sess'] = "value"; ?>
...
<link rel="stylesheet" href="style.php" />

style.php

PHP:
<?php session_start();
if ($_SESSION['sess'] != "value" || !isset($_SESSION['sess'])) {
	die('Достъпът отказан.');
}
else {
	$_SESSION['sess'] = "";//изтриваме сесията, за да не може файлът да се отваря отново
	header("Content-type: text/css");//това е кодът, за който питах
//следва css кода
?>
body{ background: red;}
<?php
/*start edit*/
	header("refresh:0.01;url=style.php");
/*end edit*/
}
?>
Та всъщност логиката е следната:
При отваряне на index.php се създава сесия $_SESSION['sess']. Слагаме css файла, в който се проверява дали съществува сесия $_SESSION['sess'] = "value". Aко не съществува - die('Достъпът отказан'), ако съществува - изтриваме я, за да не може да се използва отново и показваме css кода.

hous каза:
Аз не мисля,че можеш да скриеш css-а!
Защо?Защото ако го скриеш няма и бразърът да го види...
Всъщност позволяваме на браузъра да го види, но веднага след това забраняваме и се получава така, че браузърът вижда кода, а хакера - не. Е, ако хакерът е адски бърз, или сървърът е много бавен, евентуално може да се види, но това са много редки случаи.
 
Загубил си си времето само с тея глупости.
Точно за 2 секунди съм ти свалил целия CSS.
ctr+s в нозилата и си дотам
 
uphero каза:
Загубил си си времето само с тея глупости.
Точно за 2 секунди съм ти свалил целия CSS.
ctr+s в нозилата и си дотам
Мерси че ми каза :). Не се бях сетил да проверя.
Добавям
PHP:
header("refresh:0.01;url=style.php");
преди затварящата скоба в style.php. Така ще е почти невъзможно да ми го "откраднеш". Ще си редактирам поста.
 
anonimen каза:
uphero каза:
Загубил си си времето само с тея глупости.
Точно за 2 секунди съм ти свалил целия CSS.
ctr+s в нозилата и си дотам
Мерси че ми каза :). Не се бях сетил да проверя.
Добавям
PHP:
header("refresh:0.01;url=style.php");
преди затварящата скоба в style.php. Така ще е почти невъзможно да ми го "откраднеш". Ще си редактирам поста.
Ти май не разбра какво имах предвид?
Няма начин да скриеш CSS
 
Автора не можеш да скриеш client-side езици от "клиента". Ако клиента не може да го прочете, значи и браузъра не може да го прочете.
Най-малкото, ако трябва да следим твоята логика - един път показан ли е CSS файла, дори и за части от секундата, то той е запазен на браузъра вече. Отваряш си конзолката, проверяваш какви ресурси са минали и ще го намериш този прословут CSS файл.
 

Back
Горе