Работа с сессиями.
|
|
last2424 | Дата: Среда, 29 Января 2014, 18:41 | Сообщение # 1 |
30 мл. блоков
Сейчас нет на сайте
| Мне нужно найти данные о пользователе в бд через сессию. Завод имени пользователя в сессию: Код $_SESSION['user_name'] = $name; $login2 = $_SESSION['user_name']; Поиск пользователя в бд через сессию: Код $result2=mysql_query("SELECT * FROM `Users` WHERE login='$login2'"); if($row2=mysql_fetch_object($result2)){ $location = $row->location; echo "Вы находитесь на локаций: $location"; } Но код не работает название локаций не выводится.
Полный код: Код <? session_start(); include('conf.php'); ?> <!DOCTYPE html> <html> <head> <title>minigame</title> </head> <body> <? $login = $_POST['login']; $password = $_POST['password']; $world = $_GET['world']; $profile = $_GET['profile']; $inv = $_GET['inventory']; $quests = $_GET['quests'];
$result=mysql_query("SELECT * FROM `Users` WHERE login='$login'"); if($row=mysql_fetch_object($result)) { $name = $row->login; $pass = $row->password; } if($password == $pass){ $_SESSION['user_name'] = $name; $login2 = $_SESSION['user_name']; echo "<br>Меню:<br>"; ?> <form method="get" action=""> <input type="submit" name="profile" value="Профиль"/> <input type="submit" name="world" value="В мир"/> <input type="submit" name="inventory" value="Инвентарь"/> <input type="submit" name="quests" value="Квесты"/> </form> <? if(isSet($world)){ $result2=mysql_query("SELECT * FROM `Users` WHERE login='$login2'"); if($row2=mysql_fetch_object($result2)){ $location = $row->location; echo "Вы находитесь на локаций: $location"; } echo "<br>Переходы:<br>"; echo "<br>Персонажи:<br>"; echo "</br></br></br></br></br></br>"; } } ?> </body> </html>
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
Сообщение отредактировал last2424 - Среда, 29 Января 2014, 18:54 |
|
| |
lvovand | Дата: Среда, 29 Января 2014, 18:49 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| по таким кускам мало что ясно, 1. надеюсь, что ты переменные как-то обрабатываешь, перед тем как в запрос их ставить? 2. есть ли на самом деле запись в базе? 3. прошло ли соединение с базой? 4. что за переменная $location? если используешь mysql_fetch_object и поле называется location, то значение будет в переменной $row2->location
Разработка и продвижение сайтов. Дизайн
|
|
| |
last2424 | Дата: Среда, 29 Января 2014, 18:52 | Сообщение # 3 |
30 мл. блоков
Сейчас нет на сайте
| lvovand, забыл обновить код у меня так и написано. Переменные обрабатываются перед тем как в запрос их ставить. В базе запись есть. Соеденение проходит. Отвечает за локацию в игре(я пытаюсь научится делать браузерные игры).
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
Сообщение отредактировал last2424 - Среда, 29 Января 2014, 18:54 |
|
| |
rak | Дата: Среда, 29 Января 2014, 18:53 | Сообщение # 4 |
частый гость
Сейчас нет на сайте
| мб по тому что надо выводить так Упс не успел)
Сообщение отредактировал rak - Среда, 29 Января 2014, 18:53 |
|
| |
last2424 | Дата: Среда, 29 Января 2014, 18:57 | Сообщение # 5 |
30 мл. блоков
Сейчас нет на сайте
| Дал полный код, в шапке. Добавлено (29.01.2014, 18:56) --------------------------------------------- rak, это тоже самое просто я ввожу в переменную данные из базы. Добавлено (29.01.2014, 18:57) --------------------------------------------- Дело не просто в том что название не выводится не выводится сам Код echo "Вы находитесь на локаций: $location"; .
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
|
|
| |
rak | Дата: Среда, 29 Января 2014, 19:03 | Сообщение # 6 |
частый гость
Сейчас нет на сайте
| Цитата last2424 ( ) rak, это тоже самое просто я ввожу в переменную данные из базы. Я просто когда писал у меня страница старая еще была.
Если не выводится весь echo это значит в какой то момент у тебя скрипт перестает пахать, самый простой вариант найти где, это после каждой строчки писать echo "proverka"; к примеру. сиди проверяй.
а вообще для начала сделай так Код if($row2=mysql_fetch_object($result2)){ $location = $row->location; echo "Вы находитесь на локаций: $location"; } else echo "bad";
Сообщение отредактировал rak - Среда, 29 Января 2014, 19:05 |
|
| |
last2424 | Дата: Среда, 29 Января 2014, 19:09 | Сообщение # 7 |
30 мл. блоков
Сейчас нет на сайте
| rak, ну мне надо ведь только в 1 условие проверить(в остальных всё работает), а он не работает. Может что то не записывает данные? Добавлено (29.01.2014, 19:09) --------------------------------------------- rak, вывелся bad значит в коде что то не так.
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
|
|
| |
rak | Дата: Среда, 29 Января 2014, 19:17 | Сообщение # 8 |
частый гость
Сейчас нет на сайте
| last2424, Во первых просто попробуй
Если не выведится значит сесси не присвоено значение.
во вторых попробуй так написать Код $result2=mysql_query("SELECT * FROM `Users` WHERE login='$login2'") or die("error: ".mysql_error());
Сообщение отредактировал rak - Среда, 29 Января 2014, 19:21 |
|
| |
last2424 | Дата: Среда, 29 Января 2014, 19:21 | Сообщение # 9 |
30 мл. блоков
Сейчас нет на сайте
| rak, не выводится. Но почему оно не присвоено?
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
|
|
| |
rak | Дата: Среда, 29 Января 2014, 19:23 | Сообщение # 10 |
частый гость
Сейчас нет на сайте
| last2424, Для начала у тя в conf.php session_start(); есть?
|
|
| |
last2424 | Дата: Среда, 29 Января 2014, 19:25 | Сообщение # 11 |
30 мл. блоков
Сейчас нет на сайте
| rak, в конф нету, оно стоит в начале файла.
Добавлено (29.01.2014, 19:25) --------------------------------------------- Поставил.
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
Сообщение отредактировал last2424 - Среда, 29 Января 2014, 19:27 |
|
| |
rak | Дата: Среда, 29 Января 2014, 19:29 | Сообщение # 12 |
частый гость
Сейчас нет на сайте
| last2424, Туда пропиши и попробуй. попробуй на прямую всё без переменных. если не поможет
и вот так вот сделай Код $result=mysql_query("SELECT * FROM `Users` WHERE login='$login'") or die("error: ".mysql_error());
Сообщение отредактировал rak - Среда, 29 Января 2014, 19:30 |
|
| |
last2424 | Дата: Среда, 29 Января 2014, 19:30 | Сообщение # 13 |
30 мл. блоков
Сейчас нет на сайте
| rak, Цитата попробуй на прямую всё без переменных Это как O_O?
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
|
|
| |
rak | Дата: Среда, 29 Января 2014, 19:32 | Сообщение # 14 |
частый гость
Сейчас нет на сайте
| last2424, Цитата last2424 ( ) Это как O_O? в смысле $_SESSION[] не впихивай хотя это уже конечно так придирки
|
|
| |
last2424 | Дата: Среда, 29 Января 2014, 19:37 | Сообщение # 15 |
30 мл. блоков
Сейчас нет на сайте
| rak, понял. Пропеременную я додумался только после того как запихнул $_SESSION в выборку. Если я впихну $_SESSION[] тогда будет ошибка.
Добавлено (29.01.2014, 19:37) --------------------------------------------- А для доказательства что будет ошибка вот: Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/u117247722/public_html/game/game.php on line 38
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
Сообщение отредактировал last2424 - Среда, 29 Января 2014, 19:38 |
|
| |
rak | Дата: Среда, 29 Января 2014, 19:41 | Сообщение # 16 |
частый гость
Сейчас нет на сайте
| last2424, естественно там так же надо вместо $login2 $_SESSION['user_name'] поставь, а вообще у тя $_POST[] приходят ли?
|
|
| |
last2424 | Дата: Среда, 29 Января 2014, 20:02 | Сообщение # 17 |
30 мл. блоков
Сейчас нет на сайте
| rak, проходят. Если бы не проходили у меня вообще был бы пустой экран.Добавлено (29.01.2014, 20:02) --------------------------------------------- UP!
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
Сообщение отредактировал last2424 - Среда, 29 Января 2014, 19:44 |
|
| |
rak | Дата: Четверг, 30 Января 2014, 07:03 | Сообщение # 18 |
частый гость
Сейчас нет на сайте
| last2424, извени вчера на инете бабки кончились. Короче я с нуля написал весь скрипт пока без инета был вот лови смотри сравнивай) www.rar
Код писал так как я привык, но думаю разберешься.
Сообщение отредактировал rak - Четверг, 30 Января 2014, 07:12 |
|
| |
last2424 | Дата: Четверг, 30 Января 2014, 11:17 | Сообщение # 19 |
30 мл. блоков
Сейчас нет на сайте
| rak, разобрался. Одно и тоже только синтаксис у тебя другой. И по какой то причине работает. У меня кривые руки скорее всего.Добавлено (30.01.2014, 11:17) --------------------------------------------- Нашёл проблему. У тебя сессия работает некоторое время. А потом перестаёт. Не знаешь как это исправить?
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
Сообщение отредактировал last2424 - Четверг, 30 Января 2014, 11:12 |
|
| |
lvovand | Дата: Четверг, 30 Января 2014, 11:40 | Сообщение # 20 |
старожил
Сейчас нет на сайте
| Цитата last2424 ( ) У тебя сессия работает некоторое время. А потом перестаёт. Не знаешь как это исправить? при правильно настроенном сервере, если к сессии не обращаются, то она удаляется, по умолчанию срок жизни файла сессии 20 минут,
делай фоновый вызов аяксом на странице, убьется два зайца, и время сессии будет обновляться, и будешь получать пользователей в онлайне, ну или от сессии на куки переходить
Разработка и продвижение сайтов. Дизайн
|
|
| |