Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы в коде, фиксим ошибки 
:(
    Опции темы
ReactOS
Дата 18.5.2008, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 6.12.2007

Репутация: нет
Всего: 33



Добрый День!

Код

<body>

<font id = "txt1">Форум</font>

<table class = "t1" align = "center">

<tr>

    <td>

    <form action = "login.php" method = "post" class = "f1" name = "f1">
    Введите логин:<br>
    <input type = "text" name = "login" maxlength = "22"><br>
    Введите пароль:<br>
    <input type = "password" name = "pass" maxlength = "15"><br>
    <input type = "submit" value = "Войти">
    </form>
    
    </td>

</tr>

<tr>
    <td>
    <?php
    
    $id_error = $_GET['error'];

    if($id_error==1) {
    echo("В настоящий момент, сервер базы данных недоступен, поэтому<br> корректное отображение страницы невозможно!<br>");
    }
    
    if($id_error==2) {
    echo("В настоящий момент, база данных недоступна, поэтому<br> корректное отображение страницы невозможно!<br>");
    }
    
    if($id_error==3) {
    echo("Ошибка с авторизацией! Неправильное введенны данные!<br>");
    }
    
    ?>
    <a href = "./registr.php">Зарегистрировать нового юзера!</a>
    
    </td>
<tr>

</table>


login.php - где проходит авторизация
Код

<?php

$host = "localhost";
$user = "root";
$pass = "";

$db = "forum";

function connect_to_db()    {

global $host, $user, $pass, $db;

$cnx = @mysql_connect($host, $user, $pass);

if(!$cnx)
    {
    header('Location: index.php?error=1');
    //exit("В настоящий момент, сервер базы данных недоступен, поэтому корректное отображение страницы невозможно!");
    }
if(!@mysql_select_db($db, $cnx))
    {
    header('Location: index.php?error=2');
    //exit("В настоящий момент, база данных недоступна, поэтому корректное отображение страницы невозможно!");
    }

}
connect_to_db();

$query = mysql_query("SELECT pass FROM `usrdata` WHERE user = \"$_POST[login]\" AND pass = \"$_POST[pass]\"");
mysql_real_escape_string($_POST['login']);
mysql_real_escape_string($_POST['pass']);

if(!$query)
     {
     header('Location: index.php?error=3');     
     }
else
     {
     header('Location: main.php');     
     }

?>


Проблема в том, что авторизация пропускает меня, как угодно, я могу ввести абсолютно, что моей душе угодно, и меня все равно кидает на main.php
Пожалуйста, помогите профиксить код!

Структура бд
Код

-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
-- 
-- Хост: localhost
-- Время создания: Май 16 2008 г., 16:52
-- Версия сервера: 5.0.45
-- Версия PHP: 5.2.4
-- 
-- БД: `forum`
-- 

-- --------------------------------------------------------

-- 
-- Структура таблицы `usrdata`
-- 

CREATE TABLE `usrdata` (
  `id` int(11) NOT NULL auto_increment,
  `user` varchar(22) NOT NULL,
  `pass` varchar(15) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `user` (`user`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;

-- 
-- Дамп данных таблицы `usrdata`
-- 

INSERT INTO `usrdata` VALUES (1, 'admin', '1234');
        



в бд есть столбец `user`, а в форме я использую login, поэтому запрос "SELECT pass FROM `usrdata` WHERE user = \"$_POST[login]\" AND pass = \"$_POST[pass]\"");
Вроде правильно составлен!

PM   Вверх
awers
Дата 18.5.2008, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



хм. на форуме мало тем по авторизации? и наверное ниодной в прикрепленных?
PM MAIL WWW ICQ Skype   Вверх
ReactOS
Дата 18.5.2008, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 6.12.2007

Репутация: нет
Всего: 33



Цитата(awers @  18.5.2008,  13:03 Найти цитируемый пост)
м. на форуме мало тем по авторизации? и наверное ниодной в прикрепленных?

нет, много smile
и поиск юзал, только тут я не знаю в чем проблема smile

да, и раньше вроде все работало, а теперь не работает...
PM   Вверх
Feldmarschall
Дата 18.5.2008, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Жесть.
fortrun, ответь мне на два вопроса
1. что делает в твоем коде функция mysql_real_escape_string(). Поподробнее. Не только что она делает вообще, а какую функцию выполняет в твоем коде
2. Что делает функция mysql_query(). Не в твоем коде, а вообще. Для чего нужна, какой результат возвращает.

PM   Вверх
ReactOS
Дата 18.5.2008, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 6.12.2007

Репутация: нет
Всего: 33



Цитата(Feldmarschall @  18.5.2008,  13:19 Найти цитируемый пост)
Жесть.

ага  smile 


Цитата(Feldmarschall @  18.5.2008,  13:19 Найти цитируемый пост)
то делает в твоем коде функция mysql_real_escape_string(). Поподробнее. Не только что она делает вообще, а какую функцию выполняет в твоем коде

mysql_real_escape_string — Escapes special characters in a string for use in a SQL statement
как вы сами советовали ее юзать, дабы мне не сделали
Код


<?php

$query = "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";
mysql_query($query);

$_POST['username'] = 'admin';
$_POST['password'] = "' OR ''='";

echo $query;
?> 


mysql_query() - создает запрос в бд

результат, наверное зависит от того, какой у тебя запрос...
будь это авторизация или регистрация
SELECT/INSERT/UPDATE

она, соотеветственно и разные results тебе выдаст!

ps
Камнем не кидай, я и так знаю, что мне нужно учиться многому smile
PM   Вверх
Feldmarschall
Дата 18.5.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Цитата(fortrun @  18.5.2008,  13:26 Найти цитируемый пост)
как вы сами советовали ее юзать, дабы мне не сделали

И как от этого помогает твой код?

Цитата(fortrun @  18.5.2008,  13:26 Найти цитируемый пост)
результат, наверное зависит от того, какой у тебя запрос...

а в документации прочитать?
PM   Вверх
ReactOS
Дата 18.5.2008, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 6.12.2007

Репутация: нет
Всего: 33



Цитата(Feldmarschall @  18.5.2008,  13:28 Найти цитируемый пост)
а в документации прочитать?

видимо, я доки не научился читать, хорошо сейчас буду листать smile


Цитата(Feldmarschall @  18.5.2008,  13:28 Найти цитируемый пост)
И как от этого помогает твой код?

ни как, неправильно юзаю ф-цию smile
наверное, раньше нужно было поставить строчки

Код

mysql_real_escape_string($_POST['login']);
mysql_real_escape_string($_POST['pass']);


Или посмотреть внимательнее пример с php.net
Код

<?php
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
    OR die(mysql_error());

// Query
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password));
?> 


Интересно, sprintf - они еще юзают smile
PM   Вверх
Feldmarschall
Дата 18.5.2008, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Цитата(fortrun @  18.5.2008,  13:32 Найти цитируемый пост)
наверное, раньше нужно было поставить строчки

вот в этом "наверное" и заключены все проблемы и недостатки РНР, за которые его все так ругают.
Даже если ты "поставишь раньше", понимания не прибавится. 
Будет ещё один код, автор которого не понимает, что в нем написано.

Цитата(fortrun @  18.5.2008,  13:32 Найти цитируемый пост)
видимо, я доки не научился читать, хорошо сейчас буду листать

там ничего сложного. скачиваешь себе один chm, в котором набираешь начало имени функции и тыкаешь прочитать.
или набираешь в браузере http://php.net/mysql_query

ну и как - прочитал? насколько это соотносится с тем, как ты используешь функцию в своем скрипте?
PM   Вверх
ReactOS
Дата 18.5.2008, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 6.12.2007

Репутация: нет
Всего: 33



Цитата

Description
resource mysql_query ( string $query [, resource $link_identifier ] )
mysql_query() sends an unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified link_identifier . 


Переводим
Цитата

Описание
mysql_query (строка $query [$link_identifier ресурса])
mysql_query () посылает уникальный запрос (многократные запросы не поддержаны) к, в настоящее время, активной базе данных на сервере, это связано с указанным link_identifier.


Это сообщение отредактировал(а) fortrun - 18.5.2008, 13:57
PM   Вверх
Feldmarschall
Дата 18.5.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Странно - а мне по-русски показывает. 
Читаем дальше:
Цитата

mysql_query() возвращает TRUE в случае успешного запроса и FALSE в случае ошибки. 

Как это соотносится с твоим кодом?

PM   Вверх
ReactOS
Дата 18.5.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 6.12.2007

Репутация: нет
Всего: 33



Цитата(Feldmarschall @  18.5.2008,  14:00 Найти цитируемый пост)
Как это соотносится с твоим кодом?

а если FALSE, то какого фига меня на main.php кидает?

вот часть кода моего
Код

if(!$query)
     {
     header('Location: index.php?error=3');     
     }


в случае false кидать меня на индекс, где мне покажут 3-ю ошибку

смотрим индекс
Код


    if($id_error==3) {
    echo("Ошибка с авторизацией! Неправильное введенны данные!<br>");
    }
    
    ?>
    <a href = "./registr.php">Зарегистрировать нового юзера!</a>


Добавлено через 1 минуту и 39 секунд
Цитата(Feldmarschall @  18.5.2008,  14:00 Найти цитируемый пост)
Странно - а мне по-русски показывает. 

http://ru2.php.net/manual/en/function.mysql-query.php

мда уж... а мне не показывает, приходится translate'ом заниматься smile
собсвтенно меня на Википедии хотят забанить  smile  smile 
PM   Вверх
Feldmarschall
Дата 18.5.2008, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Цитата(fortrun @  18.5.2008,  14:02 Найти цитируемый пост)
мне не показывает, приходится translate'ом заниматься

Не проще выбрать язык из списка?
Цитата(fortrun @  18.5.2008,  14:02 Найти цитируемый пост)
в случае false кидать меня на индекс, где мне покажут 3-ю ошибку

а у тебя false возвращает?
PM   Вверх
ReactOS
Дата 18.5.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 6.12.2007

Репутация: нет
Всего: 33



Цитата(Feldmarschall @  18.5.2008,  14:12 Найти цитируемый пост)
Не проще выбрать язык из списка?

выбираю русский, не воркает...

точнее, выбираю, и долго грузится страница, и ни как не загружается, так что приходится eng читать


Цитата(Feldmarschall @  18.5.2008,  14:12 Найти цитируемый пост)
а у тебя false возвращает?

судя по логике нет...

if(!$query) {}
не выбрасывает... а он 1-ый по в последовательности


else
     {
     header('Location: main.php');     
     }
такс.... кидает меня он здесь, интересно только посему я могу чего угодно ввести меня он все равно выбросит на Мэйн.пхп


ааааааааааааа
наверное надо считать кол-во строк или там $data = mysql_fetch_array()
а там if($data[0]>0) , то хрен тебе авторизация ? smile

Это сообщение отредактировал(а) fortrun - 18.5.2008, 14:23
PM   Вверх
Feldmarschall
Дата 18.5.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



правильно.
Цитата(Feldmarschall @  18.5.2008,  14:00 Найти цитируемый пост)
FALSE в случае ошибки

а где у тебя ошибка-то?
PM   Вверх
ReactOS
Дата 18.5.2008, 14:27 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 6.12.2007

Репутация: нет
Всего: 33



Цитата(Feldmarschall @  18.5.2008,  14:23 Найти цитируемый пост)
а где у тебя ошибка-то?

просто в моем коде, нет фиксации ошибки smile

if(!$query) - это не обработка... т.к. это буквально означает, что если не получилось создать сам запрос, а запрос-то у меня верный (синтаксис правильно составлен), просто я не сделал ф-цию, которая не пропускала бы такого юзера, которого не существует в базе данных

Это сообщение отредактировал(а) fortrun - 18.5.2008, 14:28
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0601 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.