Возможность выбора css стиля для сайта

Статус
Закрыто для дальнейших ответов.
Регистрация
23.04.2011
Сообщения
9
Всем привет!
Помогите написать скрипт, чтобы пользователь мог менять дизайн сайта (css стили) и выбранный им дизайн оставался не на одну страницу а навсегда.
:excl: PS. Я в скриптах особо не разбираюсь, так что объясняйте понятней
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Ваш хостинг поддерживает php?
 

Кирилл Меньков

Well-Known Member
Регистрация
17.02.2011
Сообщения
93
куки с номером стилей поставить и все. Очень давно еще на ucoz подобное делали.
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Тогда это можно сделать так:
1. Выносишь код css в отдельный файл (например 1.css -один стиль, 2.css - другой стильи т.д)
2. На всех страницах на САМОМ верху странице пишешь это: <? session start(); ?>
3. На всех страницах между тегами <head> и </head> ставишь это:
Код:
<? if(!isset($_SESSION['css'])) {$_SESSION['css']=1;} echo '<link rel="stylesheet" href="/твояпапкасостилями/$css.css" type="text/css">'; ?>
Это ВЫБОР твоего стиля, желательно сделать на главной странице:
PHP:
<? if(isset($_POST['zagruzka'])){
$_style=intval($_POST['style']);
if($_style>3 || $_style<1) {$_style=1;}
$_SESSION['css']=$_style;
}
else{
echo '<form action="" method="post">Выберите стиль сайта:<br>
<SELECT name="style"> <OPTION VALUE="1">Один стиль</option> <OPTION VALUE="2">Другой стиль</option><OPTION VALUE="3">Третий стиль</option></select><input type="submit" name="zagruzka" value="Войти"></form>';
} ?>
Теперь как с этим работать:
строчка: if($_style>3 || $_style<1) {$_style=1;} - если у тя 2 стиля сайта то меняешь 3 на 2, если 4 то меняешь 3 на 4 и т.д
Кстати тут я сделал так, что имена имен цсс должно быть цифрами, т.е 1.цсс, 2 цсс и тд...
P.S в строчке <OPTION VALUE="1">Один стиль</option> <OPTION VALUE="2">Другой стиль</option><OPTION VALUE="3">Третий стиль</option></select> цифры в кавычках, например "1", "2" и "3" - обозначают имя вашего имении цсс файла..
Кстати, правильно подсказывают, можно сделать и с помощью кук, но я предпочитаю с сессиями)
 
Регистрация
23.04.2011
Сообщения
9
Тогда это можно сделать так:
1. Выносишь код css в отдельный файл (например 1.css -один стиль, 2.css - другой стильи т.д)
2. На всех страницах на САМОМ верху странице пишешь это: <? session start(); ?>
3. На всех страницах между тегами <head> и </head> ставишь это:
Код:
<? if(!isset($_SESSION['css'])) {$_SESSION['css']=1;} echo '<link rel="stylesheet" href="/твояпапкасостилями/$css.css" type="text/css">'; ?>
Это ВЫБОР твоего стиля, желательно сделать на главной странице:
PHP:
<? if(isset($_POST['zagruzka'])){
$_style=intval($_POST['style']);
if($_style>3 || $_style<1) {$_style=1;}
$_SESSION['css']=$_style;
}
else{
echo '<form action="" method="post">Выберите стиль сайта:<br>
<SELECT name="style"> <OPTION VALUE="1">Один стиль</option> <OPTION VALUE="2">Другой стиль</option><OPTION VALUE="3">Третий стиль</option></select><input type="submit" name="zagruzka" value="Войти"></form>';
} ?>
Теперь как с этим работать:
строчка: if($_style>3 || $_style<1) {$_style=1;} - если у тя 2 стиля сайта то меняешь 3 на 2, если 4 то меняешь 3 на 4 и т.д
Кстати тут я сделал так, что имена имен цсс должно быть цифрами, т.е 1.цсс, 2 цсс и тд...
P.S в строчке <OPTION VALUE="1">Один стиль</option> <OPTION VALUE="2">Другой стиль</option><OPTION VALUE="3">Третий стиль</option></select> цифры в кавычках, например "1", "2" и "3" - обозначают имя вашего имении цсс файла..
Кстати, правильно подсказывают, можно сделать и с помощью кук, но я предпочитаю с сессиями)
спасибо!

Тогда это можно сделать так:
1. Выносишь код css в отдельный файл (например 1.css -один стиль, 2.css - другой стильи т.д)
2. На всех страницах на САМОМ верху странице пишешь это: <? session start(); ?>
3. На всех страницах между тегами <head> и </head> ставишь это:
Код:
<? if(!isset($_SESSION['css'])) {$_SESSION['css']=1;} echo '<link rel="stylesheet" href="/твояпапкасостилями/$css.css" type="text/css">'; ?>
Это ВЫБОР твоего стиля, желательно сделать на главной странице:
PHP:
<? if(isset($_POST['zagruzka'])){
$_style=intval($_POST['style']);
if($_style>3 || $_style<1) {$_style=1;}
$_SESSION['css']=$_style;
}
else{
echo '<form action="" method="post">Выберите стиль сайта:<br>
<SELECT name="style"> <OPTION VALUE="1">Один стиль</option> <OPTION VALUE="2">Другой стиль</option><OPTION VALUE="3">Третий стиль</option></select><input type="submit" name="zagruzka" value="Войти"></form>';
} ?>
Теперь как с этим работать:
строчка: if($_style>3 || $_style<1) {$_style=1;} - если у тя 2 стиля сайта то меняешь 3 на 2, если 4 то меняешь 3 на 4 и т.д
Кстати тут я сделал так, что имена имен цсс должно быть цифрами, т.е 1.цсс, 2 цсс и тд...
P.S в строчке <OPTION VALUE="1">Один стиль</option> <OPTION VALUE="2">Другой стиль</option><OPTION VALUE="3">Третий стиль</option></select> цифры в кавычках, например "1", "2" и "3" - обозначают имя вашего имении цсс файла..
Кстати, правильно подсказывают, можно сделать и с помощью кук, но я предпочитаю с сессиями)
все сделал как надо, но пишет : Parse error: syntax error, unexpected T_STRING in /home/ser/data/www/test_page.php on line 1
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Тогда это можно сделать так:
1. Выносишь код css в отдельный файл (например 1.css -один стиль, 2.css - другой стильи т.д)
2. На всех страницах на САМОМ верху странице пишешь это: <? session start(); ?>
3. На всех страницах между тегами <head> и </head> ставишь это:
Код:
<? if(!isset($_SESSION['css'])) {$_SESSION['css']=1;} echo '<link rel="stylesheet" href="/твояпапкасостилями/$css.css" type="text/css">'; ?>
Это ВЫБОР твоего стиля, желательно сделать на главной странице:
PHP:
<? if(isset($_POST['zagruzka'])){
$_style=intval($_POST['style']);
if($_style>3 || $_style<1) {$_style=1;}
$_SESSION['css']=$_style;
}
else{
echo '<form action="" method="post">Выберите стиль сайта:<br>
<SELECT name="style"> <OPTION VALUE="1">Один стиль</option> <OPTION VALUE="2">Другой стиль</option><OPTION VALUE="3">Третий стиль</option></select><input type="submit" name="zagruzka" value="Войти"></form>';
} ?>
Теперь как с этим работать:
строчка: if($_style>3 || $_style<1) {$_style=1;} - если у тя 2 стиля сайта то меняешь 3 на 2, если 4 то меняешь 3 на 4 и т.д
Кстати тут я сделал так, что имена имен цсс должно быть цифрами, т.е 1.цсс, 2 цсс и тд...
P.S в строчке <OPTION VALUE="1">Один стиль</option> <OPTION VALUE="2">Другой стиль</option><OPTION VALUE="3">Третий стиль</option></select> цифры в кавычках, например "1", "2" и "3" - обозначают имя вашего имении цсс файла..
Кстати, правильно подсказывают, можно сделать и с помощью кук, но я предпочитаю с сессиями)
спасибо!

Тогда это можно сделать так:
1. Выносишь код css в отдельный файл (например 1.css -один стиль, 2.css - другой стильи т.д)
2. На всех страницах на САМОМ верху странице пишешь это: <? session start(); ?>
3. На всех страницах между тегами <head> и </head> ставишь это:
Код:
<? if(!isset($_SESSION['css'])) {$_SESSION['css']=1;} echo '<link rel="stylesheet" href="/твояпапкасостилями/$css.css" type="text/css">'; ?>
Это ВЫБОР твоего стиля, желательно сделать на главной странице:
PHP:
<? if(isset($_POST['zagruzka'])){
$_style=intval($_POST['style']);
if($_style>3 || $_style<1) {$_style=1;}
$_SESSION['css']=$_style;
}
else{
echo '<form action="" method="post">Выберите стиль сайта:<br>
<SELECT name="style"> <OPTION VALUE="1">Один стиль</option> <OPTION VALUE="2">Другой стиль</option><OPTION VALUE="3">Третий стиль</option></select><input type="submit" name="zagruzka" value="Войти"></form>';
} ?>
Теперь как с этим работать:
строчка: if($_style>3 || $_style<1) {$_style=1;} - если у тя 2 стиля сайта то меняешь 3 на 2, если 4 то меняешь 3 на 4 и т.д
Кстати тут я сделал так, что имена имен цсс должно быть цифрами, т.е 1.цсс, 2 цсс и тд...
P.S в строчке <OPTION VALUE="1">Один стиль</option> <OPTION VALUE="2">Другой стиль</option><OPTION VALUE="3">Третий стиль</option></select> цифры в кавычках, например "1", "2" и "3" - обозначают имя вашего имении цсс файла..
Кстати, правильно подсказывают, можно сделать и с помощью кук, но я предпочитаю с сессиями)
все сделал как надо, но пишет : Parse error: syntax error, unexpected T_STRING in /home/ser/data/www/test_page.php on line 1
Попрбуй заменить строчку на эту:
Код:
<? if(!isset($_SESSION['css'])) {$_SESSION['css']=1;} echo '<link rel="stylesheet" href="/твояпапкасостилями/'.$css.'.css" type="text/css">'; ?>
и вот это тоже заменить:
Код:
session_start();
Вроде больше ошибок не должно быть:) Писал от руки и не тестил, поэтому и ошибка:(
 
Регистрация
23.04.2011
Сообщения
9
[/quote]
Попрбуй заменить строчку на эту:
Код:
<? if(!isset($_SESSION['css'])) {$_SESSION['css']=1;} echo '<link rel="stylesheet" href="/твояпапкасостилями/'.$css.'.css" type="text/css">'; ?>
и вот это тоже заменить:
Код:
session_start();
Вроде больше ошибок не должно быть:) Писал от руки и не тестил, поэтому и ошибка:(
[/quote]
не получается :angry:
посмотри код, может там чего не правильно
Код:
<? if(!isset($_SESSION['css'])) {$_SESSION['css']=1;} echo '<link rel="stylesheet" type="text/css" href="/test_with_css/'.$css.'.css" type="text/css">'; ?>
<html>

<head>
<title>Css</title>
<? if(!isset($_SESSION['css'])) {$_SESSION['css']=1;} echo '<link rel="stylesheet" type="text/css" href="/test_with_css/$css.css" type="text/css">'; ?>
</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<? if(isset($_POST['zagruzka'])){
$_style=intval($_POST['style']);
if($_style>2 || $_style<1) {$_style=1;}
$_SESSION['css']=$_style;
}
else{
echo '<form action="" method="post">Выберите стиль сайта:<br>
<SELECT name="style"> <OPTION VALUE="1">1</option> <OPTION VALUE="2">2</option></select><input type="submit" name="zagruzka" value="Войти"></form>';
} 
?>
<div><p id="text_">olololo</p></div>
</body>

</html>
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Код:
<? session_start(); ?>
<html>
<head>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<title>Css</title>
<? if(!isset($_SESSION['css'])) {$_SESSION['css']=1;} echo '<link rel="stylesheet" type="text/css" href="/test_with_css/'.$css.'.css" type="text/css">'; ?>
</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<? 
if(isset($_POST['zagruzka'])){
$_style=intval($_POST['style']);
if($_style>2 || $_style<1) {$_style=1;}
$_SESSION['css']=$_style;
}
else{
echo '<form action="" method="post">Выберите стиль сайта:<br>
<SELECT name="style"> <OPTION VALUE="1">1</option> <OPTION VALUE="2">2</option></select><input type="submit" name="zagruzka" value="Войти"></form>';
}
echo '<a href="'.$_SERVER['PHP_SELF'].'?r='.rand(100,10000).'">Обновить страницу</a>';
?>
<div><p id="text_">olololo</p></div>
</body>
</html>
Вот этот попробуй) Только что потестил - всё работает)
p.s не забудь пообновлять страницу)
 

pinz

Active Member
Регистрация
24.04.2011
Сообщения
35
хммм есть еще один менее, на мой взгляд, болезненный метод

1.пользователь должен иметь ячейку "user_css" в таблице пользователи в ДБ наряду с именем, паролем и тд
допустим что мы задали сессию(или куки) раньше, когда пользователь вошел
Код:
<?php
$current_user_id = $_SESSION['current_user_id'];
function get_css() {
$css_que = mysql_query("SELECT * FROM users WHERE id='$current_user_id'");
$css_fetcher = mysql_fetch_array($css_que);
$user_css = $css_fetcher['user_css'];

echo "<head><title>my Cute Site</title><link href='$user_css.css' rel='stylesheet' type='text/css'></head>";
}
?>
при загрузке хеда, маленький скрипт будет запрашивать какой стиль пользователь выбрал ранее
2.форма из которой пользователь выбирает цсс
Код:
if(isset($_REQUEST['save'])) { 
$css_choice = $_REQUEST['css_selector'];
$save_css_que = mysql_query("UPDATE users SET user_css='$css_choice'");
}

<form action='<?php echo $_SERVER['PHP_SELF']?>' method='post'>
<select name='css_selector'>
<option value='silver'>Silver Blue</option>
<option value='orange'>Annoying Orange</option>
<option value='dark'>Dark Sky</option>
</select>
<input type='submit' value='Save my CSS' name='save' />
</form>
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
хммм есть еще один менее, на мой взгляд, болезненный метод

1.пользователь должен иметь ячейку "user_css" в таблице пользователи в ДБ наряду с именем, паролем и тд
допустим что мы задали сессию(или куки) раньше, когда пользователь вошел
Код:
<?php
$current_user_id = $_SESSION['current_user_id'];
function get_css() {
$css_que = mysql_query("SELECT * FROM users WHERE id='$current_user_id'");
$css_fetcher = mysql_fetch_array($css_que);
$user_css = $css_fetcher['user_css'];

echo "<head><title>my Cute Site</title><link href='$user_css.css' rel='stylesheet' type='text/css'></head>";
}
?>
при загрузке хеда, маленький скрипт будет запрашивать какой стиль пользователь выбрал ранее
2.форма из которой пользователь выбирает цсс
Код:
if(isset($_REQUEST['save'])) { 
$css_choice = $_REQUEST['css_selector'];
$save_css_que = mysql_query("UPDATE users SET user_css='$css_choice'");
}

<form action='<?php echo $_SERVER['PHP_SELF']?>' method='post'>
<select name='css_selector'>
<option value='silver'>Silver Blue</option>
<option value='orange'>Annoying Orange</option>
<option value='dark'>Dark Sky</option>
</select>
<input type='submit' value='Save my CSS' name='save' />
</form>
Не проще пользоваться цифрами? Ведь вместо
Код:
<option value='silver'>Silver Blue</option>
<option value='orange'>Annoying Orange</option>
<option value='dark'>Dark Sky</option>
кто-то может ввести что нибудь не нужное в исходном коде и тогда будет неверно открываться страница, либо можно сделать инъекцию :excl:
Например храним в бд, цифры от цсс, их проще обрабатывать)
что то вроде этого:
Код:
<?
$current_user_id = $_SESSION['current_user_id'];
function get_css() {
$css_que = mysql_query("SELECT * FROM `users` WHERE id='$current_user_id'");
$css_fetcher = mysql_fetch_array($css_que);
$user_css = $css_fetcher['user_css'];
echo "<head><title>my Cute Site</title><link href='$user_css.css' rel='stylesheet' type='text/css'></head>";
}
//при загрузке хеда, маленький скрипт будет запрашивать какой стиль пользователь выбрал ранее
//2.форма из которой пользователь выбирает цсс
if(isset($_REQUEST['save'])) { 
$css_choice = $_REQUEST['css_selector'];
$css_choice=intval($css_choice);
if($css_choice>3 || $css_choice<1){$css_choice=1;}
$save_css_que = mysql_query("UPDATE users SET user_css='$css_choice'");
}

echo '<form action='.$_SERVER['PHP_SELF'].' method="post">
<select name="css_selector">
<option value="1">Silver Blue</option>
<option value="2">Annoying Orange</option>
<option value="3">Dark Sky</option>
</select>
<input type="submit" value="Save my CSS" name="save"/>
</form>';
?>
 
Регистрация
23.04.2011
Сообщения
9
Код:
<? session_start(); ?>
<html>
<head>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<title>Css</title>
<? if(!isset($_SESSION['css'])) {$_SESSION['css']=1;} echo '<link rel="stylesheet" type="text/css" href="/test_with_css/'.$css.'.css" type="text/css">'; ?>
</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<? 
if(isset($_POST['zagruzka'])){
$_style=intval($_POST['style']);
if($_style>2 || $_style<1) {$_style=1;}
$_SESSION['css']=$_style;
}
else{
echo '<form action="" method="post">Выберите стиль сайта:<br>
<SELECT name="style"> <OPTION VALUE="1">1</option> <OPTION VALUE="2">2</option></select><input type="submit" name="zagruzka" value="Войти"></form>';
}
echo '<a href="'.$_SERVER['PHP_SELF'].'?r='.rand(100,10000).'">Обновить страницу</a>';
?>
<div><p id="text_">olololo</p></div>
</body>
</html>
Вот этот попробуй) Только что потестил - всё работает)
p.s не забудь пообновлять страницу)
ничего не изменяется :angry:
может у меня цсс файлы не так называются?
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Код:
<? session_start(); ?>
<html>
<head>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<title>Css</title>
<? if(!isset($_SESSION['css'])) {$_SESSION['css']=1;} echo '<link rel="stylesheet" type="text/css" href="/test_with_css/'.$css.'.css" type="text/css">'; ?>
</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<? 
if(isset($_POST['zagruzka'])){
$_style=intval($_POST['style']);
if($_style>2 || $_style<1) {$_style=1;}
$_SESSION['css']=$_style;
}
else{
echo '<form action="" method="post">Выберите стиль сайта:<br>
<SELECT name="style"> <OPTION VALUE="1">1</option> <OPTION VALUE="2">2</option></select><input type="submit" name="zagruzka" value="Войти"></form>';
}
echo '<a href="'.$_SERVER['PHP_SELF'].'?r='.rand(100,10000).'">Обновить страницу</a>';
?>
<div><p id="text_">olololo</p></div>
</body>
</html>
Вот этот попробуй) Только что потестил - всё работает)
p.s не забудь пообновлять страницу)
ничего не изменяется :angry:
может у меня цсс файлы не так называются?
Я не могу знать как вы их назвали) Пишите названия файлов цсс и папки, в которых они хранятся от корневой директории)
 
Регистрация
23.04.2011
Сообщения
9
хммм есть еще один менее, на мой взгляд, болезненный метод

1.пользователь должен иметь ячейку "user_css" в таблице пользователи в ДБ наряду с именем, паролем и тд
допустим что мы задали сессию(или куки) раньше, когда пользователь вошел
Код:
<?php
$current_user_id = $_SESSION['current_user_id'];
function get_css() {
$css_que = mysql_query("SELECT * FROM users WHERE id='$current_user_id'");
$css_fetcher = mysql_fetch_array($css_que);
$user_css = $css_fetcher['user_css'];

echo "<head><title>my Cute Site</title><link href='$user_css.css' rel='stylesheet' type='text/css'></head>";
}
?>
при загрузке хеда, маленький скрипт будет запрашивать какой стиль пользователь выбрал ранее
2.форма из которой пользователь выбирает цсс
Код:
if(isset($_REQUEST['save'])) { 
$css_choice = $_REQUEST['css_selector'];
$save_css_que = mysql_query("UPDATE users SET user_css='$css_choice'");
}

<form action='<?php echo $_SERVER['PHP_SELF']?>' method='post'>
<select name='css_selector'>
<option value='silver'>Silver Blue</option>
<option value='orange'>Annoying Orange</option>
<option value='dark'>Dark Sky</option>
</select>
<input type='submit' value='Save my CSS' name='save' />
</form>
Не проще пользоваться цифрами? Ведь вместо
Код:
<option value='silver'>Silver Blue</option>
<option value='orange'>Annoying Orange</option>
<option value='dark'>Dark Sky</option>
кто-то может ввести что нибудь не нужное в исходном коде и тогда будет неверно открываться страница, либо можно сделать инъекцию :excl:
Например храним в бд, цифры от цсс, их проще обрабатывать)
что то вроде этого:
Код:
<?
$current_user_id = $_SESSION['current_user_id'];
function get_css() {
$css_que = mysql_query("SELECT * FROM `users` WHERE id='$current_user_id'");
$css_fetcher = mysql_fetch_array($css_que);
$user_css = $css_fetcher['user_css'];
echo "<head><title>my Cute Site</title><link href='$user_css.css' rel='stylesheet' type='text/css'></head>";
}
//при загрузке хеда, маленький скрипт будет запрашивать какой стиль пользователь выбрал ранее
//2.форма из которой пользователь выбирает цсс
if(isset($_REQUEST['save'])) { 
$css_choice = $_REQUEST['css_selector'];
$css_choice=intval($css_choice);
if($css_choice>3 || $css_choice<1){$css_choice=1;}
$save_css_que = mysql_query("UPDATE users SET user_css='$css_choice'");
}

echo '<form action='.$_SERVER['PHP_SELF'].' method="post">
<select name="css_selector">
<option value="1">Silver Blue</option>
<option value="2">Annoying Orange</option>
<option value="3">Dark Sky</option>
</select>
<input type="submit" value="Save my CSS" name="save"/>
</form>';
?>
Идея то хорошая, но у меня на сайте пока нет регистрации :unsure:
Может можно чуток изменить код, чтобы он сохранял выбранный дизайн сайта для определенного IP адреса в текстовый файл?
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
хммм есть еще один менее, на мой взгляд, болезненный метод

1.пользователь должен иметь ячейку "user_css" в таблице пользователи в ДБ наряду с именем, паролем и тд
допустим что мы задали сессию(или куки) раньше, когда пользователь вошел
Код:
<?php
$current_user_id = $_SESSION['current_user_id'];
function get_css() {
$css_que = mysql_query("SELECT * FROM users WHERE id='$current_user_id'");
$css_fetcher = mysql_fetch_array($css_que);
$user_css = $css_fetcher['user_css'];

echo "<head><title>my Cute Site</title><link href='$user_css.css' rel='stylesheet' type='text/css'></head>";
}
?>
при загрузке хеда, маленький скрипт будет запрашивать какой стиль пользователь выбрал ранее
2.форма из которой пользователь выбирает цсс
Код:
if(isset($_REQUEST['save'])) { 
$css_choice = $_REQUEST['css_selector'];
$save_css_que = mysql_query("UPDATE users SET user_css='$css_choice'");
}

<form action='<?php echo $_SERVER['PHP_SELF']?>' method='post'>
<select name='css_selector'>
<option value='silver'>Silver Blue</option>
<option value='orange'>Annoying Orange</option>
<option value='dark'>Dark Sky</option>
</select>
<input type='submit' value='Save my CSS' name='save' />
</form>
Не проще пользоваться цифрами? Ведь вместо
Код:
<option value='silver'>Silver Blue</option>
<option value='orange'>Annoying Orange</option>
<option value='dark'>Dark Sky</option>
кто-то может ввести что нибудь не нужное в исходном коде и тогда будет неверно открываться страница, либо можно сделать инъекцию :excl:
Например храним в бд, цифры от цсс, их проще обрабатывать)
что то вроде этого:
Код:
<?
$current_user_id = $_SESSION['current_user_id'];
function get_css() {
$css_que = mysql_query("SELECT * FROM `users` WHERE id='$current_user_id'");
$css_fetcher = mysql_fetch_array($css_que);
$user_css = $css_fetcher['user_css'];
echo "<head><title>my Cute Site</title><link href='$user_css.css' rel='stylesheet' type='text/css'></head>";
}
//при загрузке хеда, маленький скрипт будет запрашивать какой стиль пользователь выбрал ранее
//2.форма из которой пользователь выбирает цсс
if(isset($_REQUEST['save'])) { 
$css_choice = $_REQUEST['css_selector'];
$css_choice=intval($css_choice);
if($css_choice>3 || $css_choice<1){$css_choice=1;}
$save_css_que = mysql_query("UPDATE users SET user_css='$css_choice'");
}

echo '<form action='.$_SERVER['PHP_SELF'].' method="post">
<select name="css_selector">
<option value="1">Silver Blue</option>
<option value="2">Annoying Orange</option>
<option value="3">Dark Sky</option>
</select>
<input type="submit" value="Save my CSS" name="save"/>
</form>';
?>
Идея то хорошая, но у меня на сайте пока нет регистрации :unsure:
Может можно чуток изменить код, чтобы он сохранял выбранный дизайн сайта для определенного IP адреса в текстовый файл?
Неее... Не надо текстовый документ... Это во-первых: Долго, во вторых, ip всегда дается разный (последние цифры), а это значит что надо переписывать весь код, что бы он обрабатывал только несколько цифр в ip, в-третьих, в текстовых документах обычно не хранят такие данные (специально для этого и разработаны бд), с ними кстати намного проще чем с текстовыми файлами) Если уж хотите привязывать к ip то делайте через куки)
 
Регистрация
23.04.2011
Сообщения
9
хммм есть еще один менее, на мой взгляд, болезненный метод

1.пользователь должен иметь ячейку "user_css" в таблице пользователи в ДБ наряду с именем, паролем и тд
допустим что мы задали сессию(или куки) раньше, когда пользователь вошел
Код:
<?php
$current_user_id = $_SESSION['current_user_id'];
function get_css() {
$css_que = mysql_query("SELECT * FROM users WHERE id='$current_user_id'");
$css_fetcher = mysql_fetch_array($css_que);
$user_css = $css_fetcher['user_css'];

echo "<head><title>my Cute Site</title><link href='$user_css.css' rel='stylesheet' type='text/css'></head>";
}
?>
при загрузке хеда, маленький скрипт будет запрашивать какой стиль пользователь выбрал ранее
2.форма из которой пользователь выбирает цсс
Код:
if(isset($_REQUEST['save'])) { 
$css_choice = $_REQUEST['css_selector'];
$save_css_que = mysql_query("UPDATE users SET user_css='$css_choice'");
}

<form action='<?php echo $_SERVER['PHP_SELF']?>' method='post'>
<select name='css_selector'>
<option value='silver'>Silver Blue</option>
<option value='orange'>Annoying Orange</option>
<option value='dark'>Dark Sky</option>
</select>
<input type='submit' value='Save my CSS' name='save' />
</form>
Не проще пользоваться цифрами? Ведь вместо
Код:
<option value='silver'>Silver Blue</option>
<option value='orange'>Annoying Orange</option>
<option value='dark'>Dark Sky</option>
кто-то может ввести что нибудь не нужное в исходном коде и тогда будет неверно открываться страница, либо можно сделать инъекцию :excl:
Например храним в бд, цифры от цсс, их проще обрабатывать)
что то вроде этого:
Код:
<?
$current_user_id = $_SESSION['current_user_id'];
function get_css() {
$css_que = mysql_query("SELECT * FROM `users` WHERE id='$current_user_id'");
$css_fetcher = mysql_fetch_array($css_que);
$user_css = $css_fetcher['user_css'];
echo "<head><title>my Cute Site</title><link href='$user_css.css' rel='stylesheet' type='text/css'></head>";
}
//при загрузке хеда, маленький скрипт будет запрашивать какой стиль пользователь выбрал ранее
//2.форма из которой пользователь выбирает цсс
if(isset($_REQUEST['save'])) { 
$css_choice = $_REQUEST['css_selector'];
$css_choice=intval($css_choice);
if($css_choice>3 || $css_choice<1){$css_choice=1;}
$save_css_que = mysql_query("UPDATE users SET user_css='$css_choice'");
}

echo '<form action='.$_SERVER['PHP_SELF'].' method="post">
<select name="css_selector">
<option value="1">Silver Blue</option>
<option value="2">Annoying Orange</option>
<option value="3">Dark Sky</option>
</select>
<input type="submit" value="Save my CSS" name="save"/>
</form>';
?>
Идея то хорошая, но у меня на сайте пока нет регистрации :unsure:
Может можно чуток изменить код, чтобы он сохранял выбранный дизайн сайта для определенного IP адреса в текстовый файл?
Неее... Не надо текстовый документ... Это во-первых: Долго, во вторых, ip всегда дается разный (последние цифры), а это значит что надо переписывать весь код, что бы он обрабатывал только несколько цифр в ip, в-третьих, в текстовых документах обычно не хранят такие данные (специально для этого и разработаны бд), с ними кстати намного проще чем с текстовыми файлами) Если уж хотите привязывать к ip то делайте через куки)
я ж нубло! может есть ссылка на пример работы такого скрипта?
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
я ж нубло! может есть ссылка на пример работы такого скрипта?
Гугл в помощь ;) Думаю с поиском то уж справитесь? Главное не забываем в поисковом запросе делать приписку: "php для чайников"
Я когда что то новенькое ищу, то всегда эту приписку ставлю, тогда страницы находятся такие, где обычно более всё подробно описано :biggrin:
Вот вам вариант мой с помощью сессиями:
1. Создаем файл "1.php" (без кавычек) в корневой директории, т.е в том месте где расположен сайт
2. В этом же месте создаем папку и называем её "css" (без кавычек)
3. В этой папке "css" создаем два файла "1.css" (без кавычек) и "2.css" (без кавычек)
4. В "1.css" вставляем этот код:
Код:
body{
font-family: Tahoma, Verdana, Arial;
margin: 0px;
padding: 0px;
background-color: #FFFFCC;
text-align: left;
font-size: 13px;
color:#000; 
padding: 0px 1px 1px 1px;
}
5. В "2.css" вставляем вот этот:
Код:
body{
font-family: Tahoma, Verdana, Arial;
margin: 0px;
padding: 0px;
background-color: #555666;
text-align: left;
font-size: 13px;
color:#000; 
padding: 0px 1px 1px 1px;
}
6. Теперь берем файл "1.php" и вставляем в него этот код:
Код:
<? session_start(); ?>
<html>
<head>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<title>Css</title>
<? if(!isset($_SESSION['css'])) {$_SESSION['css']=1;} echo '<link rel="stylesheet" type="text/css" href="/css/'.$css.'.css" type="text/css">'; ?>
</head>
<body>
<? 
if(isset($_POST['zagruzka'])){
$_style=intval($_POST['style']);
if($_style>2 || $_style<1) {$_style=1;}
$_SESSION['css']=$_style;
}
else{
echo '<form action="" method="post">Выберите стиль сайта:<br>
<SELECT name="style"> <OPTION VALUE="1">1</option> <OPTION VALUE="2">2</option></select><input type="submit" name="zagruzka" value="Войти"></form>';
}
echo '<a href="'.$_SERVER['PHP_SELF'].'?r='.rand(100,10000).'">Обновить страницу</a>';
?>
<div><p id="text_">olololo</p></div>
</body>
</html>
7. Проверяем что бы всё было сохранено.
Теперь переходим в браузере на страницу "1.php" и пробуем) всё должно работать)
 
Регистрация
23.04.2011
Сообщения
9
я ж нубло! может есть ссылка на пример работы такого скрипта?
Гугл в помощь ;) Думаю с поиском то уж справитесь? Главное не забываем в поисковом запросе делать приписку: "php для чайников"
Я когда что то новенькое ищу, то всегда эту приписку ставлю, тогда страницы находятся такие, где обычно более всё подробно описано :biggrin:
Вот вам вариант мой с помощью сессиями:
1. Создаем файл "1.php" (без кавычек) в корневой директории, т.е в том месте где расположен сайт
2. В этом же месте создаем папку и называем её "css" (без кавычек)
3. В этой папке "css" создаем два файла "1.css" (без кавычек) и "2.css" (без кавычек)
4. В "1.css" вставляем этот код:
Код:
body{
font-family: Tahoma, Verdana, Arial;
margin: 0px;
padding: 0px;
background-color: #FFFFCC;
text-align: left;
font-size: 13px;
color:#000; 
padding: 0px 1px 1px 1px;
}
5. В "2.css" вставляем вот этот:
Код:
body{
font-family: Tahoma, Verdana, Arial;
margin: 0px;
padding: 0px;
background-color: #555666;
text-align: left;
font-size: 13px;
color:#000; 
padding: 0px 1px 1px 1px;
}
6. Теперь берем файл "1.php" и вставляем в него этот код:
Код:
<? session_start(); ?>
<html>
<head>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<title>Css</title>
<? if(!isset($_SESSION['css'])) {$_SESSION['css']=1;} echo '<link rel="stylesheet" type="text/css" href="/css/'.$css.'.css" type="text/css">'; ?>
</head>
<body>
<? 
if(isset($_POST['zagruzka'])){
$_style=intval($_POST['style']);
if($_style>2 || $_style<1) {$_style=1;}
$_SESSION['css']=$_style;
}
else{
echo '<form action="" method="post">Выберите стиль сайта:<br>
<SELECT name="style"> <OPTION VALUE="1">1</option> <OPTION VALUE="2">2</option></select><input type="submit" name="zagruzka" value="Войти"></form>';
}
echo '<a href="'.$_SERVER['PHP_SELF'].'?r='.rand(100,10000).'">Обновить страницу</a>';
?>
<div><p id="text_">olololo</p></div>
</body>
</html>
7. Проверяем что бы всё было сохранено.
Теперь переходим в браузере на страницу "1.php" и пробуем) всё должно работать)
:wacko: НЕ РАБОТАЕТ!!!(((
Я сделал все точь-в-точь как написано и не работает!
ВСЁ! Я нашел как переключаться между стилями! Вот ссылка
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
я ж нубло! может есть ссылка на пример работы такого скрипта?
Гугл в помощь ;) Думаю с поиском то уж справитесь? Главное не забываем в поисковом запросе делать приписку: "php для чайников"
Я когда что то новенькое ищу, то всегда эту приписку ставлю, тогда страницы находятся такие, где обычно более всё подробно описано :biggrin:
Вот вам вариант мой с помощью сессиями:
1. Создаем файл "1.php" (без кавычек) в корневой директории, т.е в том месте где расположен сайт
2. В этом же месте создаем папку и называем её "css" (без кавычек)
3. В этой папке "css" создаем два файла "1.css" (без кавычек) и "2.css" (без кавычек)
4. В "1.css" вставляем этот код:
Код:
body{
font-family: Tahoma, Verdana, Arial;
margin: 0px;
padding: 0px;
background-color: #FFFFCC;
text-align: left;
font-size: 13px;
color:#000; 
padding: 0px 1px 1px 1px;
}
5. В "2.css" вставляем вот этот:
Код:
body{
font-family: Tahoma, Verdana, Arial;
margin: 0px;
padding: 0px;
background-color: #555666;
text-align: left;
font-size: 13px;
color:#000; 
padding: 0px 1px 1px 1px;
}
6. Теперь берем файл "1.php" и вставляем в него этот код:
Код:
<? session_start(); ?>
<html>
<head>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<title>Css</title>
<? if(!isset($_SESSION['css'])) {$_SESSION['css']=1;} echo '<link rel="stylesheet" type="text/css" href="/css/'.$css.'.css" type="text/css">'; ?>
</head>
<body>
<? 
if(isset($_POST['zagruzka'])){
$_style=intval($_POST['style']);
if($_style>2 || $_style<1) {$_style=1;}
$_SESSION['css']=$_style;
}
else{
echo '<form action="" method="post">Выберите стиль сайта:<br>
<SELECT name="style"> <OPTION VALUE="1">1</option> <OPTION VALUE="2">2</option></select><input type="submit" name="zagruzka" value="Войти"></form>';
}
echo '<a href="'.$_SERVER['PHP_SELF'].'?r='.rand(100,10000).'">Обновить страницу</a>';
?>
<div><p id="text_">olololo</p></div>
</body>
</html>
7. Проверяем что бы всё было сохранено.
Теперь переходим в браузере на страницу "1.php" и пробуем) всё должно работать)
:wacko: НЕ РАБОТАЕТ!!!(((
Я сделал все точь-в-точь как написано и не работает!
ВСЁ! Я нашел как переключаться между стилями! Вот ссылка
У меня работает нормально :blink:
Только этот код по вашей ссылке на js:) Он очень отличается от пхп, пхп исполняется на сервере(т.е в компьютере провайдера, так скажем), а js исполняется в компьютере пользователя (т.е тем, кто находится на странице) :)
Всё, я спать, у меня уже почти 2 ночи :sleep: :laugh:
 

pinz

Active Member
Регистрация
24.04.2011
Сообщения
35
Код:
$css_choice=intval($css_choice);
if($css_choice>3 || $css_choice<1){$css_choice=1;}
оч. клевое решение - если случаеццо трабл просто подгрузить дефолтовый цсс, например 1.цсс

Спасиба! буду юзать! :laugh:

ничего не изменяется :angry:
может у меня цсс файлы не так называются?
лол наверное :laugh:

Код:
form action=""
отправит к себе как и
Код:
$_SERVER['PHP_SELF']
???
 
Статус
Закрыто для дальнейших ответов.
Верх Низ