![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 176 Pomógł: 0 Dołączył: 27.06.2002 Skąd: Stalowa Wola Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Ponizej mam funkcje, przez ktora przepuszczam wszytkie dane z formularzy TEXTAREA. Najwazniejsze w nije ejst to ze kroi dlugie wyrazy (powyzej 50 znakow). I tutaj jest duzy problem, z czescia mojej funkcji, gdzie jest wykrywany i tworzony LINK. Mianowice jak link jest dluzszy niz te 50 znakow to niestety ale adres strony (LINK) bedzie uciety - a dokladnie po 50 znakach ebdzie wstawiona spacja. Jak sobei z tym oradzic aby linki nie byly obcinane, a reszta slow byla przycinana do dlugosci 50 znakow (przycinana czyli po 50 znakach bedzie postawiona SPACJA a po niej oczywcie ebdzi dlasza czesc slowa). ? Z gory dzieki za pomoc.
-------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
W takim przypadku trzeba użyć wyrażeń regularnych do wstawiania spacji:
Jeśli chcesz, żeby najdłuższe słowo mogło mieć 50 znaków, to zamień 20 w funkcji wordwrap oraz 21 w wyrażeniu regularnym na odpowiednio 50 i 51. PS1. Zamień sobie "ht_tp" na "http", bo forum rozwalało mi kod. PS2. Jeśli chcesz w ten sposób przetworzony tekst wyświetlić na ekranie, to nie używaj addslashes" title="Zobacz w manualu PHP" target="_manual. A jeśli powędruje on do bazy danych, to takie użycie addslashes" title="Zobacz w manualu PHP" target="_manual jakie można znaleźć w twoim kodzie stwarza zagrożenie atakiem SQL Injection. Ten post edytował Kicok 24.02.2008, 22:14:44 -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
1. Kicok co do użycia addslashes() - przecież linijkę wyżej jest strip_tags() - wiec dlaczego miałoby być niebezpieczne ? jeżeli dane lecą do bazy to jest jak najbardziej wskazane, byle nie zapomnieć o stripslashes() przy odczycie.
2. stal-sw co do strip_tags() -ja bym wywołał: strip_tags($txt, '<a>'); - i niepotrzebne byłoby potem mozolne odbudowywanie linków za pomocą przeg_replace()... 3. dzięki zaoszczędzeniu dwóch linijek z preg_replace() można teraz rozwiązać problem niepotrzebnych spacji nie pogarszając wydajności funkcji... zgodnie z propozycją Kicoka. Ten post edytował nevt 24.02.2008, 22:43:37 -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Cytat 1. Kicok co do użycia addslashes() - przecież linijkę wyżej jest strip_tags() - wiec dlaczego miałoby być niebezpieczne ? jeżeli dane lecą do bazy to jest jak najbardziej wskazane, byle nie zapomnieć o stripslashes() przy odczycie. Dlatego jest niebezpieczne, że jak napiszę `49 znaków i apostrof`, to addslashes zamieni mi to na `49 znaków, backslash, apostrof`. Później wordwrap wstawi spację po 50-tym znaku (czyli po backslash'u) i już mam niewyescape'owanego apostrofa ;] addslashes umieszczone po wordwrap powinno być OK ;] Ten post edytował Kicok 25.02.2008, 06:20:39 -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 176 Pomógł: 0 Dołączył: 27.06.2002 Skąd: Stalowa Wola Ostrzeżenie: (0%) ![]() ![]() |
Witam.
No prawie dziala. Kicok - w towim kodzik jest taki problem. Np. wpisuje w formularzu: " jakis tekscik xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxx www.abcz.pl www.xyz.net " A niestety po przejsciu prze twoje funkcyjki kod wyglada tak: "
Te BRy to oczywisce Entery wcisniete podczas wypelniania formularza. Masz moze pomysl jak zmodyfikowac ten kod aby dzialal poprawnie ? Z gory dzieki za pomoc -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Zamień ([^?]+) na ([^\\s?]+), bo gdzieś mi to wcieło ;]
-------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 01:09 |