Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.04.2017, 14:45
Интересующийся
Отправить личное сообщение для MyNameIsCode Посмотреть профиль Найти все сообщения от MyNameIsCode
 
Регистрация: 19.04.2017
Сообщений: 15

Что не так с AJAX
Посмотрите пожалуйста! Что не так с этим кодом?
С js не дружу. Делаю сайт на PHP по уроку. jquery 3.2.1 php 5.6 сервер Apache 2.4 Версия jquery по уроку 1.7.1

function login() {
	var email = $('#loginEmail').val();
	var pwd   = $('#loginPwd').val();

	var postData = "email="+ email +"&pwd=" +pwd;

		$.ajax ({
			type: 'POST',
			async: false,
			url: "/user/login/",
			data: postData,
			dataType: 'json',
			success: function(data) {
				if (data('success')) {
					$('#loginBox').hide();

					$('#userLink').html(data['displayName']);
					$('#userBox').show();
				} else {
					alert(data['message']);
				}
			}
		});
}
Ответить с цитированием
  #2 (permalink)  
Старый 19.04.2017, 14:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,252

Сообщение от MyNameIsCode
if ( *!* data('success') */!* ) {...}
Что это такое?
Ответить с цитированием
  #3 (permalink)  
Старый 20.04.2017, 04:09
Интересующийся
Отправить личное сообщение для MyNameIsCode Посмотреть профиль Найти все сообщения от MyNameIsCode
 
Регистрация: 19.04.2017
Сообщений: 15

Это вот отсюда

function loginAction() {
    $username = isset($_REQUEST['username']) ? $_REQUEST['username'] : null;
    $username = trim($username);

    $password = isset($_REQUEST['password']) ? $_REQUEST['password'] : null;
    $password = trim($password);

    $userData = loginUser($username, $password);

    if($userData['success']) {
        $userData = $userData[0];

        $_SESSION['user'] = $userData;
        $_SESSION['user']['displayName'] = $userData['username'];

        $resData = $_SESSION['user'];
        $resData['success'] = 1;

    } else {
        $resData['success'] = 0;
        $resData['message'] = 'Неверный логин или пароль';
    }

    echo json_encode($resData);
}
Ответить с цитированием
  #4 (permalink)  
Старый 20.04.2017, 04:51
Интересующийся
Отправить личное сообщение для MyNameIsCode Посмотреть профиль Найти все сообщения от MyNameIsCode
 
Регистрация: 19.04.2017
Сообщений: 15

А вот модель

function loginUser($username, $password) {
    $username = htmlspecialchars($username);
    $password = htmlspecialchars($password);


    global $pdo;

    $statement = $pdo->query("SELECT * FROM users
			WHERE (username = {$username} AND password = {$password})
			LIMIT 1");

    $sql = $statement->fetch();
    $rs = createSmartyRsArray($sql);
    if (isset($rs[0])) {
        $rs['success'] = 1;
    } else {
        $rs['success'] = 0;
    }

    return $rs;
}
Ответить с цитированием
  #5 (permalink)  
Старый 20.04.2017, 05:01
Интересующийся
Отправить личное сообщение для MyNameIsCode Посмотреть профиль Найти все сообщения от MyNameIsCode
 
Регистрация: 19.04.2017
Сообщений: 15

В консоли выдал вот что

Ответить с цитированием
  #6 (permalink)  
Старый 20.04.2017, 05:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от MyNameIsCode
WHERE (username = {$username} AND password = {$password})
Скобки здесь совсем не нужны (и фигурные в том числе). Но что более поразительно так это LIMIT 1, то есть, в базе может присутствовать один и тот же логин, что требуется LIMIT 1?

data('success') - такого на клиенте (впрочем как и на сервере) нет. На сервере это $resData['success'], а на клиенте data.success, ну или data['success'].

И isset($_REQUEST['password']), это плохо, так как это можно переопределить куками, которые могут быть и краденными.

Последний раз редактировалось laimas, 20.04.2017 в 05:49.
Ответить с цитированием
  #7 (permalink)  
Старый 20.04.2017, 07:17
Интересующийся
Отправить личное сообщение для MyNameIsCode Посмотреть профиль Найти все сообщения от MyNameIsCode
 
Регистрация: 19.04.2017
Сообщений: 15

Сообщение от laimas Посмотреть сообщение
Скобки здесь совсем не нужны (и фигурные в том числе). Но что более поразительно так это LIMIT 1, то есть, в базе может присутствовать один и тот же логин, что требуется LIMIT 1?

data('success') - такого на клиенте (впрочем как и на сервере) нет. На сервере это $resData['success'], а на клиенте data.success, ну или data['success'].

И isset($_REQUEST['password']), это плохо, так как это можно переопределить куками, которые могут быть и краденными.
Спасибо большое! Я знаю про request, просто на данный момент на этом не акцентируется внимание.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посоветуйте новику, что я делаю не так danil-n2 Общие вопросы Javascript 5 26.04.2013 21:22
Всплытие событий или что то не так... Кирюха =) jQuery 6 30.03.2013 12:56
Кто как учит/учил/ будет учить Английский ? DjDiablo Оффтопик 53 18.12.2012 21:01
Передача данных из JS в PHP - что не так? Rokugan Общие вопросы Javascript 16 30.09.2011 18:52
Проблема с AJAX запросом + mod_rewrite BrokenEye AJAX и COMET 1 12.07.2009 02:08