Что бы юзер мог менять дизайн своей странички

Сенсей

Новичок
Что бы юзер мог менять дизайн своей странички

Есть у юзеров странички свои...

Надо сделать возможность изменения дизайна, ну что бы каждый мог индивидуально под себя делать страничку.

HTML давать им не собираюсь... идея - дать несколько шаблонов которые будут отличаться только местами размещения блоков информации + дать возможность изменять CSS стиль страницы.

Так вот с первым проблем нет, а вот с возможностью дать создавать свой CSS код не могу определиться.

Вот что из этого выбрать и что посоветуете вы?

1 - Создавать для каждого юзера свой css файл и хранить его на сервере.
2 - Создать поле c типом TEXT в таблице юзеров и хранить там готовый css и просто включать его в код странички при загрузке.

Не знаю что будет производительнее и лучше с точки зрения управления.... ну и что б потом подводных камней не встретить...
 

Krishna

Продался Java
2 - Создать поле c типом TEXT в таблице юзеров и хранить там готовый css и просто включать его в код странички при загрузке.
Для динамического создания HTML необязательно каждый раз включать его в основную страницу.
Можно и через <link rel="stylesheet" type="text/css"
подключать динамически создаваемый файл - это уменьшит объем трафика.
Однако, если файл будет кешироваться в браузере это приведет к некоторой задержке при смене дизайна.
 

Сенсей

Новичок
Апокалипсис
Ну на первом похожем проэкте у нас 30K юзеров, на новом проэкте расчитываем на 60k и более... конечно не сразу но все же...

Krishna
Ты о <LINK rel="stylesheet" href="style_user_id.css" type="text/css">

?

Тогда нужно создавать css файлы...
 

Апокалипсис

тех дир matras.ru
Сенсей
можно и не создавать их.
а подключать css.php?userid=айдиюзера в нём обработку соответствующую производить.
Да, в таком случае хранить лучше будет в базе чем в ФС:)
 

Gas

может по одной?
я бы наверное создавал файлы, только хранил не все вместе, а хотя-бы /css/userid[0]/userid[1]/userid.css
при подключении добавлять время последнего изменения, чтоб сбрасывался кеш броузера при редизайне
 

Сенсей

Новичок
Апокалипсис
Да... но делать еще один запрос к базе только что бы вытащить css код тоже не самое лучшее решение... хотя... если при повторном заходе запрос в базу идти не будет...

Вобщем в любом случае хранить в базе... понял... бум работать... благодарю...

-~{}~ 20.03.08 15:22:

Gas
Над этим думал.. даже создал алгоритм такой:

PHP:
$num = strlen($cms->user_id);

	$n_path = null;

	for ($i = $num-1; $i >= 0; $i--)
	{
		$n_path .= $cms->user_id[$i].'/';
	}

	$path = 'user_files/files/';

	$na_path = null;

	if (!is_dir($path.$n_path))
	{
		for ($i = $num-1; $i >= 0; $i--)
		{
			$na_path .= $cms->user_id[$i].'/';
			mkdir($path.$na_path, 0755);
		}
		mkdir($path.$na_path.'css/', 0755);
	}
Но вот делема... дергать апач для файла... в котором информации я не думаю что будет больше чем 50Kb ведь это всего лишь текст или же брать с базы
 

kruglov

Новичок
А почему html не хотите давать? Боитесь XSS? А если они в css-файлы expressionов понапихают замаскированных?
 

Сенсей

Новичок
kruglov
Даже не из за этого... юзеры не смыслящие ничерта в html, любой назакрытый тег - и полетит страничка к чертям...

А так юзеру не будет дан обычное поле textarea - типа пиши сам свой css код и будь здоров... они то и знать не знают что такое css

Будет страничка что то вроде

http://www.planeta.co.il/user_files/files/1/images/1206017499.jpg

Либо будет страничка + пи наведении на какой нибудь елемент будет выскакивать JS окошко с выбором там цвета и т.д. и собхраняться во временных переменных JS, потом отправка на сервер... проверка введенных данных и все...
 

Gas

может по одной?
Но вот делема... дергать апач для файла... в котором информации я не думаю что будет больше чем 50Kb ведь это всего лишь текст или же брать с базы
всё таки я передумал :) сначала бы сделал отдачу из базы как и сказал Апокалипсис + параметр "время последнего изменения" и нужные хедеры при отдаче. А уже в случае необходимости бы поменял источник.
 

kpp

Новичок
Сенсей
в друпале уже есть подобная вещь.... там и посмотри.
 
Сверху