Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подстоновка строки к строке полученной через $_POS, К строке в начало подставить текст 
:(
    Опции темы
TWoVKP
Дата 21.2.2010, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 29.4.2009

Репутация: нет
Всего: 1



Такая вот проблема, через форму получаю в скрипт обработчик - адрес сайта ($_POST), юзер может написать адрес сайта по разному, ну например:

http://www.test.com

или

https://www.test.com

или

www.test.com

или просто

test.com

ну вообшем надо проверить что именно ввёл юзер и если адрес введён таким образом: test.com, то надо впереди подставить - http://www. чтобы получился полный адрес сайта - http://www.test.com!

Как такое можно реализовать, может кто сталкивался!!! Желательно на примере  smile  smile  smile 

Буду очень благодарен за любую помошь!  smile 
PM MAIL   Вверх
TWoVKP
Дата 22.2.2010, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 29.4.2009

Репутация: нет
Всего: 1



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

Так решил задачу:

$web_site - переменная хранит адрес полученный их формы

Код

        //получить имя хоста из URL
    preg_match("/^(http:\/\/)?([^\/]+)/i",$web_site, $matches);
    $host = $matches[2];
    // получить два последних сегмента имени хоста
    preg_match("/[^\.\/]+\.[^\.\/]+$/",$host,$matches);
    $web_site = "http://www.".$matches[0]."\n";



Может кому пригодится!
PM MAIL   Вверх
TWoVKP
Дата 22.2.2010, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 29.4.2009

Репутация: нет
Всего: 1



Решение конечно не самое лучшее, вот если например юзер захочет мне послать ссылку на свой сайт уже сразу на страницу с контактной инфой (например www.test.ru/blcoks/contact.php), то всё равно попадаешь на индексную страницу а то есть на - http://www.test.ru


Подправте скрипт кто может, что бы было всё как надо, то есть в концовке ничего не обрезалось, а только в начале строки при отсутствие "http://www." подставлялось что нужно, ну например - http://www. или же только http:// если юзер уже ввёл www
PM MAIL   Вверх
Ипатьев
Дата 22.2.2010, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 1
Всего: 37



А почему бы просто не проверить, являются ли первые 7 символов строкой "http://"?

Это сообщение отредактировал(а) Ипатьев - 22.2.2010, 02:00
PM MAIL   Вверх
TWoVKP
Дата 22.2.2010, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 29.4.2009

Репутация: нет
Всего: 1



Ипатьев

Ну тогда уж надо проверять первые 11 символов, юзер же может ввести адрес и без www.
А какой функцией можно сделать проверку первых n символов???

А вообще вариант на мой взгляд не совсем лучший, допусти что юзер вводит адрес без всяких http://www., тогда по логике надо в начале просто подставить необходимый текст, в нашем случаии http://www., а что если юзер вместо этого внчале введёт какую-нибудь абракадабру например - kjhjjh.test.ru, скажем забыл переключить раскладку клавы, ну или спецом так сделал то тогда наша проверка обнаружит что вначале нету необходимых символов и просто спереди их подставит и мы в итоге получим адресс - http://www. kjhjjh.test.ru
PM MAIL   Вверх
skyboy
Дата 22.2.2010, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



Цитата(TWoVKP @  22.2.2010,  08:22 Найти цитируемый пост)
А какой функцией можно сделать проверку первых n символов???

substr
Цитата(TWoVKP @  22.2.2010,  08:22 Найти цитируемый пост)
а что если юзер вместо этого внчале введёт какую-нибудь абракадабру

а что, если "юзер введет" вообще не существующий адрес сайта? каким образом можно по введенному "fake.org" получить необходимый "test.com"?
PM MAIL   Вверх
TWoVKP
Дата 22.2.2010, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 29.4.2009

Репутация: нет
Всего: 1



skyboy

нет я в смысле что если вместо http://www. будет введён kjhjjh. то тогда вся проверка была скажем так не еффективной, то есть юзер хотел ввести http://www.test.ru а ввёл по ошибке kjhjjh.test.ru, тогда проверка проверит строку и не обнаружит таким http://www. и просто спереди подставит

Например мой вариант решения этой задачи справится с этим, и точно определит адресс, даже если было введено  kjhjjh.test.ru получу в итоге http://www.test.ru

Проблема ы моём решении заключается в том что, если вдруг юзер введёт адрес test.ru/contackts.php, скажем так чтобы я сразу мог посмотреть контактную инфу, то я в итого получу следующий адрес http://www.test.ru, то есть уже без ссылки на нужную страницу, а сразу на индексную

Это сообщение отредактировал(а) TWoVKP - 22.2.2010, 09:46
PM MAIL   Вверх
skyboy
Дата 22.2.2010, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



Цитата(TWoVKP @  22.2.2010,  08:40 Найти цитируемый пост)
даже если было введено  kjhjjh.test.ru получу в итоге http://www.test.ru

а если сайт как раз на поддомене и находится? получить вместо "somtesite.ucoz.net" сайт платформы "ucoz.net" - это то, что и ожидается? о_0 т.е. maps.google.com и google.com - одно и то же? неожиданно.
PM MAIL   Вверх
TWoVKP
Дата 22.2.2010, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 29.4.2009

Репутация: нет
Всего: 1



Решил проблему ещё проще, сначала проверяю полученный адрес до первой встречающейся точки в строке, будь то www. или http://www. или вообще будь там абракадабра и кладу результат в переменную, потом переменную проверяю совпадает ли она с www или http://www и если нет то просто подставляю в начало.

Вообшем вот пример:

Код

    $prob = strtok ($web_site, ".");
    echo $prob."<br/>";    
    if($prob != "www" && $prob != "http://www")
    {
        $web_site = "http://www.".$web_site;
        echo $web_site;
        echo "<br/>";
    }
    if($prob == "www")
    {
        $web_site = "http://".$web_site;
        echo $web_site;
        echo "<br/>";
    }


Считаю что тема исчерпана!!!

Добавлено @ 11:23
skyboy

А как с этим примером??? Так покатит???
И рефссылка остаётся неизменной!!!


Хотелось бы критику услышать на на этот способ решения!


Это сообщение отредактировал(а) TWoVKP - 22.2.2010, 11:24
PM MAIL   Вверх
Ипатьев
Дата 22.2.2010, 13:34 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 1
Всего: 37



не понимаю, зачем насильно подставлять www
PM MAIL   Вверх
IgorIV
Дата 22.2.2010, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: нет
Всего: 8



PM MAIL   Вверх
TWoVKP
Дата 22.2.2010, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 29.4.2009

Репутация: нет
Всего: 1



Ипатьев 

Да я могу коротко объяснить, вот например юзер послал мне письмо и ввёл мне свой адрес сайта через форму, письма я получаю пргогой The BAT, всем наверное известная, ну так вот если адрес сайта присылается как test.ru, без всяких www или http:// то прога выдаёт ошибку и даже браузер не стартует, а вот если пришло как http://www.test.ru то всё пучком, вот только и для этого я и старался. Не знаю на счёт других почтовых клиентов, но с The BAT v.4.1.11 такая вот история.

Просто хотел чтобы уж если письмо приходило и я его открывал с этой прогой - то чтобы уж всё пучком работало!

Вот в принципе и весь смысл!

Добавлено через 2 минуты и 55 секунд
IgorIV 

ХМ..., интересно, об этом и не подумал, придётся кое-что подправить

Спасибо за подсказку smile 
PM MAIL   Вверх
Ипатьев
Дата 22.2.2010, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 1
Всего: 37



Вы очень невнимательны.
Прочтите мое сообщение, на которое вы потрудились ответить, еще раз.
Подсказка: про http:// там ничего нет. там написано другое слово
PM MAIL   Вверх
TWoVKP
Дата 22.2.2010, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 29.4.2009

Репутация: нет
Всего: 1



Ипатьев 


Да внимательный я, заметил что речб ведётся о www а не о http://
ну просто как то хочется чтобы уже было всё в идеале!
PM MAIL   Вверх
Ипатьев
Дата 22.2.2010, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 1
Всего: 37



Для того, чтобы сделать идеально, надо понимать, что такое идеал.
А если познания в предмете не очень велики, стремление к идеалу приведет к прямо противоположным результатам
Что мы наглядно можем наблюдать в данном топике smile
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0584 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.