Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RFpro.ru: Программирование на PHP


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

vladisslav
Статус: 5-й класс
Рейтинг: 1012
∙ повысить рейтинг »
Палян Александр Михайлович
Статус: 6-й класс
Рейтинг: 307
∙ повысить рейтинг »
Selax
Статус: 5-й класс
Рейтинг: 205
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / PHP

Номер выпуска:1179
Дата выхода:24.11.2009, 13:00
Администратор рассылки:Товарищ Бородин, Академик
Подписчиков / экспертов:632 / 190
Вопросов / ответов:1 / 2
IRC-канал по теме:#php

Вопрос № 174369: Здравствуйте, у меня вот кокая проблема хотела я сделать чтоб по айпи адресу определяла страну посетителя и нашла не большой пример, но почему-то не могу закачать в базу фаил ip-to-country.csv , саму статью нашла здесь (http://www....



Вопрос № 174369:

Здравствуйте, у меня вот кокая проблема хотела я сделать чтоб по айпи адресу определяла страну посетителя и нашла не большой пример, но почему-то не могу закачать в базу фаил ip-to-country.csv , саму статью нашла здесь (http://www.xakep.ru/post/28285/default.asp ) все пробую локально на denwer помогите пожалуйста, если можно то выполните у себя а мне скиньте sql фаил вот мой пример (

CREATE TABLE countries (
short character varying(2),
nshort character varying(3),
country_name character varying(50),
start_ip bigint,
stop_ip bigint
);



<?php
$db = mysql_connect ("localhost","user","pas");
mysql_select_db ("test",$db);

//Путь к CSV файлу
$csv="ip-to-country.csv";
$countrys=file($csv);
while (list(,$value)=each($countrys)) {
//Разборка строки для занесения в базу
if (preg_match('/" ([0-9]+)","([0-9]+)", "(\w+)","(\w+)","(.+)"/',$value,$match)) {
// Формируем и отправляем запрос к БД
pg_query ($conn, "INSERT INTO countries (start_ip, stop_ip, short, nshort, country_name) values (".$match[1].",".$match[2].",'".$match[3]."','".$match[4]."','".$match[5]."')");
}
}
echo ("OK!");
?> )

Отправлен: 19.11.2009, 12:46
Вопрос задал: Sergeva, Посетитель
Всего ответов: 2
Страница вопроса »


Отвечает PVS@Lviv, Профессионал :
Здравствуйте, Sergeva.
Ну раз MySQL, то надо окончательно подправить под него:

1)mysql_query, а не pg_query
2)специально для COTE D'IVOIRE и иже с ним апострофы надо бы экранировать

тоесть строчка дожна выглядеть как-то так
mysql_query ($conn, "INSERT INTO countries (start_ip, stop_ip, short, nshort, country_name) values (".$match[1].",".$match[2].",'".$match[3]."','".$match[4]."','".addslashes($match[5])."')");

Приложение:

Ответ отправил: PVS@Lviv, Профессионал
Ответ отправлен: 19.11.2009, 13:24

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 256689 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Волков Алексей aka Lupo, 5-й класс :
    Здравствуйте, Sergeva.

    В дополнение к предыдущему ответу скажу, что кроме замены в Вашем случае функции pg_query на функцию mysql_query и $conn на $db, в тексте "хакера" есть ещё одна ошибка: в регулярном выражении присутствует лишний пробел в строке
    if (preg_match('/"([0-9]+)","([0-9]+)", "(\w+)","(\w+)","(.+)"/',$value,$match)) {
    нужно
    if (preg_match('/"([0-9]+)","([0-9]+)","(\w+)","(\w+)","(.+)"/',$value,$match)) {

    к Вашей чести сказать, она не будет очевидна, пока не посмотришь сам файл ip-to-country.csv

    Исправлено по просьбе автора ответа
    -----
    ∙ Отредактировал: Зенченко Константин Николаевич, Модератор
    ∙ Дата редактирования: 19.11.2009, 16:10 (время московское)

    -----
    Всё, что есть хорошего в жизни - либо незаконно, либо аморально, либо ведёт к ожирению...

    Ответ отправил: Волков Алексей aka Lupo, 5-й класс
    Ответ отправлен: 19.11.2009, 15:50

    Оценка ответа: 5

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 256697 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.11 от 17.11.2009

    В избранное