Вставить символы в начало и конец строки

Тема в разделе "PHP", создана пользователем phillip, 20 май 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    Подскажите, пожалуйста, как в начало строки поставить http:// а в конец строки просто слеш /. То есть я в форму ввожу урл. Мне его в бд надо записать в таком виде http://mydomen.ru/ Вот. а если юзер ввел просто www.mydomen.ru- мне надо его привести в нужный вид. Не могу понять как ставить символы в начало и конец строки. не нашел такой функции на php.su
     
  2. SaidAuita

    SaidAuita Создатель

    Регистр.:
    5 май 2009
    Сообщения:
    14
    Симпатии:
    8
    $a="http://".$a."/";
     
    phillip нравится это.
  3. upandhigh

    upandhigh

    Регистр.:
    11 фев 2009
    Сообщения:
    235
    Симпатии:
    89
    только не забывай экранировать ввод в БД, хотябы так:

    PHP:
    $a=mysql_escape_string("http://".$a."/"); 

    иначе прямиком получишь SQL Injection у себя на сайте
     
    phillip нравится это.
  4. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    про инъекцию не совсем понял, почему небезопасно? а если это скрипт у меня на моем компе, которому я уверен 100% никто не будет делать гадостей?

    И вот про совет SaidAuita я понял, все гениальное просто))) а если он уже ввел со слешем и впереди стоит http://, как проверить? чтоб два раза не воткнуть по ошибке
     
  5. wwwitalya

    wwwitalya Создатель

    Регистр.:
    4 май 2009
    Сообщения:
    45
    Симпатии:
    18
    PHP:
    if (!preg_match('!^http://!i'$a)) $a="http://{$a}/";
     
    phillip нравится это.
  6. upandhigh

    upandhigh

    Регистр.:
    11 фев 2009
    Сообщения:
    235
    Симпатии:
    89
    PHP:
    # если не начинается с хттп добавляем
    if (!preg_match('^~https?://~i'$a))  $a 'http://'.$a;

    # если не кончается слэшем то добавляем
    if (!preg_match('~/$~'$a)) $a $a '/';
    насчет уязвимости и дома, а кто домены вводить будет? если ты сам то опасности нету - если не ты, то человек может послать СКУЛ запрос к твоей базе данных, и вытянуть всю инфу из нее, записать файлы или украсть файлы с твоего винта где находится база - все зависит от прав пользователя и изначального запроса, поэтому данные нужно экранировать
     
    phillip нравится это.
  7. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    А, ну вводить буду только я, и пользоваться всей системой только я. Всем спасибо за помощь :)

    А вот еще какая ошибка выскакивает почему-то теперь
    Warning: preg_match() [function.preg-match]: No ending delimiter '^' found
     
  8. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    PHP:
    if (!preg_match('~^https?://~i'$a))  $a 'http://'.$a;
     
  9. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    И? хоть бы объяснил, а то скопировал две чужие фразы и все.
     
  10. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Забудь про preg_match, эта функция не нужна для твоей задачи - достаточно strpos().
     
Статус темы:
Закрыта.