Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2009, 00:47   #1
Jensi
beneto.ru
Форумчанин
 
Регистрация: 09.03.2009
Сообщений: 174
Вопрос Смена скина сайта на PHP

В общем не получается сделать нормально смену скина (оформления страниц) на сайте на PHP. Сперва делал через куки,теперь делаю через сессию,но при нажатии на ссылки на сайте,скин сам меняется.
Форма для выбора скина:
Код HTML:
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post" name="stl">
<select name="styleid">
<optgroup label="Выбор стиля">
<option value="white" >-White</option>
<option value="black" >-Black</option>
</optgroup>
</select>
<input type="submit" name="submit" value="OK">
</form>
Как правильно можно написать проверку на PHP? Т.е. нужно проверить была ли нажата кнопка,какой скин выбран и т.д.
Я написал,но там такой бред уже,что даже не выкладываю. не важно как писать скрипт: с куками или с сессией,нужно чтоб работал...
upd:
Нужно просто менять файлы CSS и всё при определённом выборе Если кто писал такое, подскажите как правильно это всё организовать или дайте готовый О_о

Последний раз редактировалось Jensi; 05.05.2009 в 00:49.
Jensi вне форума Ответить с цитированием
Старый 05.05.2009, 04:21   #2
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

т.к. у тебя всего 2 скина можно сделать через if, но лучше я думаю делать через switch т.к. при добавлении нового скина будет проще сделать... задаешь в сессии переменную style и передаешь ей значения либо 0 либо 1 и в зависимости от этого значения приписываешься в
PHP код:
if ($style==0) {
$skin='black'; } else { $skin='white'; }
<link href="<? echo $skin?>" rel="stylesheet" type="text/css" />
что то примерно такого вида...
Перед тем как спросить ищи на форуме и в GOOGLE

Последний раз редактировалось KORN; 05.05.2009 в 04:24.
KORN вне форума Ответить с цитированием
Старый 05.05.2009, 12:36   #3
cronfy
Пользователь
 
Регистрация: 09.10.2008
Сообщений: 92
По умолчанию

Цитата:
Сообщение от Jensi Посмотреть сообщение
Как правильно можно написать проверку на PHP? Т.е. нужно проверить была ли нажата кнопка,какой скин выбран и т.д.
1. Кнопка была нажата, если пришёл post-запрос. Тут даже проверять ничего не надо. И кстати, атрибут name у input type="submit" прописывать не обязательно.

2. Какой скин выбран видно в $_POST['styleid'].

3. Сохранить его можно с помощью
PHP код:
session_start(); // это лучше делать вообще в начале выполнения скрипта
$_SESSION['style'] = $_POST['styleid']; // сохраняем в сессию стиль 
3. Показать с помощью:

в скрипте, который обрабатывает действие

PHP код:
session_start();

switch (
$_SESSION['style']) {
  case 
'black':
    
$css 'black'; break;
  case 
'white':
  default:
    
$css 'white';

В шаблоне:

Код HTML:
<link rel="stylesheet" type="text/css" href="/css/<?php echo $css ?>.css" />
SPRINTHOST.RU — вот, что я люблю ;-)
cronfy вне форума Ответить с цитированием
Старый 06.05.2009, 00:18   #4
Jensi
beneto.ru
Форумчанин
 
Регистрация: 09.03.2009
Сообщений: 174
Вопрос

cronfy,спасибо конечно,но я тоже самое сделал через if-else тогда,но проблема в том,что при переходе по ссылкам скин ставится на дефолтный,т.е. я зашёл на сайт и скин по дефолту белый,нажал на чёрный скин и он поставился, но при переходе по ссылкам(в этом же файле) скин опять становится белым! Тоже самое и с куками происходит
Я думал,что я не могу сделать смену скина,а оказалось,что всё правильно и я делал. Думал,может сессия пропадает,но если и на куках так,то я не знаю что ещё можно сделать...
p.s.: скрипт переделал:
PHP код:
session_start();
$_SESSION['style'] = $_POST['styleid']; // сохраняем в сессию стиль 

switch ($_SESSION['style']) {
  case 
'black'$css 'style/css2.css';  break;
  case 
'white'$css 'style/css.css';   break;
  default: 
$css 'style/css.css';

Ибо две сессии не могут быть и путь тоже на css другой(с переменной)
Будут ещё идеи по поводу таких вещей интересных?

Последний раз редактировалось Jensi; 06.05.2009 в 00:20.
Jensi вне форума Ответить с цитированием
Старый 06.05.2009, 01:02   #5
cronfy
Пользователь
 
Регистрация: 09.10.2008
Сообщений: 92
По умолчанию

Тогда надо смотреть, куда куки пропадают (сессии ведь тоже на куках работают). Протестируй отдельно, проставляются ли куки (может, в браузере заблокировано), сохраняются ли файлы сессиий (может, директория для файлов сессий указана неверно). В error_log тоже стоит заглянуть.

Самый тривиальный способ проверки:

PHP код:
echo "<pre>";
session_start();
print_r($_SESSION);
$_SESSION[rand(0,100)] = 'i am session variable';
echo 
"</pre>"

И F5, F5, F5...
SPRINTHOST.RU — вот, что я люблю ;-)

Последний раз редактировалось cronfy; 06.05.2009 в 01:06.
cronfy вне форума Ответить с цитированием
Старый 08.05.2009, 08:10   #6
Jensi
beneto.ru
Форумчанин
 
Регистрация: 09.03.2009
Сообщений: 174
Вопрос

Всё работает с этим скриптом, выводит в массиве рандомные числа примерно и пишет "i am session variable".
Но смена скина переключается назад во всех браузерах,а не только в одном, я сам не знаю, что это может быть Скрипты верные,а оно так делает,может на хостинге попробовать?!)
Jensi вне форума Ответить с цитированием
Старый 08.05.2009, 14:08   #7
knight
Дон Кихот
Форумчанин
 
Аватар для knight
 
Регистрация: 17.01.2008
Сообщений: 130
По умолчанию

cookie прописываются только !после! обновления страницы, а в сессии данные сразу попадают... а сам на такое постоянно попадаюсь...
knight вне форума Ответить с цитированием
Старый 08.05.2009, 15:41   #8
Jensi
beneto.ru
Форумчанин
 
Регистрация: 09.03.2009
Сообщений: 174
Печаль

Цитата:
cookie прописываются только !после! обновления страницы, а в сессии данные сразу попадают... а сам на такое постоянно попадаюсь...
да я это знаю, но хоть сам их там пропиши,ну не работает ни как
Сегодня буду париться с этой всей фигнёй,вплоть до переменных
Jensi вне форума Ответить с цитированием
Старый 10.05.2009, 00:41   #9
Jensi
beneto.ru
Форумчанин
 
Регистрация: 09.03.2009
Сообщений: 174
Радость

Вот рабочий скрипт:
PHP код:
<?
session_start
();
$stylesarray = array("vista","mac");

if(isset(
$_POST['select']))
{
    
$theme $_POST['select'];
    
$_SESSION['themez'] = $theme;
}
else if(!isset(
$_SESSION['themez']))
{
    
$_SESSION['themez'] = $stylesarray[0];
    
$theme $_SESSION['themez'];
}
else
{
    
$theme $_SESSION['themez'];
}
?>
Код HTML:
<form action="" name="themechanger" method="post">
<select name="select" id="select">
<?php for($i = 0; $i < sizeof($stylesarray); $i++): ?>
<option value="<?php echo $stylesarray[$i]; ?>"
<?php if($stylesarray[$i] == $_SESSION['themez']) echo "selected"; ?> onClick="this.form.submit();">Тема 
<?php echo $stylesarray[$i]; ?></option>
<?php endfor; ?>
</select>
</form>
тут были личные данные. удалено! //модератор

Последний раз редактировалось SkyM@n; 10.05.2009 в 22:32.
Jensi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена скина AlphaControls ScreN Компоненты Delphi 53 25.06.2013 06:03
Глюк из-за скина Altera Свободное общение 5 11.05.2008 07:01
Интеграция сайта с платежной системой (PHP) AndreyAndrey Фриланс 1 02.11.2007 01:41
Насчёт скина JoanM Win Api 5 16.04.2007 16:45