Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Символы для логина
 
 автор: sl1p   (07.10.2008 в 00:49)   письмо автору
 
 

Вот наткнулся.. даже не знаю что придумать здесь.

Дал волю юзеру писать в имени любые символы которые он хочет)
но опять же столкнулся при записи в бд и вообще с отображением...
Так же ники используются в разных местах..
тоесть если заменять чтото, то юзер об этом не узнает и повторно залогиниться не сможет:)

мысль только одна ereg...

но опять же придётся думать что можно, чего нельзя...

может у Вас есть какието идеи насчёт этого всего?

  Ответить  
 
 автор: cheops   (07.10.2008 в 04:51)   письмо автору
 
   для: sl1p   (07.10.2008 в 00:49)
 

Разрешите использовать цифры и символы алфавита
<?php
  
if(!preg_match("|^[\w\d]+$|i"$text)) exit("Допускается использовать только цифры и символы алфавита");
?>

  Ответить  
 
 автор: Trianon   (07.10.2008 в 09:13)   письмо автору
 
   для: sl1p   (07.10.2008 в 00:49)
 

Вперед, в раздел "задачи", решать задачу 21.

  Ответить  
 
 автор: sl1p   (07.10.2008 в 18:02)   письмо автору
 
   для: Trianon   (07.10.2008 в 09:13)
 

с этим уже решил..
при записи я просто их обделываю всякими функциями типа htmlspecialchars и т.д.
и при логине когда сверяю их делаю тоже самое с введёнными..

теперь вот такая главная проблема.. тут уже вообще е знаю что сделать:)
есть ли какойто заменитель типа &amp; для запятой ","?

есть строки которые мне нужно записать в одну и разделить их " ,", чтобы в дальнейшем использовать explode, но эти строке на выходе перед эксплоуд нужно сделать точно такими же как и были.

ss,s
ss ,s
123

получается выйдет следующее ss,s ,ss ,s, 123 - тоесть бред.
НО, даже если можно было бы заменить запятую то вышло бы тоже криво ибо у юзера в нике могут быть такие записи как "&amp;" "&nbsp;"... тоесть когда перед explode я буду заменять &amp; на & то появятся лишние знаки...

Подскажите как тут быть( совсем потерялся..

  Ответить  
 
 автор: BinLaden   (07.10.2008 в 18:40)   письмо автору
 
   для: sl1p   (07.10.2008 в 18:02)
 

>с этим уже решил..
>при записи я просто их обделываю всякими функциями типа htmlspecialchars и т.д.
>и при логине когда сверяю их делаю тоже самое с введёнными..
>
Вы решили неправильно.

  Ответить  
 
 автор: sl1p   (07.10.2008 в 18:47)   письмо автору
 
   для: BinLaden   (07.10.2008 в 18:40)
 

причина? примеры?
вроде обдумал, никаких ошибок не должно быть..

  Ответить  
 
 автор: BinLaden   (07.10.2008 в 20:09)   письмо автору
 
   для: sl1p   (07.10.2008 в 18:47)
 

Хотите конкретики? Не видя того, что Вы написали?

  Ответить  
 
 автор: sl1p   (08.10.2008 в 00:28)   письмо автору
 
   для: BinLaden   (07.10.2008 в 20:09)
 

зачем тогда говорить что я решил не правильно не видя того что я написал?
меня так убивают ответы такого рода, вы не правы не знаю почему.

  Ответить  
 
 автор: BinLaden   (08.10.2008 в 00:36)   письмо автору
 
   для: sl1p   (08.10.2008 в 00:28)
 

У Вас неправильно организована обработка данных. Больше сказать нечего.

  Ответить  
 
 автор: sl1p   (08.10.2008 в 01:18)   письмо автору
 
   для: BinLaden   (08.10.2008 в 00:36)
 

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

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

Не вижу тут никаких проблем имхо.

  Ответить  
 
 автор: BinLaden   (08.10.2008 в 01:53)   письмо автору
 
   для: sl1p   (08.10.2008 в 01:18)
 

Если Вам действительно интересно в чём Ваша ошибка, то стоит решить 21-ю задачу

  Ответить  
 
 автор: sl1p   (08.10.2008 в 02:16)   письмо автору
 
   для: BinLaden   (08.10.2008 в 01:53)
 

Если это не проблемно прошу сказать в чём я не прав и как можно "поломать" такое решение, так как сейчас реально не до задачи..

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

  Ответить  
 
 автор: sl1p   (11.10.2008 в 03:20)   письмо автору
 
   для: BinLaden   (07.10.2008 в 18:40)
 

а что можно сделать с этим?
<img src=\"$v\" title=\"$i\">

при выводе юзаю хтмл спешл чарс..

как быть-то(

  Ответить  
 
 автор: AcidTrash   (07.10.2008 в 22:20)   письмо автору
 
   для: sl1p   (07.10.2008 в 18:02)
 

>при записи я просто их обделываю всякими функциями типа htmlspecialchars и т.д.
Какими именно?
Ну-ну.

  Ответить  
 
 автор: sl1p   (08.10.2008 в 00:27)   письмо автору
 
   для: AcidTrash   (07.10.2008 в 22:20)
 

шо нуну?
mysql_escape_string(html_special_chars(trim($str)));

  Ответить  
 
 автор: AcidTrash   (08.10.2008 в 22:08)   письмо автору
 
   для: sl1p   (08.10.2008 в 00:27)
 

>mysql_escape_string(html_special_chars(trim($str)));
html_special_chars очень интересная функция :)
Кстати htmlspecialchars() здесь она зачем?
Пускай юзер пишет все, что угодно. Ваша задача это дело правильно обработать и при записи в базу, обработка строк mysql_escape_string() вполне достаточно.
htmlspecialchars() в основном используется при выводе, если надо.

  Ответить  
 
 автор: sl1p   (09.10.2008 в 12:13)   письмо автору
 
   для: AcidTrash   (08.10.2008 в 22:08)
 

ну чтобы в базу не писалось если на пример &nbsp; пробел и т.д..

  Ответить  
 
 автор: Николай2357   (08.10.2008 в 22:44)   письмо автору
 
   для: Trianon   (07.10.2008 в 09:13)
 

Присоединяюсь к совету. Мне помогло понять не только это. Потраченое время слихвой окупилось.

  Ответить  
 
 автор: Trianon   (08.10.2008 в 22:53)   письмо автору
 
   для: Николай2357   (08.10.2008 в 22:44)
 

Увы. Не в коня корм.
(Я не про Вас, само собой... хотя и Вас перевоспитать получилось ой как не сразу.)

  Ответить  
 
 автор: sl1p   (09.10.2008 в 12:13)   письмо автору
 
   для: Trianon   (08.10.2008 в 22:53)
 

хм как же её можно правильно решить если я не понимаю проблемы?)

  Ответить  
 
 автор: Trianon   (09.10.2008 в 12:41)   письмо автору
 
   для: sl1p   (09.10.2008 в 12:13)
 

решите её хоть как-нибудь. Тогда и проблему поймете.

  Ответить  
 
 автор: sl1p   (09.10.2008 в 12:53)   письмо автору
 
   для: Trianon   (09.10.2008 в 12:41)
 

если просто писать в базу то я согласен можно както придумать и понормальней имхо, но просто с этим ником у меня потом куча операций.. сравнение с базой и т.д...
если я например не переведу &nbsp;
то потом будет бугага, потому что сравниваю с ником из инпута и приходится опять же его перевести в должный вид, поэтому каждый символ должен быть схвачен.. чтобы при записи не получилось что-то другое..

  Ответить  
 
 автор: Николай2357   (09.10.2008 в 15:02)   письмо автору
 
   для: sl1p   (09.10.2008 в 12:53)
 

Все запишется абсолютно правильно, если Вы не будете изобретать велосипед (как я в свое время). Необходимо и вполне достаточно для строковых значений использовать mysql_escape_string() Люди ночей не спали не зря, придумывая эту функцию. А для того, что бы понять, как правильно обработать, записать, получить, произвести действия и вывести в браузер данные, Вам и рекомендуют решить задачу №21. Там полно ответов, и информации вполне достаточно. Поверьте, это гараздо эффективнее, чем решать ребусы самостоятельно. Господин Trianon (как и многие другие мастера) любезно соглашается курировать этот процесс, и эффект может оказаться сногсшибательным. В моем случае произошел чуть ли не полный переворот взглядов на php.

  Ответить  
 
 автор: BinLaden   (09.10.2008 в 16:46)   письмо автору
 
   для: Николай2357   (09.10.2008 в 15:02)
 

> Люди ночей не спали не зря, придумывая эту функцию

Некоторых прямо из постели вынимали и отвозили в дурдом -- не справлялись с нагрузкой на мозг.

  Ответить  
 
 автор: sl1p   (09.10.2008 в 22:24)   письмо автору
 
   для: Николай2357   (09.10.2008 в 15:02)
 

А есть какое-то уже правильное решение чтобы его рассмотреть?..

..посмотрел там куча ответов и везде какие-то недоработки..

зы. запутался жёстко.. решить чтото не получается никаким боком=\

  Ответить  
 
 автор: Николай2357   (10.10.2008 в 04:49)   письмо автору
 
   для: sl1p   (09.10.2008 в 22:24)
 

Весь смак в том, что правильное решение - это Ваше решение. Каждый решает по своему. Обратите внимание на вариант автора, он наиболее полно отражает нюансы.
http://www.softtime.ru/forum/read.php?id_forum=7&id_theme=38424&page=1

  Ответить  
 
 автор: sl1p   (10.10.2008 в 13:04)   письмо автору
 
   для: Николай2357   (10.10.2008 в 04:49)
 

у меня вот такой вопрос, никак не могу понять что такое=\
есть ник:
  \\""


я его переделываю в
&#92;&#92;&quot;&quot;
и пишу в базу.
а потом он нужен для жс функции.. вытягиваю из базы и толи в жс криво ложится толи в инпут криво пишется, выходит:
\""


как его нормально для жс перевести?


тоесть я так понял главная проблема этого всего это слеши и кавычки?

  Ответить  
 
 автор: BinLaden   (10.10.2008 в 17:55)   письмо автору
 
   для: sl1p   (10.10.2008 в 13:04)
 

> как его нормально для жс перевести?

Проанализировать приведенное по ссылке решение. Вы не должны вытворять подобного:
> &#92;&#92;&quot;&quot;
перед записью в таблицу.

  Ответить  
 
 автор: sl1p   (10.10.2008 в 20:39)   письмо автору
 
   для: BinLaden   (10.10.2008 в 17:55)
 

ну при записи я вижу только mysql_escape_string.
мне же нужно перевести такие символы как &nbsp; &amp; и т.д.

как же я потом при "вытаскивании" буду знать что это &nbsp; а не просто пробел?

  Ответить  
 
 автор: BinLaden   (10.10.2008 в 21:00)   письмо автору
 
   для: sl1p   (10.10.2008 в 20:39)
 

> мне же нужно перевести такие символы как &nbsp; &amp; и т.д.

Не нужно.

> как же я потом при "вытаскивании" буду знать что это &nbsp; а не просто пробел?

Очень просто.

<?php
if( '&nbsp;' != ' ' )
{
     echo 
'Я знаю это!';
}
?>


Не создавайте сами себе проблем. Если Вы не будете переводить что-то одно во что-то другое, то у Вас не возникнет вопроса, как перевести что-то другое в что-то ... одно.

  Ответить  
 
 автор: sl1p   (10.10.2008 в 21:24)   письмо автору
 
   для: BinLaden   (10.10.2008 в 21:00)
 

блин, или я не понимаю ничерта или х3.
если я допустим пишу в инпут &nbsp; то в базу же оно запишет как " "..
но при выходе мне ненужно этих знаков! тоесть &nbsp; так и должно остаться &nbsp;
я сейчас не про задачу говорю а вообще, то что нужно мне..

  Ответить  
 
 автор: BinLaden   (10.10.2008 в 21:26)   письмо автору
 
   для: sl1p   (10.10.2008 в 21:24)
 

> базу же оно запишет как " "
Нет, "оно" запишет строку "&nbsp;". Если, конечно, Вы сами "&nbsp;" в " " не перевели.

  Ответить  
 
 автор: sl1p   (10.10.2008 в 21:35)   письмо автору
 
   для: BinLaden   (10.10.2008 в 21:26)
 

Ого, вот это жесть однако.Вы таки правы.Ну тогда это просто чудесно!:)

Я просто видно, действительно, чем-то переделал и записало как " ", и досих пор пытаюсь "пофиксить" то чего на самом деле нет))

  Ответить  
 
 автор: sl1p   (10.10.2008 в 23:22)   письмо автору
 
   для: BinLaden   (10.10.2008 в 21:26)
 

а что делать со знаками типа:
&#376; &#144;
они вообще в базу не пишутся..

блин и сюда не могу написать нормально.
короче там какието идиотские символы на раскладке нам лока.
типа ™©

---

зы. ещё подскажите пожалуйста как здесь решить..
$out_nick = "i\'m bobo";
onClick=\"it('whom','$out_nick');\"

добавляется без слешей..

  Ответить  
 
 автор: BinLaden   (10.10.2008 в 23:43)   письмо автору
 
   для: 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()

  Ответить  
 
 автор: sl1p   (11.10.2008 в 00:07)   письмо автору
 
   для: 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:33)   письмо автору
 
   для: sl1p   (11.10.2008 в 00:07)
 

аа это уже аякс выпендривается...=\

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования