Понедельник, 22 Июля 2019, 01:23

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Скриптовые языки программирования » Работа с сессиями. (Не получается найти пользователя через сессию в бд.)
Работа с сессиями.
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
частый гость
Сейчас нет на сайте
мб по тому что надо выводить так
Код
$row->location;

Упс не успел)




Сообщение отредактировал 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, Во первых просто попробуй
Код
echo $login2;


Если не выведится значит сесси не присвоено значение.

во вторых попробуй так написать
Код
$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, разобрался. Одно и тоже только синтаксис у тебя другой. И по какой то причине работает. biggrin
У меня кривые руки скорее всего.

Добавлено (30.01.2014, 11:17)
---------------------------------------------
Нашёл проблему. У тебя сессия работает некоторое время. А потом перестаёт. Не знаешь как это исправить?


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)

Сообщение отредактировал last2424 - Четверг, 30 Января 2014, 11:12
lvovandДата: Четверг, 30 Января 2014, 11:40 | Сообщение # 20
старожил
Сейчас нет на сайте
Цитата last2424 ()
У тебя сессия работает некоторое время. А потом перестаёт. Не знаешь как это исправить?

при правильно настроенном сервере, если к сессии не обращаются, то она удаляется, по умолчанию срок жизни файла сессии 20 минут,

делай фоновый вызов аяксом на странице, убьется два зайца, и время сессии будет обновляться, и будешь получать пользователей в онлайне, ну или от сессии на куки переходить


Разработка и продвижение сайтов. Дизайн
Форум игроделов » Программирование » Скриптовые языки программирования » Работа с сессиями. (Не получается найти пользователя через сессию в бд.)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2019 Рейтинг