Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.03.2014, 13:05
Интересующийся
Отправить личное сообщение для Aeooe Посмотреть профиль Найти все сообщения от Aeooe
 
Регистрация: 12.03.2014
Сообщений: 19

Вернуть сессию из javascript
Доброго времени суток форумчане. Столкнулся вот стаким вот вопросом:
Делаю авторизацию пользователя через javascript и не знаю как вернуть начатаю сессию.

Код авторизации javascript:

function login()
{
	var event="login";
	var login=document.forms['login_form'].elements['login'].value;
	var password = document.forms['login_form'].elements['password'].value;
	if(login!=""&&password!=""){
	var xmlhttp = getXmlHttp(); // Создаём объект XMLHTTP
	    			xmlhttp.open('POST', '/php/content_class.php', true); // Открываем асинхронное соединение
	    			xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // Отправляем кодировку
	    			xmlhttp.send("event="+encodeURIComponent(event)+"&login="+encodeURIComponent(login)+"&password="+encodeURIComponent(password));
    				xmlhttp.onreadystatechange = function() { // Ждём ответа от сервера
      					if (xmlhttp.readyState == 4) { // Ответ пришёл
       		 				if(xmlhttp.status == 200) { // Сервер вернул код 200 (что хорошо)
       		  	 			alert(xmlhttp.responseText); // Выводим ответ сервера
						if(xmlhttp.responseText.indexOf("успешно")!=-1){all_form_close("login_form");}
       		 				}
      					}
  					};
	} else {alert("Заполните форму целиком для успешной авторизации!");}

}


Т.е. передаем post запросом файлу php логин и пароль.

Код php:

function login($login,$password)
{
	require_once $_SERVER['DOCUMENT_ROOT']."/php/connect.php";
	$out=mysql_query("Select login from users_site where login='".$login."'");
	if (mysql_result($out,0,"login")<>'')
	{
	$out=mysql_query("Select id,fio from users_site where password='".md5($password)."' and login='".$login."'");
	if (mysql_num_rows($out)>0)
	{session_start();
	$_SESSION['id']=mysql_result($out,0,"id");
	$_SESSION['fio']=mysql_result($out,0,"fio");
	return "Вы успешно авторизовались!";
	}
	else
	{return "Пароль не верный!";}
	}
	else
	{
	return "Неверный пользователь или пароль!";
	}
}


Который стартует сессию в случае удачной авторизации.

Собственно вопрос: Как вернуть начатю сессию средсвами javascript? Я так понимаю мне нужно перезгрузить текущую локацию с параметром сесси?
Ответить с цитированием
  #2 (permalink)  
Старый 26.03.2014, 13:40
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,252

Aeooe, суть сессии - хранить данные некоего пользователя, применительно к ней самой.
Не совсем понятно зачем ее "светить" в JS-скрипте?
Ответить с цитированием
  #3 (permalink)  
Старый 26.03.2014, 15:21
Интересующийся
Отправить личное сообщение для Aeooe Посмотреть профиль Найти все сообщения от Aeooe
 
Регистрация: 12.03.2014
Сообщений: 19

дело в том что страница с которой вызывается авторизация(js) и куда должна вернуься сессия index.php а сама авторизация проходит в файле auth.php. Т.е. создаем форму в index.php и отправляем авторизационные данные post запросом(при помощи js) в файл auth.php, соответсвенно функция в auth.php делает авторизацию и создает сессию, но ведь эту сессию надо вернуть в index.php? и перезагрузить страницу уже с этой сессией?
Ответить с цитированием
  #4 (permalink)  
Старый 26.03.2014, 15:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,252

Сообщение от Aeooe
функция в auth.php делает авторизацию и создает сессию, но ведь эту сессию надо вернуть в index.php?
Я х/з как в ПХП (но думаю у всех серверных языков одинаково). Но сессия видна всем серверным процедурам и функциям пока не кончится ее таймаут.
Т.е. значения, записанные в сессию, передавать не нужно. Они там есть (в сессии) любая серверная процедура или функция их просто может прочесть.
Ответить с цитированием
  #5 (permalink)  
Старый 26.03.2014, 16:12
Интересующийся
Отправить личное сообщение для Aeooe Посмотреть профиль Найти все сообщения от Aeooe
 
Регистрация: 12.03.2014
Сообщений: 19

если не нужно возвращать переменную сессии в заголовок, тогда почему не работает условие:

if (isset($_REQUEST[session_name()])) {session_start();
		if ($_SESSION['fio']!=''){
		$this->session_info="Здраствуйте, ".$_SESSION['fio'];
		} 
	}else {
		$this->session_info='<span class="button" style="margin: 0 auto; display: block;" onclick="create_login_form();"><span>ВХОД\РЕГИСТРАЦИЯ</span></span>';
		}
Ответить с цитированием
  #6 (permalink)  
Старый 26.03.2014, 16:31
Интересующийся
Отправить личное сообщение для Aeooe Посмотреть профиль Найти все сообщения от Aeooe
 
Регистрация: 12.03.2014
Сообщений: 19

Т.е. насколько я понял строка if (isset($_REQUEST[session_name()])) проверяет пришла ли со стороны клиента какая нибудь сессия и если пришла - проверяем ее. Если не пришла - кнопка вызова формы авторизации.
У меня почему то после успешной авторизации по схеме которую я описал выше условие true не проходит...
Ответить с цитированием
  #7 (permalink)  
Старый 26.03.2014, 16:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,252

Сообщение от Aeooe
пришла ли со стороны клиента какая нибудь сессия
Сессия не приходит с клиента... Это чисто серверная часть.
От клиента "приходят" данные реквест...

Сообщение от Aeooe
тогда почему не работает условие
Я на ПХП не работаю...
Ответить с цитированием
  #8 (permalink)  
Старый 26.03.2014, 16:57
Интересующийся
Отправить личное сообщение для Aeooe Посмотреть профиль Найти все сообщения от Aeooe
 
Регистрация: 12.03.2014
Сообщений: 19

Сообщение от ksa
Сессия не приходит с клиента... Это чисто серверная часть.
От клиента "приходят" данные реквест...
От клиента приходит переменна - название сессии. Разве нет?
Ответить с цитированием
  #9 (permalink)  
Старый 26.03.2014, 19:23
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,252

Aeooe, ты вообще в курсе что такое сессия?
Ответить с цитированием
  #10 (permalink)  
Старый 26.03.2014, 19:28
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

if ( (session_id() && $_SESSION['fio']) && !$_GET['_SESSION["fio"]'] ) {
// авторизаован
}
else{ 
// неавторизован
}
__________________
С моих слов записано верно.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книга: JavaScript. Сильные стороны Magneto Учебные материалы 16 21.04.2013 15:28
Интерпретатор Java на JS kobezzza Оффтопик 24 11.10.2012 18:32
Первый Moscow JavaScript Meetup korenyushkin Общие вопросы Javascript 0 26.07.2011 15:23
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34