проблемы - функция замены символа

serious

Новичок
проблемы - функция замены символа

Будем считать, что есть некий скрипт, состоящий из php-страницы авторизации и другой php-страницы, допустим с менюшкой. Скрипт не мой, я его надыбал в закоулках сети :) Так вот, в скрипте авторизации есть функция замены символов:

PHP:
function check( $str, $maxchar = 30){
$str = htmlspecialchars($str);
$str = substr( $str, 0, $maxchar );
$str = trim( $str );
$str = str_replace( "'", "", $str );
$str = str_replace( '"', "", $str );
$str = str_replace( "\n", "<BR>", $str );
return $str;
}
check($login_auth);
check($password);
$login_auth = str_replace("'","",$login_auth);
$password = str_replace("'","",$password);
Вот такой. Вследствие чего, при попытке ввести логин, ну, к примеру abc'
Он выдает "Логин abc\ не найден!".
Как правильно убрать замену апострофа на слэш? Все мои попытки убрать его приводят к тому, что расположенная в другой странице mysql_fetch_array не возвращает результат
 

SelenIT

IT-лунатик :)
[size=-2][offtopище]Кстати, забавно: второй раз за день вижу чудовищную функцию варварской замены под безобидным названием Check...[/offtopище][/size]
 

serious

Новичок
нет, тэги не разрешены.
Выкинул функцию, теперь на запрос логина abc' он выдает " логин abc\' не найден.

Прочитал ту ссылку про слэширование. Половину не понял на гхыр. А запрос после той функции у меня такой:

PHP:
$CHECK = mysql_query("SELECT * FROM `users` WHERE login='$login_auth'"); 
$DATA  = mysql_fetch_array($CHECK);
Может, кто-нить поможет проэкранировать?:rolleyes:
 

Фанат

oncle terrible
Команда форума
скажи - что именно ты не понял?
вот взять первый раздел. что там непонятно?

-~{}~ 03.02.06 09:49:

да и есть ли у тебя в базе такой логин?
 

serious

Новичок
Логин конечно есть.

Ну теретическую часть я понял, а вот где начинается про работу с оператором LIKE (заменить один слэш двумя, потом еще escape_string и т.д.) - вот там запутался..
 

Фанат

oncle terrible
Команда форума
а зачем тебе работа с оператором лайк?

-~{}~ 03.02.06 11:03:

если ты всё остальное понял, то какие проблемы у тебя остались?

-~{}~ 03.02.06 11:04:

Логин конечно есть.
какой логин?
откуда он там взялся?
как ты проверял?
 

serious

Новичок
у меня в скрипте есть файл регистрации, который этот логин без проблем занес в БД.
 

Фанат

oncle terrible
Команда форума
стоп.
я тебя не српшивал - что ты заносил.
я тебя спросил - что у тебя в базе лежит.

-~{}~ 03.02.06 11:57:

"этот" - это какой?
abc'?
abc\?
abc\'?
 

serious

Новичок
Вот смотри.
Вот, что интересно... зарегал еще один логин, 11'11
Он авторизуется, а при загрузке страницы с меню, выдает:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/fizik/public_html/forum/rpg/menu.php on line 15

1064 : You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''11' at line 1
 

Фанат

oncle terrible
Команда форума
при выводе меню также надо руководствоваться рекомендациями, изложенными по ссылке.
 

serious

Новичок
И еще, вот начало строки, которой он зарегал логин в БД:

INSERT INTO `users` VALUES (10, '11''11', ......

Разве там должны быть двойные кавычки?
 

Фанат

oncle terrible
Команда форума
это ты не у меня - это ты у своего скрипта спрашивай.

-~{}~ 03.02.06 12:15:

а что там ДОЛЖНО быть - написано по ссылке, которую я дал

-~{}~ 03.02.06 12:16:

кстати, что-то ты гонишь.
с такой "строкой" никто зареган быть не может.
такая строка вызовет вышеприведённое сообщение об ошибке
 

serious

Новичок
Я экспортировал БД и скопировал оттуда всё как есть. Ладно, попкобую перечитать и вникнуть...
 

Фанат

oncle terrible
Команда форума
приведённая тобой строка вызовет ошибку.
значит, ты копировал неправильно
 

serious

Новичок
Я экспортировал БД и скопировал оттуда всё как есть. Ладно, попкобую перечитать и вникнуть...

-~{}~ 03.02.06 12:43:

ура! заработало!
Ссылку прочитал, всё сделал. Спасибо!

-~{}~ 03.02.06 13:19:

ура! заработало!
Ссылку прочитал, всё сделал. Спасибо!

-~{}~ 04.02.06 22:30:

Если
PHP:
mysql_query("SELECT * FROM `users` WHERE login='".($_SESSION["login"])."'");
$db = mysql_fetch_array($result);
Заменяю на

PHP:
mysql_query("SELECT * FROM `users` WHERE login='".addslashes($_SESSION["login"])."'");
$db = mysql_fetch_array($result);
То $result возвращается и всё работает. А если талую строку:

PHP:
$result = mysql_query("SELECT room,city_game FROM `users` WHERE login='$sender'");
$db = mysql_fetch_array($result);
на

PHP:
$result = mysql_query("SELECT room,city_game FROM `users` WHERE login='addslashes($sender)'");
$db = mysql_fetch_array($result);
То $result не возвращается. Почему?
 

Фанат

oncle terrible
Команда форума
здорово.
напоминает анекдот про Чапаева.

Я - говорит - человек простой! Я курю, а ты подошёл - тоже садись, закуривай. Я чай пью - и ты садись, чай пей. Я обедаю - и ты садись, закуривай!
 
Сверху