За последние 24 часа нас посетили 59160 программистов и 1814 роботов. Сейчас ищут 899 программистов ...

десяток вопросов по мелочевке...

Тема в разделе "Прочее", создана пользователем EvelRus, 12 окт 2008.

  1. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1. <?$sql = ("SELECT count(*) FROM `DoD_chat_ipban` WHERE `ip` = '".$_SERVER['REMOTE_ADDR']."' LIMIT 1");
    2. $sql = mysql_query($sql) or die ('Не могу проверить IP');?>
    Сделал так... как теперь узнать значение коунт??
    раньше было без коунта и было
    PHP:
    1. if (mysql_num_rows ($sql) > 0)
    2. {
    А теперь бага :)))
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
  3. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Luge, спасибо... следующие вопросы далее будут :)))
     
  4. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Nemo
    Мой тебе совет, храни IP в INT. Преобразовывай через long2ip или через MYSQL-функцию.
     
  5. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    а написал бы ещё INET_ATON() и INET_NTOA(), вообще молодец был бы :)
     
  6. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Получил вот это... в какой именно момент, не понял,.. перевел. Смысла не понял
     
  7. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    С запросом накосячил где-то. Инсерт скорее всего. Количество полей и значений не совпадает.
     
  8. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Luge, а теперь как ЭТО работает в php???

    PHP:
    1. <?
    2. // Кодируем
    3. $sql = "UPDATE `DoD_chat_users` SET `user_chat_ip` = '".INET_ATON('$_SERVER['REMOTE_ADDR']')."' WHERE `user_chat_id` = ".$_SESSION['user_id']"
    4. ?>
    Я так понял?

    А вытаскивать как???
    Тут с вставленным кодом... а мне придется сначала кодировать? Так этож лишнии ресы... или я не прав?
     
  9. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    [sql]SELECT INET_NTOA(`user_chat_ip`) FROM `DoD_chat_users` WHERE `user_chat_id` = 'ID';[/sql]
     
  10. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    не... исходя из предыдущего вопроса.. есть текущий ИП и есть хранимый в базе... как сравнивать?
     
  11. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    WHERE поле = INET_ATON('ip') LIMIT 1;
     
  12. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1. <?//
    2. // Функция вырезания "опасных" символов
    3. //
    4. function mreplace($text)
    5. {
    6.  $text = str_replace("<", "&lt;", $text);
    7.  $text = str_replace(">", "&gt;", $text);
    8.  $text = str_replace(")" ,")" , $text );
    9.  $text = str_replace("(" ,"(" , $text );
    10.  $text = str_replace("javascript:" ,"javascript<b></b>:" , $text );
    11.  $text = str_replace("vdscript:" ,"vdscript<b></b>:" , $text );
    12.  $text = str_replace("'", "'", $text);
    13.  $text = str_replace('"', "&quot;", $text);
    14.  $text = str_replace("\r","",$text);
    15.  $text = str_replace("\n","<br>",$text);
    16.  $text = str_replace("\\", "\", $text);
    17. return $text;
    18. }
    19.  
    20. //
    21. // Функция занесения сообщений пользователей в логи чата
    22. //
    23. function log_write($who, $what, $status = null, $privat = null, $time = null, $html = null)
    24. {
    25. $sql = ("UPDATE `DoD_chat_users` SET `user_chat_action` = '".time()."' WHERE `user_chat_id` = '".$_SESSION['user_chat_id']."' LIMIT 1");
    26. $sql = mysql_query($sql) or die ('Не могу обновить время последнего действия пользователя: '.mysql_error());
    27. mreplace($what);
    28. mreplace($who);
    29. mreplace($status);
    30. mreplace($privat);
    31. $t1 = chr(10);
    32. $t2 = chr(13);
    33.  
    34. $what = trim(stripslashes(htmlspecialchars($what)));
    35. $what = str_replace($t1,'<br>',$what);
    36. $what = str_replace($t2,'<br>',$what);
    37. $what = preg_replace('/(.{3})\1*/i','$1',$what);
    38. if (isset($html))
    39. {
    40.  
    41. }
    42.  
    43. // Если сообщение приватное
    44. if (isset($privat))
    45. {
    46.  if (isset($_POST['status']))
    47.  {
    48. //   $status = trim(stripslashes(htmlspecialchars($status)));
    49.   $status = '['.$status.'] ';
    50.  }
    51.  $sql = ("INSERT INTO `DoD_chat_logs` VALUES ('', '".date('Y-m-d')."', '$time', '$who', '$what', '$status', '$privat', '".$_SESSION['user_chat_login']."')");
    52.  $sql = mysql_query($sql) or die (mysql_error());
    53. }
    54.  
    55. // Если сообщение в общий чат
    56. else
    57. {
    58.  if (isset($_POST['status']))
    59.  {
    60. //   $status = trim(stripslashes(htmlspecialchars($status)));
    61.   $status = '['.$status.'] ';
    62.  }
    63.  $sql = ("INSERT INTO `DoD_chat_logs` VALUES ('', '".date('Y-m-d')."' ,'$time' , '$who', '$what', '$status', '$privat', '".$_SESSION['user_chat_login']."')");
    64.  $sql = mysql_query($sql) or die (mysql_error());
    65.  }
    66. }
    1. Где я не прав :))
    2. как заставить в первой функции срабатывать вторую :)
    3. То, что я сделал п.2 и в этом не прав, знаю, но так надо и надо что бы работало :)))) По другому никак :(((
    4. И объясните что такое ссылка на функцию???
     
  13. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    Nemo
    везде
    http://php.net/mysql_real_escape_string
    http://phpfaq.ru/slashes
    твой велосипед не спасёт от мультибайтовых символов. Кодировка GBK, например.
    PHP:
    1. <? $what = mreplace($what);
    или
    PHP:
    1. <?php
    2. function mreplace(&$text)
    3. {
    4. // …
    5.     $text = str_replace("<", "&lt;", $text);
    6. // …
    7. }
    8. mreplace($what);
    9.  
    http://www.php.net/manual/ru/language.references.php
     
  14. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    =)))
    new function version >:p
    PHP:
    1. function mreplace($text) {
    2. $text=htmlspecialchars($text,ENT_QUOTES);
    3. $text = str_replace("\r","",$text);
    4. $text = str_replace("\n","<br>",$text);
    5. $text = str_replace("\\", "\", $text);
    6. return $text;
    7. }
     
  15. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    хмм, обнаружил что на хостинге strtolower не ловерит Заглавные Русские буквы,
    что-то нужно в пхп ini дописать?
     
  16. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
  17. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Luge
    ты ещё replace не видел =)))
    m - это mini replace ;)
     
  18. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Mr.M.I.T., покажи полный? :)))))
     
  19. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    169 строк не влезет =))
    ничё я скоро перепишу все свои старые replace функции...
     
  20. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1. <? function mreplace($text)
    2. {
    3.  $t1 = chr(10);
    4.  $t2 = chr(13);
    5.  $text = mysql_real_escape_string ($text);
    6.  $text = str_replace($t1,'<br>',$text);
    7.  $text = str_replace($t2,'<br>',$text);
    8.  $text = trim(stripslashes(htmlspecialchars($text)));
    9.  return $text;
    10. }
    Следующий вопрос :)
    Если я выполняю функцию
    Код (Text):
    1. function log_write($who, $what, $status = null, $privat = null, $time = null, $html = null)
    2. {
    собственно функцией, т.е. сразу подставляю значение поля $what , все нормально работает, но как только этой переменной присваевается значение из формы чата, оно превращается в УТФ (все файлы ANSI!!!)
     
  21. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    а чат аяксовый, да?
     
  22. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Luge, да )))

    Я понял.. ты прав :))))) Сейчас исправлю :)))
     
  23. Nemo, аякс работает с UTF-8
     
  24. перепишешь чат на неаяксовый??