Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.02.2014, 06:04
Новичок на форуме
Отправить личное сообщение для lodem009 Посмотреть профиль Найти все сообщения от lodem009
 
Регистрация: 25.12.2013
Сообщений: 8

js отправка формы
Всем привет не подскажите как сделать когда юзер зарегистрировался если все успешно то модальное окно с регистрацией закрываеться и открывается новое модальное окно вы успешно зарегистрировались потом оно через 3 сек закрываеться, и начинается автологин, тоесть автоматический вход на сайт как это реализовать зарание спс вот код

Это регистрация
<?php
	include_once('reg/include/config.php');
	include_once('reg/include/function.php');
	
	// Проверяем заполнены ли email и пароль в куках "Авторизация"
	if(!empty($_COOKIE['email']) AND !empty($_COOKIE['password']))
	{
		// Ищем пользователя в таблице users
		$search_user = mysql_query("SELECT * FROM `users` WHERE `email` = '".mysql_real_escape_string($_COOKIE['email'])."' AND `password` = '".mysql_real_escape_string($_COOKIE['password'])."'");
	}
	else
	{
		$user = 0;
	}
  
	if (!empty($_POST['email']) AND !empty($_POST['password']))
	{
		// Фильтруем email и пароль
		$email = mysql_real_escape_string(htmlspecialchars($_POST['email']));
		$password = mysql_real_escape_string(htmlspecialchars($_POST['password']));
		
		// проверяем есть ли email в нашей БД
		if (@mysql_result(mysql_query("SELECT COUNT (*) FROM `users` WHERE `email` = '".$email."' LIMIT 1;"), 0) !=0)
		{
			echo 'email занят';
			exit();
		}
		// Заносим данные в БД
		mysql_query("INSERT INTO `users` (`email`, `password`) VALUES ('".$email."', '".md5($password)."')");
		echo 'Вы успешно зарегестрированны';
		exit();
	}
  
  
	if(!$_SESSION['id'])
	if($_POST['button']){
	//Проверяем правильность кода капчи
	if($_SESSION[secret_number]==""){
		$_SESSION[secret_number] = "ABCD";
	}
	if($_SESSION["secret_number"] != $_POST[pkey]){
		return exit("<b>Ошибка номера ввода капчи</b>");
	}

	//Запоминаем сессию
	$cookie = mysql_query("SELECT * FROM users WHERE email ='$email'") or die(mysql_error());
	$assoc = mysql_fetch_assoc($cookie);
	$_SESSION['id'] = $assoc['id_user'];
	//Запоминаем куки
	$_COOKIE['id'] = $_SESSION['id'];
	//Если все успешно выводим текст и запоминаем юзера
	echo "Вы успешно зарегистрированны, <a href='index.php'><b>перейти в личный кабинет</b></a>";
?>
<b><a href="exit.php">Выйти</a></b>
<?php
exit;
}
?>


Это вход на сайт
<?php include_once('/reg/include/config.php'); ?>
<?php

	if(!empty($_POST['email']) AND !empty($_POST['password'])) 
	{ 
		// фильтрируем логин и пароль 
		$email = mysql_real_escape_string(htmlspecialchars($_POST['email']));
		$password = mysql_real_escape_string(htmlspecialchars($_POST['password']));
	
		$search_user = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `email` = '".$email."' AND `password` = '".md5($password)."'"), 0);
		if($search_user == 0) 
		{ 
			echo 'Введенные данные неправильные или пользователь не найден.';
			exit(); 
		} 
		else 
		{ 
			// заносим логин и пароль в куки 
			$time = 60*60*24; // сколько времени хранить данные в куках 
			setcookie('email', $email, time()+$time, '/'); 
			setcookie('password', md5($password), time()+$time, '/'); 
				echo 'Вы успешно авторизировались на сайте!'; 
				exit(); 
		} 
	}
?>


а это js
<script type="text/javascript" language="javascript">
    function call() {
      var msg   = $('#regform').serialize();
        $.ajax({
          type: 'POST',
          url: 'register.php',
          data: msg,
          success: function(data) {
            $('.results').html(data);
          },
          error:  function(xhr, str){
                alert('Возникла ошибка: ' + xhr.responseCode);
            }
        });
 
    }
</script>

Подскажите как реализовать буду благодарен вам в помощи. Зарание всем спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 18.02.2014, 06:21
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Профессоры говорят не говори прерывание, а я вам советую тогда не говорить модальное окно.

Нет никаких модальных окон на веб-странице и быть не может. Только немодальные с матерщинным названием - попап.

Цитата:
Вы успешно зарегестрированны
ЗарегИстрироваНы.

Чтобы показать отчет после аякса надо показать либо заранее загруженный элемент, либо его сгенерить по той же схеме. Запустить таймер который либо сотрет его с экрана, либо уничтожит вовсе.
Ответить с цитированием
  #3 (permalink)  
Старый 18.02.2014, 06:24
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Про автологин не понял. После регистрации придется либо перезагрузить страницу чтобы сервер по кукам ее провел, либо послать серверу ответ что куки-таки пришли, для чего прочесть-таки куки, убедиться что это оно и отгрузить. Сервер пометит у себя "зашОл"

Ну а чтобы куки пришли их надо отправить заголовками в процессе ответа, или тупо setcookie()
Ответить с цитированием
  #4 (permalink)  
Старый 18.02.2014, 06:33
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Понял, это другой кусок, а юзер тот же самый. Нашел получше, но все равно не то и опять какое-то несусветное гэ.

Цитата:
echo 'email занят';
Одуреть. Если имейл "занят" значит это бывший юзер ломится забыв что уже регился. В таких случаях ему напоминают об этом факте и предлагают войти или восстановить пароль.

И еще раз, пароли и логины в процессе регистрации НЕ санируют. Только проверяют и сообщают о косяках. Юзер должен САМ ввести гигиенически корректные данные. Иначе он затем хрена-то войдет.

И уж тем более не санируют при входе. Это вообще голимый бред. То есть два раза: сначала покоцали ввод и записали х знает что, затем это х знает что сравниваем с другим х знает что и ждем результа.

Последний раз редактировалось kostyanet, 18.02.2014 в 06:35.
Ответить с цитированием
  #5 (permalink)  
Старый 18.02.2014, 06:37
Новичок на форуме
Отправить личное сообщение для lodem009 Посмотреть профиль Найти все сообщения от lodem009
 
Регистрация: 25.12.2013
Сообщений: 8

ну подскажите с чего начать???))) да вот так надо сделать можно пример??
Про автологин не понял. После регистрации придется либо перезагрузить страницу чтобы сервер по кукам ее провел, либо послать серверу ответ что куки-таки пришли, для чего прочесть-таки куки, убедиться что это оно и отгрузить. Сервер пометит у себя "зашОл"

Ну а чтобы куки пришли их надо отправить заголовками в процессе ответа, или тупо setcookie()
Ответить с цитированием
  #6 (permalink)  
Старый 18.02.2014, 14:03
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Скрипты авторизации дело интимное но общий принцип таков.

Юзер может быть не юзером, а скриптом. Поэтому проверять надо все с начала до конца. Это гемор и легче водрузить его на субд. Например вместо real_escape_string() послать как есть, в кавычках конечно, и получить ошибку в случае если юзер-скрипт послали неудобоваримое. Потому что если послали правильное - оно сразу проканает без проверок в скрипте и не надо думать что логин теперь не совпадет, или пароль покоцали случайно. Например та самая real_escape_string() запросто выкосит кириллицу если коннект не установлен в правильную кодировку.

хтмл, если политика не допускает, только проверяется и юзеру доводится политика.

Начать надо с бд, с таблицы юзеров.

create table users (
user_id int unsigned auto_increment primary key,
login varchar(64) not null unique key,
pass varchar(255) not null,
flag set('guest', 'user', 'admin')
);

flag --- как самый элементарный способ завести роли
Ответить с цитированием
  #7 (permalink)  
Старый 18.02.2014, 14:07
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Если вы не можете починить натыренный скрипт, значит помочь вам может только другой натыренный скрипт который сразу начнет работать как вам хочется. Больше никто вам не сможет помочь, только вы сами.

Я даже не проверял веря что так просто найти нормальный класс авторизации не будет просто. Короткий обзор показал что теория верна. Находится либо старье, либо слишком тупо, либо невероятно заморочено как тут http://book.cakephp.org/2.0/en/tutor...mple/auth.html

Последний раз редактировалось kostyanet, 18.02.2014 в 14:10.
Ответить с цитированием
  #8 (permalink)  
Старый 18.02.2014, 14:15
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Регистрация/авторизация аяксом от обычной ничем не отличается. js собирает данные, отгружает, сервер проверяет, отвечает, скрипт доводит до сведения и все такое. Если проканало на сервере заполняются данными переменные юзера, спонтом они с куков загужены, а при следующем обновлении страницы куки загрузятся натурально и все поехало как обычно.

В процитированном скрипте в принципе все необходимое есть, надо только причесать.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка данных формы AJAX`ом? Jopses jQuery 4 20.02.2013 12:34
Отправка формы с помощью XMLHttpRequest2 и FormData pav jQuery 3 05.10.2011 10:16
Отправка из формы в форму.. gJam Элементы интерфейса 5 21.07.2011 11:42
js + php отправка формы не работает kuzroman AJAX и COMET 2 28.12.2010 13:02
Очистка формы от дефолтных значений js hereim Общие вопросы Javascript 14 04.07.2010 21:29