Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Хочу написать.. Не знаю с чего начать.. [4]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (5): « 1 2 3 [4] 5 »   

> Описание: Предложите структуру движка чата?
Stierus Супермодератор
Отправлено: 18 Декабря, 2009 - 14:33:57
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Цитата:
1) нужно извлечь id кампутера пользователя
впервые слышу, что у моего компьютера есть Id ... где посмотреть?
Цитата:
2) нужно извлечь ... провайдэра пользователя
провайдера определишь только по ip ... как узнать ip клиента на Php писалось не раз, яндекс в помощь
 
My status
 Top
EuGen Администратор
Отправлено: 18 Декабря, 2009 - 15:07:31
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Если id имеется ввиду MAC (другое что-то в голову не приходит), то корректно его выяснить не удастся (почему - читайте про OSI и современный routing&switching а так же проблемы IPv4)
Правда, внутри одного сетевого сегмента Ethernet корректно будет работать это:
http://forum.php.su/topic.php?fo...=35&topic=60


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Hunter
Отправлено: 18 Декабря, 2009 - 16:38:25
Post Id



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Дек. 2009  
Откуда: Блага


Помог: 0 раз(а)




EuGenИменно его я и имел ввиду. Это тут все знают что МАС можно подменить, а там далеко не каждый даже слово такое знает..
жаль на локальном компе без сети скрпипт этот не обкатаю, но на вооружение взял, спасибо.
(Добавление)
Stierusда айпи клиента не есть проблема, это я умею и сам. ... мне нужен провайдер для бана по сетке..
(Добавление)
Stierus
все, с этм разобрался маломальски...
я просто не очень хорошо вопрос сформулировал)))
мне нужен был какой нибудь ип анализатор извлекающий как можно больше инфы о клиенте.. уже делаю.. спасибо за участие)..
 
 Top
JustUserR
Отправлено: 18 Декабря, 2009 - 20:49:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




К слову сказать я не просто так активно "рекламирую" библиотеку как наиболее известное мне средство с постоянным подлючением - дейтсвительно данные для которых требуется гарантированная доставка непрерывно посылаются гораздо быстрее
Можете проверить в домашней сети - архив в 1гб пересылается раз в 20 быстрее чем столько же мелких файлов - потому что каждый раз не инициализируется соединение заново а пакеты ходят себе спокойно в TCP-соединении - кроме того нагрузка гораздо меньше


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Hunter
Отправлено: 20 Декабря, 2009 - 12:29:41
Post Id



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Дек. 2009  
Откуда: Блага


Помог: 0 раз(а)




нашел вот это:
PHP:
скопировать код в буфер обмена
  1.  
  2. function geo_info($ip) {    
  3.         $xml = "<ipquery><fields><city/></fields><ip-list>" . "<ip>" . $ip . "</ip></ip-list></ipquery>";    
  4.         $ch = curl_init("http://194.85.91.253:8090/geo/geo.html");  
  5.         curl_setopt($ch, CURLOPT_HEADER, false);
  6.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  7.         curl_setopt($ch, CURLOPT_POST, true);
  8.         curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
  9.         $result = curl_exec($ch);
  10.         if(curl_errno($ch) != 0) {
  11.                     die("curl_errno(".curl_errno($ch)."), curl_error(".curl_error($ch).")");
  12.         }              
  13.         curl_close($ch);
  14.         if (strpos($result, '<message>Not found</message>') !== false) {
  15.                 return false;
  16.         }
  17.         preg_match("/<city>(.*)<\/city>/", $result, $city);
  18.         return $city[1];
  19.     }
  20.         $ip = '$_SERVER["REMOTE_ADDR"]';
  21.         $city = geo_info($ip);
  22.  

для определения города посетителя по его ip адресу. используются готовые сервисы работающие в рамках таких целей, имеющие постоянно пополняющиеся базы данных.
результат функции - город.
именно то что искал.
но у меня почему то не работает...
может кто скажет почему неработает или может только у меня не работает...
 
 Top
valenok Модератор
Отправлено: 20 Декабря, 2009 - 12:54:55
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)






-----
Truly yours, Sasha.
 
My status
 Top
Hunter
Отправлено: 20 Декабря, 2009 - 13:31:42
Post Id



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Дек. 2009  
Откуда: Блага


Помог: 0 раз(а)




valenok
да вроде пишет что функция незнакомая, про адрес не говорит ни чего...
(Добавление)
с адресом все впорядке, я по нему перехожу в браузере..
(Добавление)
EuGen
не понимаю в чем дело. все библиотеки присутствуют, все функции в библиотеках присутствуют, утилита определяющая зависимости библиотек показывает все в порядке...
а функция все равно неопределена..

ps. а у кого-нибудь вообще этот скрипт работает?
(Добавление)
EuGen
не понимаю в чем дело. все библиотеки присутствуют, все функции в библиотеках присутствуют, утилита определяющая зависимости библиотек показывает все в порядке...
а функция все равно неопределена..

ps. а у кого-нибудь вообще этот скрипт работает?
 
 Top
Hunter
Отправлено: 20 Декабря, 2009 - 16:19:03
Post Id



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Дек. 2009  
Откуда: Блага


Помог: 0 раз(а)




все, разобрался с этим.. просто библиотека не под мою версию..
 
 Top
JustUserR
Отправлено: 20 Декабря, 2009 - 16:28:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Hunter А что вообще делает этот PHP-скрипт? Наверняка он ссылается на какието еще библиотеки вот и не работает
Автору темы Наверное среди многих ссылок затерялось http://alexsnet[dot]ru/2008/10/js-socket-connection/ так что можете обойтись без mutliplexorа главное используйте keep-alive соединение


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Hunter
Отправлено: 21 Декабря, 2009 - 15:42:26
Post Id



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Дек. 2009  
Откуда: Блага


Помог: 0 раз(а)




JustUserR
все библиотеки на которые ссылается этот скрипт у меня присутствуют и подключены и нормально работают. зависимости я проверял утилитой DEPENDS.exe, проблемы естественно были, и я из устранил вроде как. по крайней мере в логах не говорится о том что не хватает какой то библиотеки. но версия нужной мне библиотеки более старая чем версия пыха.. а под свою версию я так и не нашел..

если есть у кого нибудь - дайте плиииз:
php_curl.dll
php4ts.dll
версия php - 5.2.4
 
 Top
JustUserR
Отправлено: 22 Декабря, 2009 - 00:56:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Hunter А у вас PHP под Apache? А то я слышал о проблемы с ISAPI для PHP под IIS сервер с невозможностью подключения библиотек
Еще вроде бы как важен порядок подключения библиотек в конфигарационном файле
Вероятно эти библиотеки можно скачать с PEAR и он отконфигурирует как надо заодно


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Hunter
Отправлено: 22 Декабря, 2009 - 09:57:18
Post Id



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Дек. 2009  
Откуда: Блага


Помог: 0 раз(а)




JustUserR
да, под апачь... дэнвер у меня..., на хосте не буду наверное пробовать пока на локалке меня все не устроит..
(Добавление)
вот такая проблема:
хочу некий фрагмент кода, используемый для замены "не очень хороших" слов на вполне приличные оформить в виде функции. пока фрагмент находится в основном коде проблем не вознмкает, а вот если сделать его ввиде функции размещенной в отдельном файле то почему то не могет она подключиться к серверу БД... вот рабочий код:
PHP:
скопировать код в буфер обмена
  1.  
  2. include ('./db_data_access.php');                     //тут все для конекта к серву БД
  3. include ('./enter_function.php');                       //тут разные функции
  4. $login = $_POST[user_login];                          //это со стартовой
  5. $passw = $_POST[user_pass];                        //это тоже со стартовой
  6. if (strlen($login) > 30) {                                  //длинну больше 30 нехочу
  7. $message = 'длина логина недопустима';        //это для формы рестарта
  8. restart_enter($message);                                //это собственно сам рестарт
  9. }
  10. if (strlen($passw) > 15) {                                  //то же что и с логином
  11. $message = 'длинна пароля недопустима';       //это тоже для рестарта
  12. restart_enter($message);                                 //тот же рестарт
  13. }
  14. $dblink = mysql_connect($serv, $user, $pass);   //коннектимся к серву
  15. $selected = mysql_select_db($base, $dblink);    //наша база
  16. $sql = "SELECT * FROM antimat";                      //запрос в таблицу
  17. $qry = mysql_query($sql, $dblink);                   //выполняем выполняем
  18. while ($rez !== false) {                                   //читаем записи до конца талицы
  19.     $rez = mysql_fetch_assoc($qry);                  //результат - асс массив
  20.     if ($rez == false){                                      //если записи кончились то
  21.         break;                                                   //выходим
  22.     }
  23.     $obscene[] = $rez['obscene'];                      //заполняем матерный массив
  24.     $replacement[] = $rez['replacement'];          //заполняем нематерный массив
  25. }
  26. $antimat = array_combine($obscene, $replacement); //собираем антиматовый массив
  27. $login = strtr($login, $antimat);                          //профильтруем строку по ключам массива
  28. // тут все остальное
  29.  



вот нерабочий код:
PHP:
скопировать код в буфер обмена
  1.  
  2. include ('./db_data_access.php');                     //тут все для конекта к серву БД
  3. include ('./enter_function.php');                       //тут разные функции
  4. $login = $_POST[user_login];                          //это со стартовой
  5. $passw = $_POST[user_pass];                        //это тоже со стартовой
  6. if (strlen($login) > 30) {                                  //длинну больше 30 нехочу
  7. $message = 'длина логина недопустима';        //это для формы рестарта
  8. restart_enter($message);                                //это собственно сам рестарт
  9. }
  10. if (strlen($passw) > 15) {                                  //то же что и с логином
  11. $message = 'длинна пароля недопустима';       //это тоже для рестарта
  12. restart_enter($message);                                 //тот же рестарт
  13. }
  14. $login = antimat($login);             //вот это функция неможет подключиться к БД
  15. //тут все остальное
  16.  


вот код самой функции (фрагмент из файла "enter_function.php"):
PHP:
скопировать код в буфер обмена
  1.  
  2. function antimat($check_up){
  3.     $dblink = mysql_connect($serv, $user, $pass);   //коннектимся к серву
  4.     $selected = mysql_select_db($base, $dblink);    //наша база
  5.     $sql = "SELECT * FROM antimat";                      //запрос в таблицу
  6.     $qry = mysql_query($sql, $dblink);                   //выполняем выполняем
  7.     while ($rez !== false) {                                   //читаем записи до конца талицы
  8.         $rez = mysql_fetch_assoc($qry);                  //результат - асс массив
  9.         if ($rez == false){                                      //если записи кончились то
  10.             break;                                                   //выходим
  11.         }
  12.         $obscene[] = $rez['obscene'];                      //заполняем матерный массив
  13.         $replacement[] = $rez['replacement'];          //заполняем нематерный массив
  14.     }
  15.     $antimat = array_combine($obscene, $replacement); //собираем антиматовый массив
  16.     $result = strtr($check_up, $antimat);                    //профильтруем строку по ключам массива
  17.     return $result;
  18. }
  19.  
 
 Top
JustUserR
Отправлено: 22 Декабря, 2009 - 16:16:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Hunter Может проблемы с областью видимости перменных?


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Hunter
Отправлено: 22 Декабря, 2009 - 16:34:26
Post Id



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Дек. 2009  
Откуда: Блага


Помог: 0 раз(а)




JustUserR
может быть, вот только я не могу найти ничего подозрительного, проблема возникает не из за того что где то не видна какая-нибудь переменная, проблема возникает при подключении функции к серверу БД.
в общем я не стал ее особо решать и ограничился первым (рабочим) вариантом, немного его доработав...
 
 Top
Hunter
Отправлено: 24 Декабря, 2009 - 16:41:46
Post Id



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Дек. 2009  
Откуда: Блага


Помог: 0 раз(а)




короче вот такая авторизация получилась (кому не трудно посмотрите и скажите что тут надо менять у лучшему):
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. include ('./db_data_access.php');                  //файл с параметрами доступа к серву БД
  4. include ('./enter_function.php');                     //файл с нужными функциями
  5. $login = $_POST[user_login];                        //полученный логин
  6. $passw = $_POST[user_pass];                       //полученный пароль
  7. if (strlen($login) > 30) {                                 //больше 30 нехочу..
  8.     $message = 'длина логина недопустима';   //сообщение для страницы рестарта
  9.     restart_enter($message);                            //страница рестарта
  10.     exit();
  11. }                                                      
  12. if (strlen($passw) > 15) {                                 //больше 15 нехочу
  13.     $message = 'длинна пароля недопустима';   //сообщение для страницы рестарта
  14.     restart_enter($message);                               //страница рестарта
  15.     exit();
  16. }
  17. if (is_inadmissible($login) === false) {                //проверка на недопустимые символы
  18.     $message = 'недопустимый символ в логине';        //сообщение для рестарта
  19.     restart_enter($message);                               //снова рестарт
  20.     exit();
  21. }  
  22. if (is_inadmissible($passw) === false) {                //проверка на недопустимые символы
  23.     $message = 'недопустимый символ в пароле';   //сообщение для рестарта
  24.     restart_enter($message);                               //снова рестарт
  25.     exit();
  26. }
  27. $dblink = mysql_connect($serv, $user, $pass);
  28. $selected = mysql_select_db($base, $dblink);
  29. $sql = "SELECT * FROM antimat";                            //запрос в таблицу антимата
  30. $qry = mysql_query($sql, $dblink);                         //выполняем выполняем
  31. while ($rez !== false) {                                   //читаем записи до конца талицы
  32.     $rez = mysql_fetch_assoc($qry);                    //получаем запись
  33.     if ($rez == false){                                    //записи кончились
  34.         break;
  35.     }
  36.     $obscene[] = $rez['obscene'];                //заполняем по ходу массив матов
  37.     $replacement[] = $rez['replacement'];      //и не матов
  38. }
  39. unset ($rez);
  40. $antimat = array_combine($obscene, $replacement);     //собираем антимат
  41. foreach ($antimat as $key=>$value) {                       //переберем
  42.     $login = str_ireplace($key, $value, $login);           //замена совпадений
  43. }
  44. $sql = "SELECT * FROM users WHERE user_login = '$login'";  //будем искать логин
  45. $qry = mysql_query($sql, $dblink);                         //выполняем выполняем
  46. $rez = mysql_fetch_assoc($qry);                            //получаем запись
  47. if ($rez['user_login'] !== $login) {                       //если в таблице нет логина
  48.     default_profil_start();                                //выдаем страницу
  49.     exit;
  50. }
  51. if ($passw == $rez['user_password']) {                     //если пароль верен
  52.     switch ($rez['user_rank']) {                           //выбираем статус юзера из из БД:
  53.     case 'just_user':                                      //статус простого пользователя:
  54.         just_user_profil_start();                          //строим профиль и выдаем страницу
  55.         break;
  56.     case 'killer':
  57.         killer_profil_start();
  58.         break;
  59.     case 'moder':
  60.         moder_profil_start();
  61.         break;
  62.     case 'super_moder':
  63.         super_moder_profil_start();
  64.         break;
  65.     case 'admin':
  66.         admin_profil_start();
  67.         break;
  68.     case 'owner':
  69.         owner_profil_start();
  70.         break;
  71.     }
  72.     exit;
  73. }
  74. else {                              //пароль не верный
  75.     $message = 'пароль неверный';             //сообщение для страницы рестарта
  76.     restart_enter($message);                               //выдаем страницу рестарта
  77.     exit;
  78. }
  79. ?>
  80.  


жду критики, что где желательно изменить, убрать или добавить. сильно не зверствуйте и не угарайте, это вообще первое что я написал....
(Добавление)
вообще - работает так как ожидалось, но его наверное можно сократить немного...
 
 Top
Страниц (5): « 1 2 3 [4] 5 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB