PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (2): [1] 2 »

> Найдено сообщений: 17
keysi_ Отправлено: 25 Апреля, 2014 - 00:57:23 • Тема: Очистка сессии при закрытии браузера • Форум: Вопросы новичков

Ответов: 20
Просмотров: 2721
Народ, в общем проблема приняла неожиданный оборот! Решение под цитатами.

LIME пишет:
keysi_ подозреваю что ты каждый раз перед проверкой ее устанавливаешь

Нет, конечно. Это же глупо :)

LIME пишет:
(Добавление)
смотри в инструменте разработчика SID
если после рестарта браузера он не изменился значит проблема в настройках

Настройки Apache перелопатил все. Браузеру пофиг.

Stierus пишет:
идентификатор сессии хранится в куке, настрой время жизни сессионной куки как тебе нужно и проблема решится

Тоже уже стал подумывать в этом направлении, как о единственном выходе. Но так как я точно знаю, что кука отвечающая за сессию должна умереть не зависимо от настроек времени жизни cookes я решил идти до конца.

Итак, я полазил в интернетах и хабрах, оказывается много где люди задают такой вопрос, и их либо не понимают и обзывают косорукими, либо вопросы остаются без ответов. На одном из форумов человек предположил решение проблемы (очень замудрённо и на англиском). Попробую сейчас расставить всё точки над i.


Итак, дело исключительно в браузерах семейства Chrome! Они совсем НЕ ОБНОВЛЯЮТ PHPSESSID на всех сайтов, если в настройках браузера стоит галочка: "Продолжать работу с того же места".
Я бы ещё понял касательно открытых, но это относится и к тем сайтам, которые были закрыты пользователем перед закрытием браузера! Подозреваю, также, что галочка "разрешить использовать браузер в фоновом режиме" (по умолчанию включена) работает точно также, а там гляди google ещё что нибудь этакое придумает.


Внимание! Поясню, как эта проблема важна для пользователей сайта. Не убиваемая сессия означает, что галочка в форме авторизации любого сайта "чужой компьютер/не запоминать" (запрет на сохранение куков) из за этой фишки также НЕ СРАБОТАЕТ. А значит, вместо привычного обновления сессии после закрытия браузера, на чужом устройстве - останутся все ваши данные сессии. Поэтому при использовании Хрома всегда нажимайте "выход" чтобы сбросить сессию средствами сайта, а для надёжности, можно ещё удалять за собой данные сессии вручную или вообще использовать режим "инкогнито".

Вот такая вот фича-баг.
Кому не жалко, принимаю "спасибы" за полезное наблюдение.
keysi_ Отправлено: 24 Апреля, 2014 - 21:59:57 • Тема: Дозапись данных в таблицу • Форум: Вопросы новичков

Ответов: 2
Просмотров: 126
Учёные доказали что "Человек в принципе не способен решать сложные задачи", а вы ещё и jQuery всё усложняете.

Начните с простого, сделайте маленькую табличку на html и к ней маленький скрипт на чистом JavaScript, который будет делать +1 строчку в таблицу. jQuery добавите только на последнем этапе, так как он упрощает реализацию задачи (кроссбраузерность) и добавляет красявостей, но совершенно не помогает в понимании проблемы.

Касательно самой проблемы, я думаю вам должен помочь метод insertRow() и другие функции для работы с DOM элементами таблицы. Я сам не очень хорошо это помню, вам лучше всего посмотреть про это на javascript ру , там очень хороший справочник. Здесь в основном вопросы по PHP.
keysi_ Отправлено: 24 Апреля, 2014 - 21:47:11 • Тема: Работа с массивами MySQL • Форум: Вопросы новичков

Ответов: 8
Просмотров: 333
Я правильно понимаю, что речь идёт о том чтобы кроме таблицы "account" вам также нужны данные из таблиц "user" и "roledata"?

Если да, то скажите, Вам нужно решение как это сделать последовательно на php или вам нужен сложный запрос в БД который вытащит все эти данные сразу?
keysi_ Отправлено: 24 Апреля, 2014 - 21:33:51 • Тема: Очистка сессии при закрытии браузера • Форум: Вопросы новичков

Ответов: 20
Просмотров: 2721
Строитель, не, ну я понимаю что сессию можно убить вручную, можно даже так:
но это не подходит, так как речь идёт о том, чтобы сессия умирала про закрытии браузера.

Подозреваю, что где то косяк с сервером, но не могу найти какой параметр отвечает за смерть сессии.
keysi_ Отправлено: 24 Апреля, 2014 - 21:04:43 • Тема: Очистка сессии при закрытии браузера • Форум: Вопросы новичков

Ответов: 20
Просмотров: 2721
Вот такой код;


Установил значение $_SESSION['login']=1
Закрываю браузер. открываю, сессия на месте!

Я всегда думал что сессия должна умирать при закрытии браузера, но она ни куда не делась.
Я что то не понимаю или так и должно работать?
keysi_ Отправлено: 26 Октября, 2013 - 14:53:03 • Тема: Передача данных заказа из корзины в базу • Форум: Вопросы новичков

Ответов: 17
Просмотров: 737
Не надо, данные обычно сериализуют перед записью в текстовый файл.
В вашей ситуации, как уже было сказано выше, стоит отказаться от сериализации вовсе. Потому как кроме траты ресурсов на эту операцию вы ни чего не добьётесь.
Сделайте в БД все необходимые поля, цена, товар, количество, покупатель итп.

Из формы такие же поля отправляете (либо создаёте непосредственно перед записью в бд). Обрабатываете их и записываете, текстовые записи обрабатываете mysql_real_escape_string(), числовые intval(). Так будет проще. Потом когда нужно будет организовать поиск или любой другой запрос к этим данные в БД вам будет намного проще чем каждый раз разбирать сериализованные данные.

Кстати, возьмите любой движок магазина и с открытым кодом и посмотрите как там выполняется обработка. Поверьте, когда вы разберётесь как там это реализовано вы многому научитесь и сможете сделать не хуже.
keysi_ Отправлено: 25 Октября, 2013 - 11:42:17 • Тема: Нижнее подчёркивание __ перед названием функций в php • Форум: Вопросы новичков

Ответов: 3
Просмотров: 1566
Спасибо, стало боле-менее понятно.
keysi_ Отправлено: 25 Октября, 2013 - 11:41:34 • Тема: Не могу сообразить причину такой работы класса • Форум: Вопросы новичков

Ответов: 1
Просмотров: 78
Почему, в примере ниже, при запросе свойства возвращает "undeclared static property", а при запросе метода всё выполняется без ошибок?
PHP:
скопировать код в буфер обмена
  1. class TestClass{
  2.   public $testVar='var'; // без static
  3.   public function testFunc(){  // тоже без static
  4.     return 'func';
  5.   }
  6.   public function test(){
  7.     return self::$testVar; // 1: запрос свойства
  8.    // return self::testFunc(); // 2: запрос метода
  9.   }
  10. }
  11.  
  12. $obj = new TestClass();
  13. echo $obj->test();
keysi_ Отправлено: 25 Октября, 2013 - 11:16:47 • Тема: Передача данных заказа из корзины в базу • Форум: Вопросы новичков

Ответов: 17
Просмотров: 737
Хм, странно, у меня пример отлично работает
Попробуйте поменять строку:
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("INSERT INTO user (text) VALUES ($text)");

На
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query('INSERT INTO `user` (`text`) VALUES ("'.$text.'")');


Потому что я не зря взял ваши сериализованные данные в кавычки.Надо учитывать что в Mysql улетает чистый текст а не переменная и поэтому кавычки внутри текста воспринимаются как конструкции sql
И желательно любой текст предварительно обработать функцией mysql_real_escape_string();

И, напишите, ошибку которую возвращает sql, сложно разбираться почему у вас ни чего не работает на основе догадок.
keysi_ Отправлено: 24 Октября, 2013 - 23:13:37 • Тема: Передача данных заказа из корзины в базу • Форум: Вопросы новичков

Ответов: 17
Просмотров: 737
Как обычную строку:
PHP:
скопировать код в буфер обмена
  1. INSERT INTO `cart`
  2. ( `id` , `item` )
  3. VALUES
  4. ( '1' , 'a:1:{i:1;a:2:{s:5:\\"price\\";s:3:\\"299\\";s:5:\\"count\\";i:1;}}' );
  5. ");
keysi_ Отправлено: 24 Октября, 2013 - 19:53:42 • Тема: Нижнее подчёркивание __ перед названием функций в php • Форум: Вопросы новичков

Ответов: 3
Просмотров: 1566
Всем привет. Два вопроса.

1. Подскажите или ткните где написано о том для чего и как правильно используются символы двойного нижнего подчеркивания в php и вообще в программировании. Почему в одних предопределённых функциях они есть, в других нет, какое значение они имеют в классах и в создаваемых функциях.
Я ни чего не нашёл по форуму и в яндексе, видимо потом, что символы __ не считаются поисковыми словами.

2. (Возможно прояснится после понимания первого вопроса, но всё же)
В статье http://www.php.su/learnphp/phpoo/?php5_2 в разделе "Явное клонирование объекта" автор пишет, что для клонирования используется вызов clone но в примере это слово не используется, за то есть сноска в скобах: который вызывает метод __clone() объекта. Но в примере всего один объект и что куда должно копироваться если в методе используется только функция print мне совсем непонятно. Объясните пожалуйста, а то у меня уже мозги набикрень.
keysi_ Отправлено: 18 Мая, 2010 - 10:02:24 • Тема: Помогите с запросом • Форум: SQL и Архитектура БД

Ответов: 1
Просмотров: 24
В базе данных имеются две таблицы:
db_my_category - категории новостей:
id | name | runame | off |
1 | animal | животные | 1 |
2 | politic | политика | 1 |
3 | world | в мире | 1 |
4 | test | test | 0 |

db_my_news - собственно сами новости
id | title | text | category | date |
1 | news1 | sdfds | 1 | 05/05/2005 |
2 | news2 | czdx | 1 | 05/05/2005 |
3 | news3 | zxcz | 3 | 05/05/2005 |


Задача: получить список категорий и количество новостей в этих категориях, типа такого:
id | name | runame | count |
1 | animal | животные | 2 |
2 | politic | политика | 0 |
3 | world | в мире | 1 |


Надеялся что заработает что нибудь такое, но синтаксис не позволяет, куча лагов:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT category.id AS id, category.name AS name, category.runame AS runame, COUNT(publ.*) AS count
  2. FROM db_my_category AS category, db_my_news AS publ
  3. WHERE category.off <> '0' AND publ.category = category.id
  4. ORDER BY id ASC
  5.  

ps Важное условие: все необходимо вместить в один запрос, для уменьшения нагрузки на сервер.
________________________________ ________________________________ __________
(Добавление)
Всем спасибо. Улыбка Решение найдено.

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT category.id AS catid, category.name AS name, category.runame AS runame, COUNT(publ.*) AS count, (SELECT COUNT(*) AS count FROM db_my_news AS publ WHERE publ.category=catid) AS count
  2. FROM db_my_category AS category
  3. WHERE category.off <> '0'
  4. ORDER BY id ASC


Как всегда, все было проще чем казалось. Хотя все же получилось очень громиоздко.
Может у кого есть еще идеи?
keysi_ Отправлено: 26 Октября, 2009 - 00:50:08 • Тема: С чего начать создание сайта - этапы • Форум: Прочее

Ответов: 5
Просмотров: 71
Самый лучший этап для новичка, это вышел в интернет, нашел мастера, сказал что хочешь, и получил результат. А все остальное только если нет денег или если есть время чтобы эти заниматься.
keysi_ Отправлено: 26 Октября, 2009 - 00:24:22 • Тема: вопрос по серверу • Форум: Программирование на PHP

Ответов: 12
Просмотров: 605
mascot пишет:
то есть мне придется при отправке данных из формы вручную присваивать полям переменные?


Ну регистр глобалс не просто так выключили, он представляет собой дыру в безопасности.
Я когда прекратил ими пользоваться взял за правила использовать переменные типа $_POST['var'] . Но вообще лучше задачу в студию, и вместе придумаем как лучше. Улыбка
keysi_ Отправлено: 26 Октября, 2009 - 00:16:53 • Тема: вопрос про разбор ссылки и if • Форум: Программирование на PHP

Ответов: 13
Просмотров: 900
Как ни странно, но лучшая книжка на эту тему - это стандартный справочник по PHP и конкретная задача. Еще не плохо под рукой иметь какой нибудь сборник простых готовых скриптов, на первое время, чтобы контролировать себя, посмотрев как это делают другие.
Из книжек, есть неплохая книга - Лаура Томпсон и Люк Веллинг PHP и MySQL. Но все же самая лучшее - это собственный опыт и, повторюсь, справочник под рукой.

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB