|
|
|
| Вот наткнулся.. даже не знаю что придумать здесь.
Дал волю юзеру писать в имени любые символы которые он хочет)
но опять же столкнулся при записи в бд и вообще с отображением...
Так же ники используются в разных местах..
тоесть если заменять чтото, то юзер об этом не узнает и повторно залогиниться не сможет:)
мысль только одна ereg...
но опять же придётся думать что можно, чего нельзя...
может у Вас есть какието идеи насчёт этого всего? | |
|
|
|
|
|
|
|
для: sl1p
(07.10.2008 в 00:49)
| | Разрешите использовать цифры и символы алфавита
<?php
if(!preg_match("|^[\w\d]+$|i", $text)) exit("Допускается использовать только цифры и символы алфавита");
?>
|
| |
|
|
|
|
|
|
|
для: sl1p
(07.10.2008 в 00:49)
| | Вперед, в раздел "задачи", решать задачу 21. | |
|
|
|
|
|
|
|
для: Trianon
(07.10.2008 в 09:13)
| | с этим уже решил..
при записи я просто их обделываю всякими функциями типа htmlspecialchars и т.д.
и при логине когда сверяю их делаю тоже самое с введёнными..
теперь вот такая главная проблема.. тут уже вообще е знаю что сделать:)
есть ли какойто заменитель типа & для запятой ","?
есть строки которые мне нужно записать в одну и разделить их " ,", чтобы в дальнейшем использовать explode, но эти строке на выходе перед эксплоуд нужно сделать точно такими же как и были.
ss,s
ss ,s
123
получается выйдет следующее ss,s ,ss ,s, 123 - тоесть бред.
НО, даже если можно было бы заменить запятую то вышло бы тоже криво ибо у юзера в нике могут быть такие записи как "&" " "... тоесть когда перед explode я буду заменять & на & то появятся лишние знаки...
Подскажите как тут быть( совсем потерялся.. | |
|
|
|
|
|
|
|
для: sl1p
(07.10.2008 в 18:02)
| | >с этим уже решил..
>при записи я просто их обделываю всякими функциями типа htmlspecialchars и т.д.
>и при логине когда сверяю их делаю тоже самое с введёнными..
>
Вы решили неправильно. | |
|
|
|
|
|
|
|
для: BinLaden
(07.10.2008 в 18:40)
| | причина? примеры?
вроде обдумал, никаких ошибок не должно быть.. | |
|
|
|
|
|
|
|
для: sl1p
(07.10.2008 в 18:47)
| | Хотите конкретики? Не видя того, что Вы написали? | |
|
|
|
|
|
|
|
для: BinLaden
(07.10.2008 в 20:09)
| | зачем тогда говорить что я решил не правильно не видя того что я написал?
меня так убивают ответы такого рода, вы не правы не знаю почему. | |
|
|
|
|
|
|
|
для: sl1p
(08.10.2008 в 00:28)
| | У Вас неправильно организована обработка данных. Больше сказать нечего. | |
|
|
|
|
|
|
|
для: BinLaden
(08.10.2008 в 00:36)
| | ну и чем же она не правильна?
я сказал как я делаю..
юзер при регистрации вводит логин, я его обрабатываю функциями.
Потом при логине, то что было введено точно так же обрабатываю теми же самыми функциями и сверяю с записей в бд.
Не вижу тут никаких проблем имхо. | |
|
|
|
|
|
|
|
для: sl1p
(08.10.2008 в 01:18)
| | Если Вам действительно интересно в чём Ваша ошибка, то стоит решить 21-ю задачу | |
|
|
|
|
|
|
|
для: BinLaden
(08.10.2008 в 01:53)
| | Если это не проблемно прошу сказать в чём я не прав и как можно "поломать" такое решение, так как сейчас реально не до задачи..
и если я действительно не прав то как можно поступить в ситуации когда я хочу разрешить использовать любые символы? | |
|
|
|
|
|
|
|
для: BinLaden
(07.10.2008 в 18:40)
| | а что можно сделать с этим?
<img src=\"$v\" title=\"$i\">
при выводе юзаю хтмл спешл чарс..
как быть-то( | |
|
|
|
|
|
|
|
для: sl1p
(07.10.2008 в 18:02)
| | >при записи я просто их обделываю всякими функциями типа htmlspecialchars и т.д.
Какими именно?
Ну-ну. | |
|
|
|
|
|
|
|
для: AcidTrash
(07.10.2008 в 22:20)
| | шо нуну?
mysql_escape_string(html_special_chars(trim($str))); | |
|
|
|
|
|
|
|
для: sl1p
(08.10.2008 в 00:27)
| | >mysql_escape_string(html_special_chars(trim($str)));
html_special_chars очень интересная функция :)
Кстати htmlspecialchars() здесь она зачем?
Пускай юзер пишет все, что угодно. Ваша задача это дело правильно обработать и при записи в базу, обработка строк mysql_escape_string() вполне достаточно.
htmlspecialchars() в основном используется при выводе, если надо. | |
|
|
|
|
|
|
|
для: AcidTrash
(08.10.2008 в 22:08)
| | ну чтобы в базу не писалось если на пример пробел и т.д.. | |
|
|
|
|
|
|
|
для: Trianon
(07.10.2008 в 09:13)
| | Присоединяюсь к совету. Мне помогло понять не только это. Потраченое время слихвой окупилось. | |
|
|
|
|
|
|
|
для: Николай2357
(08.10.2008 в 22:44)
| | Увы. Не в коня корм.
(Я не про Вас, само собой... хотя и Вас перевоспитать получилось ой как не сразу.) | |
|
|
|
|
|
|
|
для: Trianon
(08.10.2008 в 22:53)
| | хм как же её можно правильно решить если я не понимаю проблемы?) | |
|
|
|
|
|
|
|
для: sl1p
(09.10.2008 в 12:13)
| | решите её хоть как-нибудь. Тогда и проблему поймете. | |
|
|
|
|
|
|
|
для: Trianon
(09.10.2008 в 12:41)
| | если просто писать в базу то я согласен можно както придумать и понормальней имхо, но просто с этим ником у меня потом куча операций.. сравнение с базой и т.д...
если я например не переведу
то потом будет бугага, потому что сравниваю с ником из инпута и приходится опять же его перевести в должный вид, поэтому каждый символ должен быть схвачен.. чтобы при записи не получилось что-то другое.. | |
|
|
|
|
|
|
|
для: sl1p
(09.10.2008 в 12:53)
| | Все запишется абсолютно правильно, если Вы не будете изобретать велосипед (как я в свое время). Необходимо и вполне достаточно для строковых значений использовать mysql_escape_string() Люди ночей не спали не зря, придумывая эту функцию. А для того, что бы понять, как правильно обработать, записать, получить, произвести действия и вывести в браузер данные, Вам и рекомендуют решить задачу №21. Там полно ответов, и информации вполне достаточно. Поверьте, это гараздо эффективнее, чем решать ребусы самостоятельно. Господин Trianon (как и многие другие мастера) любезно соглашается курировать этот процесс, и эффект может оказаться сногсшибательным. В моем случае произошел чуть ли не полный переворот взглядов на php. | |
|
|
|
|
|
|
|
для: Николай2357
(09.10.2008 в 15:02)
| | > Люди ночей не спали не зря, придумывая эту функцию
Некоторых прямо из постели вынимали и отвозили в дурдом -- не справлялись с нагрузкой на мозг. | |
|
|
|
|
|
|
|
для: Николай2357
(09.10.2008 в 15:02)
| | А есть какое-то уже правильное решение чтобы его рассмотреть?..
..посмотрел там куча ответов и везде какие-то недоработки..
зы. запутался жёстко.. решить чтото не получается никаким боком=\ | |
|
|
|
|
|
|
|
для: sl1p
(09.10.2008 в 22:24)
| | Весь смак в том, что правильное решение - это Ваше решение. Каждый решает по своему. Обратите внимание на вариант автора, он наиболее полно отражает нюансы.
http://www.softtime.ru/forum/read.php?id_forum=7&id_theme=38424&page=1 | |
|
|
|
|
|
|
|
для: Николай2357
(10.10.2008 в 04:49)
| | у меня вот такой вопрос, никак не могу понять что такое=\
есть ник:
я его переделываю в и пишу в базу.
а потом он нужен для жс функции.. вытягиваю из базы и толи в жс криво ложится толи в инпут криво пишется, выходит:
как его нормально для жс перевести?
тоесть я так понял главная проблема этого всего это слеши и кавычки? | |
|
|
|
|
|
|
|
для: sl1p
(10.10.2008 в 13:04)
| | > как его нормально для жс перевести?
Проанализировать приведенное по ссылке решение. Вы не должны вытворять подобного:
> \\""
перед записью в таблицу. | |
|
|
|
|
|
|
|
для: BinLaden
(10.10.2008 в 17:55)
| | ну при записи я вижу только mysql_escape_string.
мне же нужно перевести такие символы как & и т.д.
как же я потом при "вытаскивании" буду знать что это а не просто пробел? | |
|
|
|
|
|
|
|
для: sl1p
(10.10.2008 в 20:39)
| | > мне же нужно перевести такие символы как & и т.д.
Не нужно.
> как же я потом при "вытаскивании" буду знать что это а не просто пробел?
Очень просто.
<?php
if( ' ' != ' ' )
{
echo 'Я знаю это!';
}
?>
|
Не создавайте сами себе проблем. Если Вы не будете переводить что-то одно во что-то другое, то у Вас не возникнет вопроса, как перевести что-то другое в что-то ... одно. | |
|
|
|
|
|
|
|
для: BinLaden
(10.10.2008 в 21:00)
| | блин, или я не понимаю ничерта или х3.
если я допустим пишу в инпут то в базу же оно запишет как " "..
но при выходе мне ненужно этих знаков! тоесть так и должно остаться
я сейчас не про задачу говорю а вообще, то что нужно мне.. | |
|
|
|
|
|
|
|
для: sl1p
(10.10.2008 в 21:24)
| | > базу же оно запишет как " "
Нет, "оно" запишет строку " ". Если, конечно, Вы сами " " в " " не перевели. | |
|
|
|
|
|
|
|
для: BinLaden
(10.10.2008 в 21:26)
| | Ого, вот это жесть однако.Вы таки правы.Ну тогда это просто чудесно!:)
Я просто видно, действительно, чем-то переделал и записало как " ", и досих пор пытаюсь "пофиксить" то чего на самом деле нет)) | |
|
|
|
|
|
|
|
для: BinLaden
(10.10.2008 в 21:26)
| | а что делать со знаками типа:
Ÿ 
они вообще в базу не пишутся..
блин и сюда не могу написать нормально.
короче там какието идиотские символы на раскладке нам лока.
типа ™©
---
зы. ещё подскажите пожалуйста как здесь решить..
$out_nick = "i\'m bobo";
onClick=\"it('whom','$out_nick');\"
добавляется без слешей.. | |
|
|
|
|
|
|
|
для: sl1p
(10.10.2008 в 23:22)
| | > они вообще в базу не пишутся..
В базу всё что угодно пишется.
<?php
$string = ' ... '; # Всё, что угодно
$query = "INSERT INTO ... VALUES( ... '" . mysql_escape_string($string) . "' ... );";
mysql_query($query) or die("Error while executing '" . nl2br(htmlspecialchars($query)) . "': " . htmlspecialchars(mysql_error()));
?>
|
> добавляется без слешей..
Значит Вы не использовали mysql_escape_string() | |
|
|
|
|
|
|
|
для: BinLaden
(10.10.2008 в 23:43)
| | тю дык, я обрабатываю строку только так:
function db_record_escape($s){
$s=(get_magic_quotes_gpc())? stripslashes($s):$s;
$s = mysql_escape_string($s);
return $s;
}
не пишется=\
---
оп, сенки.:) | |
|
|
|
|
|
|
|
для: sl1p
(11.10.2008 в 00:07)
| | аа это уже аякс выпендривается...=\ | |
|
|
|