PHP и с чем его едят....

Mr.Sale

New Member
utf работает с иероглифами и разными алфавитами. По поводу "уже", разве это не тот стандарт который приняли на смену убогим 255 символьным кодировкам?! а еще аякс...
 

[fly]

Sweet orange
Есть скрипт:

PHP:
if(empty($user_num))	{
	$_SESSION['user_num']=rand(111111111,999999999);
	$user_num=$_SESSION['user_num'];
}	else	{
		echo $user_num;
}
Вроде все просто. Зашел человек на сайт - присвоили сессию с рендомным числом.

Далее, если переменная $user_num не пустая - вывожу эту самую переменную с данными сессии, но данных никаких нет. Т.е. в данном случае $user_num ничего не выводит.

Но если отдельно, вне проверки вывести, то пишет число, допустим пишет: 1234567

А теперь сам вопрос. А точнее два. Почему $user_name не выводит данных в моей конструкции и почему при обновлении окна браузера, меняется число "1234567", которое занесено в сессию! При этом на локальном хосте она не меняется.
 
Останнє редагування:

Dre.hz

Active Member
fly,
http://php.net/manual/en/intro.session.php сказав(ла):
The session support allows you to store data between requests in the $_SESSION superglobal array. When a visitor accesses your site, PHP will check automatically (if session.auto_start is set to 1) or on your request (explicitly through session_start() or implicitly through session_register()) whether a specific session id has been sent with the request. If this is the case, the prior saved environment is recreated.
Просто сделайте session_start() перед условием
 

[fly]

Sweet orange
Проблема в том, что так и есть. Это условие находится в файле header.php где первая строка именно session_start(), а дальше это условие. И в чем тут проблема, не понимаю. На другом сайте, на том же хостинге, такой же код, но работает как надо. А на этом не работает!
 

Dre.hz

Active Member
fly, тогда ищите баг методически. Идентификатор сессии можно передать либо через GET/POST, либо через куки. Убедитесь, что он сохраняется после первого захода на страницу и передается при последюующем (можно посмотреть дамп HTTP-заголовков).
Дальше уже в зависимости от полученного результата — если он не сохраняется в браузере между двумя запросами, развивайте это направление. Если же он не передается в браузер при первом запросе, смотрите phpinfo на сервере.

Правильный вопрос здесь — как работают сессии? А зная, как они работают, можно и отследить, где проблема.
 

dreamer

Member
Есть скрипт:

PHP:
if(empty($user_num))	{
	$_SESSION['user_num']=rand(111111111,999999999);
	$user_num=$_SESSION['user_num'];
}	else	{
		echo $user_num;
}
Вроде все просто. Зашел человек на сайт - присвоили сессию с рендомным числом.

Далее, если переменная $user_num не пустая - вывожу эту самую переменную с данными сессии, но данных никаких нет. Т.е. в данном случае $user_num ничего не выводит.

Но если отдельно, вне проверки вывести, то пишет число, допустим пишет: 1234567

А теперь сам вопрос. А точнее два. Почему $user_name не выводит данных в моей конструкции и почему при обновлении окна браузера, меняется число "1234567", которое занесено в сессию! При этом на локальном хосте она не меняется.
Попробуйте сначала сделать
PHP:
	$user_num=$_SESSION['user_num'];
а потом уж работать с переменной.
 

[fly]

Sweet orange
dreamer, уже все работает, но спасибо за внимание к моему вопросу.

Есть еще один вопрос. Есть таблица с полями:

| id | category_id | pod_category_id | product_name | price|

В поле `price` только числа без указания валюты. Делаю запрос для вывода товара с сортировкой по цене:

PHP:
$q=mysql_query("SELECT * FROM `products` WHERE(`pod_category_id`='$pod_category_id') ORDER BY price DESC");
Сортировка работает, но не так как нужно. Ставлю в запросе ASC, товар меняет позиции, но сортируется явно не по цене.

Теперь вопрос. Почему сортирует не правильно?
 
Зверху