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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2012, 20:54   #1
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию Как более профессионально написать код

Есть 2 решения одной и той же задачи , Подскажите как будет более правильно его реализовать ? И почему ?
................
Первый вариант

PHP код:
if(!isset($_COOKIE['user_data'])){

    
$user_data['date'] = date("h:i.s");
    
$user_data['cnt'] = '1';

setcookie("user_data"serialize($user_data), time()+20);
}else {
$user_data unserialize($_COOKIE['user_data']);
    
$last_visit $user_data['date'];
    
    
$user_data['date'] = date("h:i.s");
    
$user_data['cnt']++;    
    
setcookie("user_data"serialize($user_data), time()+20);

...............
Второй вариант
PHP код:
$visit_counter 0;
if(isset(
$_COOKIE['visitCounter']) && is_numeric($_COOKIE['visitCounter'])){
    
$visit_counter $_COOKIE['visitCounter'] * 1;
}
$visit_counter++;

$last_visit '';
if(isset(
$_COOKIE['lastVisit'])){
    
$last_visit = (int)$_COOKIE['lastVisit'];
}
setcookie('visitCounter'$visit_counter0x7FFFFFFF);
setcookie('lastVisit'date('d/m/Y H:i:s'), 0x7FFFFFFF); 
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

Последний раз редактировалось pompiduskus; 02.04.2012 в 20:57.
pompiduskus вне форума Ответить с цитированием
Старый 02.04.2012, 22:01   #2
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Первый вариант больше нравится, чисто с эстетической точки зрения, хотя по сути они одинаковы. Только почему кук на 20 сек ставите? А во втором варианте на хрен знает сколько? Ставьте на месяц, этого хватит.
Gorychev вне форума Ответить с цитированием
Старый 02.04.2012, 22:03   #3
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Это просто пример, не важны сами данные .
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 02.04.2012, 22:05   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

1-й вариант:
- присутствует ненужный копипаст кода:
PHP код:
$user_data['date'] = date("h:i.s");
//...
setcookie("user_data"serialize($user_data), time()+20); 
- нет проверки, что unserialize вернула массив, и что в нем есть нужный нам элемент:
PHP код:
$user_data unserialize($_COOKIE['user_data']);
$last_visit $user_data['date']; 
2-й вариант:
- проверка isset - бесполезна в данном контексте, ибо допускает нулевое значение - а это ничем не отличается от $visit_counter = 0;
- $last_visit - задается строка с датой и временем, но потом зачем-то выполняется приведение типа к (int):
PHP код:
if(isset($_COOKIE['lastVisit'])){
    
$last_visit = (int)$_COOKIE['lastVisit'];
}
//...
setcookie('lastVisit'date('d/m/Y H:i:s'), 0x7FFFFFFF); 
Более компактно:
PHP код:
$last_visit = (!empty($_COOKIE['lastVisit'])) ? $_COOKIE['lastVisit'] : ''
$visitCounter = (!empty($_COOKIE['visitCounter'])) ? ++$_COOKIE['visitCounter'] : 1
setcookie("lastVisit"date('Y-m-d H:i:s'), time()+20); 
setcookie("visitCounter"$visitCountertime()+20); 
Ну и в функцию всё это вынести, конечно же.

Последний раз редактировалось Andkorol; 02.04.2012 в 22:16. Причина: compact)
Andkorol вне форума Ответить с цитированием
Старый 02.04.2012, 23:35   #5
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Понятно, Спасибо .
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать код более качественным rUs_LAN C# (си шарп) 3 23.11.2011 14:28
Как написать код VBA SMShrek Microsoft Office Excel 4 28.09.2010 12:09
как написать код на кнопку на C#???? WhiteN Помощь студентам 0 08.05.2010 14:10
Как вам код, и есть ли более простые решения ? SuBwooFer PHP 1 10.09.2009 15:08