Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » JQuery post запрос и PHP

Ответить
Настройки темы
JQuery post запрос и PHP

Пользователь


Сообщения: 91
Благодарности: 2

Профиль | Отправить PM | Цитировать


Добрый день.
Ломаю голову уже неделю. Все сил нет, мозг весь съеден.
Как сделать автаризацию? Не могу разделить положительный ответ выданный PHP от ошибки. Т.е. чтобы при положительном ответе пускало в админ панель, а при ошибке выдавала ошибку, мол не правильные логин и пароль или логин может состоять только из латинских букв и знака подчеркивания. И все это без перезагрузки естественно.

имею:
index.php
HTML код: Выделить весь код
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Центр авторизации</title> <link href="style.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="../js/jquery-1.3.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $('#error').hide(); $('#btnSubmit').click(function(){ var name = $('#name').val(); var password = $('#password').val(); if ((name=='')&&(password=='')) { $('#error').text("Введите ваше имя и пароль"); $('#error').fadeIn(("slow"),function(){ setTimeout(function(){ $('#error').fadeOut("slow"); },3000); }); } else if (name=='') { $('#error').text("Введите ваше имя"); $('#error').fadeIn(("slow"),function(){ setTimeout(function(){ $('#error').fadeOut("slow"); },3000); }); } else if (password=='') { $('#error').text("Введите пароль"); $('#error').fadeIn(("slow"),function(){ setTimeout(function(){ $('#error').fadeOut("slow"); },3000); }); } else { $.ajax({ type: "POST", url: "test.php", data: "name="+name+"&password="+password, success: function(html){ $("#error").append(html); $("#error").slideDown('slow'); } }); } }); }); </script> </head> <body> <div id="error"></div> <div id="auth"> <span>Центр авторизации</span> <form action="#" method="post"> <div class="formLine"> <label>Имя:</label><input name="name" type="text" size="20" maxlength="20" id="name"/> </div> <div class="formLine"> <label>Пароль:</label><input name="password" type="password" size="20" maxlength="20" id="password"/> </div> <div class="formLine"> <input name="btnSubmit" type="button" value="Войти" id="btnSubmit"/> </div> </form> </div> </body> </html>

test.php
PHP код: Выделить весь код

<?php

include './inc/db_config.inc.php';

if(
$_POST)
{
    
$name addslashes(trim($_POST['name']));
    
$query "SELECT * FROM `User` WHERE `name`='".mysql_real_escape_string($name)."' LIMIT 1";
    
$result mysql_query($query);
    
$row mysql_fetch_assoc($result);
    if(!
$row<1)
    {
        
print_r($row);
    }
    else
    {
        echo 
'Fack';
    }
}
else
{
    echo 
"net";
}

mysql_close($link);
?>


Отправлено: 17:32, 31-10-2009

 

Deadooshka


Сообщения: 2511
Благодарности: 689

Профиль | Отправить PM | Цитировать


Цитата darksmoke:
$name = addslashes(trim($_POST['name'])); »
addslashes не нужен, ибо mysql_real_escape_string (лишние слеши будут)
Цитата darksmoke:
if(!$row<1) »
$row у вас массив, поэтому это непрокатит. нужно в if или count($row) или $row[0]
Цитата darksmoke:
$.ajax({
type: "POST",
url: "test.php",
data: "name="+name+"&password="+password,
success: function(html){
$("#error").append(html);
$("#error").slideDown('slow');
}
}); »
данные нужно кодировать функцией encodeURIComponent (если не кодируется - не знаю).
вообще нужно запрос проследить firebug'ом (или подобным софтом), чтобы убедиться каким методом шлется все, ибо я не уверен в строке data: (у вас же проверка на $_POST идет).

у вас же в методе "success:" можно все разрулить (проверять ответ скрипта)...

Отправлено: 23:13, 31-10-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


darksmoke, как это, пускало в админпанель, но без перезагрузки.
Эта самая панель такая маленькая, что её можно встроить в обычную страницу?

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 00:07, 02-11-2009 | #3


Пользователь


Сообщения: 91
Благодарности: 2

Профиль | Отправить PM | Цитировать


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

Отправлено: 00:00, 03-11-2009 | #4


Пользователь


Сообщения: 91
Благодарности: 2

Профиль | Отправить PM | Цитировать


Небыло Интернета, раздуплился в JavaScripte. Но вот как сделать что бы дальше попадал человек в защещенную часть сайта, немогу понять. Помогите! Сил нет!
Вот что получилось:
Index.html
HTML код: Выделить весь код
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Центр авторизации</title> <link href="style.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="../js/jquery-1.3.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $('#error').hide(); $('#btnSubmit').click(function(){ var name = $('#name').val(); var password = $('#password').val(); if ((name=='')&&(password=='')) { $('#error').text("Введите ваше имя и пароль"); $('#error').fadeIn(("slow"),function(){ setTimeout(function(){ $('#error').fadeOut("slow"); },3000); }); return false; } else if (name=='') { $('#error').text("Введите ваше имя"); $('#error').fadeIn(("slow"),function(){ setTimeout(function(){ $('#error').fadeOut("slow"); },3000); }); return false; } else if (password=='') { $('#error').text("Введите пароль"); $('#error').fadeIn(("slow"),function(){ setTimeout(function(){ $('#error').fadeOut("slow"); },3000); }); return false; } else { $.ajax({ type: "POST", url: "test1.php", data: "name="+name+"&password="+password, success: function(res){ var r = '**'; var a = new Array(); a = res.split(r); var result = a[0]; var err = a[1]; if(result=='Fuck') { $('#error').text(''); $('#error').append(err); $('#error').fadeIn(("slow"),function(){ setTimeout(function(){ $('#error').fadeOut("slow"); },3000); }); return false; } else { var r = '**'; var a = new Array(); a = res.split(r); var ip = a[0]; var id = a[1]; alert(ip+id); } } }); } }); }); </script> </head> <body> <div id="error"></div> <div id="auth"> <span>Центр авторизации</span> <form action="#" method="post" name="auth"> <div class="formLine"> <label>Имя:</label><input name="name" type="text" size="20" maxlength="14" id="name"/> </div> <div class="formLine"> <label>Пароль:</label><input name="password" type="password" size="20" maxlength="14" id="password"/> </div> <div class="formLine"> <input name="btnSubmit" type="button" id="btnSubmit" value="Войти"/> </div> </form> </div> </body> </html>

test1.php
PHP код: Выделить весь код

<?php 

include './inc/db_config.inc.php'
 
if(
$_POST

    
$black_list mysql_query("SELECT * FROM `IP_Black_List` WHERE `ip`='".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."' LIMIT 1"); 
    
$row mysql_fetch_assoc($black_list); 
    if(!
$row || $row['try']<7
    { 
    
//если IP в блэк листе нет или кол-во попыток не больше 7, проверяем логин и пароль. 
        
$user_name addslashes(htmlspecialchars(substr(trim($_POST['name']),0,14))); 
        
$user_password addslashes(htmlspecialchars(substr(trim($_POST['password']),0,14))); 
        
$auth "SELECT * FROM `User` WHERE `name`='".mysql_real_escape_string($user_name)."' AND `password`='".mysql_real_escape_string($user_password)."' LIMIT 1"
        
$result_auth mysql_query($auth); 
        
$row_auth mysql_fetch_assoc($result_auth); 
        if(
$row_auth
        { 
            
session_start(); 
            echo 
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR']. '**' .$_SESSION['id'] = session_id(); 
            
mysql_query("DELETE FROM `IP_Black_List` WHERE `ip`='".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."'"); 
        } 
        else if(!
$row
        { 
    
//Авторизацию не прошли. Если такого IP еще нет, записываем в блэк лист 
            
$date date("Y-m-d"); 
            
mysql_query("INSERT INTO `IP_Black_List` (`id`,`ip`,`try`,`date`)VALUES('','".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."','1','".mysql_real_escape_string($date)."')"); 
            echo 
'Fuck**Неверное имя или пароль. У вас осталось 6 попыток.';exit; 
        } 
        else 
        { 
    
//Авторизацию не прошли. IP уже есть - добавляем к нему одну попытку 
            
$row['try']++; 
            
mysql_query("UPDATE `IP_Black_List` set `try`='".mysql_real_escape_string($row['try'])."' WHERE (`ip`='".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."')"); 
            switch (
$row['try']) { 
              case 
2:$b="5 попыток"; break; 
              case 
3:$b="4 попытки"; break; 
              case 
4:$b="3 попытки"; break; 
              case 
5:$b="2 попытки"; break; 
              case 
6:$b="1 попытка"; break; 
              case 
7:$b="Ваш IP адрес заблокирован"; break; 
            } 
            if(
$row['try']!==7
            { 
                echo 
'Fuck**Не верное имя или пароль. У вас осталось '.$b
            } 
            else 
            { 
                echo 
'Fuck**'.$b
            } 
        } 
    } 
    else if(
$row>6
    { 
    
//Если кол-во попыток больше 7 - баним. 
        
echo 'Fuck**Ваш IP адрес заблокирован'; exit; 
    } 

else 

// Если POST'а небыло - отправляем на авторизацию 
    
header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])); 

mysql_close($link); 
?>


Отправлено: 17:41, 04-11-2009 | #5


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


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

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 19:57, 04-11-2009 | #6


Deadooshka


Сообщения: 2511
Благодарности: 689

Профиль | Отправить PM | Цитировать


Цитата darksmoke:
else if($row>6) »
я же писал, что $row это массив, а в условии у вас как целое число... разберитесь
Цитата darksmoke:
if(!$row || $row['try']<7) »
$row - у вас это двухмерный массив (массив из других массивов), значит $row['try'] там нету, а есть $row[0]['try']
исправляйте ошибки.

Отправлено: 01:34, 05-11-2009 | #7


Пользователь


Сообщения: 91
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Sham:
$row - у вас это двухмерный массив (массив из других массивов), значит $row['try'] там нету, а есть $row[0]['try']
исправляйте ошибки. »
Что-то не пойму. сделал echo $row['try'] выводит число которое находится в БД. А если пишу echo $row[0]['try']? то ничего не выводит.
P.S print_r($row); выводит Array ( [id] => 13 [ip] => 127.0.0.1 [try] => 2 [date] => 2009-11-05 )

Отправлено: 10:26, 05-11-2009 | #8


Deadooshka


Сообщения: 2511
Благодарности: 689

Профиль | Отправить PM | Цитировать


darksmoke, все правильно, это mysql_query двухмерный отдает, я лажанулся ...
но вот это
Цитата darksmoke:
else if($row>6) »
все равно не прокатит...
Цитата darksmoke:
AND `password`='".mysql_real_escape_string($user_password)."' L »
если пароль хранится в базе в открытом виде, то так не делается, нужно хешировать перед вставкой, еще лучше, с генерацией соли (дополнительная хеш-строка)...
Цитата darksmoke:
echo $_SESSION['ip'] = $_SERVER['REMOTE_ADDR']. '**' .$_SESSION['id'] = session_id(); »
эта строка вообще непонятная, скорее всего ошибка...
вообще установка сессии через AJAX весьма глючный вариант, особенно для старых браузеров, поэтому кукисы сессии лучше дополнительно ставить в JS (session_name() = session_id()), предварительно проверив установку.

Отправлено: 19:09, 05-11-2009 | #9


Пользователь


Сообщения: 91
Благодарности: 2

Профиль | Отправить PM | Цитировать


Sham,
Цитата Sham:
поэтому кукисы сессии лучше дополнительно ставить в JS (session_name() = session_id()), предварительно проверив установку. »
А пример можно.. это надо с явоскриптом делать?

Цитата Sham:
echo $_SESSION['ip'] = $_SERVER['REMOTE_ADDR']. '**' .$_SESSION['id'] = session_id(); » »
Это строка возвращает результат в яваскрипт.

Отправлено: 12:11, 06-11-2009 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » JQuery post запрос и PHP

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как правильно создать POST запрос K.A.V. Вебмастеру 4 24-01-2010 17:01
Ежедневник (JQuery + PHP/MySQL) LaoTsi Вебмастеру 1 05-07-2009 03:50
можно ли передать POST запрос без использования форм? rizz Вебмастеру 7 29-06-2009 21:23
PHP: Получение переменных через POST DANTIST Вебмастеру 5 01-04-2007 17:27
Как сделать запрос на PHP?? JS Вебмастеру 3 30-10-2004 23:35




 
Переход