Zmiana url w div

0

Witam serdecznie,

jest to mój pierwszy post, a jestem kompletnym laikiem jeśli chodzi o php, a niestety tylko tym językiem można rozwiązać mój problem.
Otóż mam taki problem.

Mam na stronie <div id="tekst_uzytkownika> w którym wyświetlają się treści wpisane przez użytkownika, jednak chciałabym sprawić żeby nie mogły tam być żadne linki. Wydaje mi się że najprościej byłoby za pomocą php ustawić żeby każde <a href> w #tekst użytkownika było zamieniane na przykład na tekst "p" lub ewentualnie na jakiś z góry domyślny tekst.
Szukałam od rana w internecie jak to zrobić, ale nie znalazłam żadnego zadowalającego mnie rozwiązania.

Czy ma ktoś jakiś pomysł jak to zrobić?

0

jest to mój pierwszy post (...) chodzi o php, a niestety tylko tym językiem można rozwiązać mój problem.

No patrzcie, pierwszy post i kłamie nas na dzień dobry :p to można wykonać w każdym albo prawie każdym popularnym języku

Najlepiej to nie zezwalaj na ŻADEN html od użytkownika, bo potencjalnych źródeł ataku jest tyle, że tego nie ogarniesz, SZCZEGÓLNIE będąc laikiem. Nawet Youtube miało MEGA GROŹNĄ dziurę XSS swego czasu, dlatego uważaj z htmlem.

Jeżeli potrzebujesz formatowania to skorzystaj z parserów bbcode/markdown. Jeżeli nie potrzebujesz formatowania to wyświetlaną treść przepuść pierwsze przez htmlspecialchars (poczytaj dokumentację przed użyciem).

0

Dziękuje za odpowiedź. Znalazłam taki kod

<?php      
function replaceLinks($text)  {   

    $regex = '/'
      . '(?<!\S)'
      . '(((ftp|https?)?:?)\/\/|www\.)'
      . '(\S+?)'
      . '(?=$|\s|[,]|\.\W|\.$)'
      . '/m';

    return preg_replace_callback($regex, function($match)
    {
        return '<a'
          . ' target=""'
          . ' rel="nofollow"'
          . ' href="' . $match[0] . '">'
          . $match[0]
          . '</a>';
    }, $text);
}


?> 

Jak jednak zrobić żeby działał on tylko dla jednego div id?

0

Coś motasz tutaj. Najlepiej będzie jak powiesz co masz i co chcesz osiągnąć a inni podpowiedzą ci jak to zrobić by było optymalnie. Chodzi o to byś nakreślił gdzie masz taką sytuację. Czy w wstawianiu komentarzy pod artykułem czy gdzie?

Tak upraszczając to divy wykrywasz javascript'em a przesłaną już treść przetwarzasz php'em

0
Agnes12 napisał(a):

Dziękuje za odpowiedź. Znalazłam taki kod

<?php      
function replaceLinks($text)  {   

    $regex = '/'
      . '(?<!\S)'
      . '(((ftp|https?)?:?)\/\/|www\.)'
      . '(\S+?)'
      . '(?=$|\s|[,]|\.\W|\.$)'
      . '/m';

    return preg_replace_callback($regex, function($match)
    {
        return '<a'
          . ' target=""'
          . ' rel="nofollow"'
          . ' href="' . $match[0] . '">'
          . $match[0]
          . '</a>';
    }, $text);
}


?> 

Jak jednak zrobić żeby działał on tylko dla jednego div id?

Generalnie tekst z tego diva jest submitowany (pewnie masz jakiś przycisk) i leci sobie do servera, gdzie w php coś się dalej z nim dzieje (np. zapisywany jest do bazy do odpowiedniej kolumny, gdzieś wysyłany do kogoś na maila czy coś) W międzyczasie coś możesz sobie z nim zrobić, możesz go dowolnie sformatować czy ocenzurować;p np podpinając gdzieś powyższą funkcję (nie znamy tego kodu to ciężko powiedzieć gdzie).

Jeśli nie umiesz grzebać w tym phpie (bo mniemam że musisz coś w czyimś kodzie poprawić) to zawsze możesz dorobić jakiegoś js'a, który wytnie Ci linki przy submicie. button.on(click, #tekstUzytkownika.val() regex match itp.

1 użytkowników online, w tym zalogowanych: 0, gości: 1