ugrás a tartalomhoz

Szövegből kinyert link adatbázisba mentése

zöldfülü · 2019. Szep. 6. (P), 11.21
Sziasztok

A probléma amit meg kellett oldanom, egy szövegdobozban lévő szövegből kiolvasni a linket.

Erre találtam is megoldást, viszont a probléma, hogy az így kinyert linket, adatbázisba kellene raknom php-vel.

Jelenleg a kinyert linket megjeleníti az oldal egy tetszőleges részén.

Tehát ami van:
  1. <script type="text/javascript">  
  2.    function convert()  
  3.    {  
  4.   var text=document.getElementById("url").value;  
  5.   var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;  
  6.   var text1=text.replace(exp, "<a href='$1'>$1</a>");  
  7.   var exp2 =/(^|[^\/])(www\.[\S]+(\b|$))/gim;  
  8.   document.getElementById("converted_url").innerHTML=text1.replace(exp2, '$1<a target="_blank" href="http://$2">$2</a>');  
  9.    }  
  10.  </script>  
  1. <body onload="convert();" >  
  2.     
  3.   <h1>Convert URL Text Into Clickable HTML Link Using JavaScript</h1>  
  4.   <textarea id="url" Placeholder="Enter Some Text With Links">  
  5.   </textarea>  
  6.   <input type="button" value="Convert" onclick="convert();">  
  7.   
  8.   <p id="converted_url"></p>  
  9.   
  10.   <button onclick="myFunction()">Load new document</button>  
Amit szeretnék, hogy a szövegdobozból kinyert linket, adatbázisba tegye :
  1. <?  
  2. $link=link  
  3.   
  4. $query = "INSERT INTO linkek  
  5. (link)  
  6.   
  7. VALUES  
  8.   
  9. ('$link')";  
  10. mysqli_query($dbc$query);  
  11.   
  12. ?>  
Köszönöm a rávezetést vagy a segítséget!
 
1

Működik?

Pepita · 2019. Szep. 9. (H), 08.43
Így ránézésre a meglévő html + js nem működik abban az esetben, ha a felhasználó ír be valamit a textarea-ba, csak ha megnyomja a "Convert" gombot.
A convert fv-t az oldal betöltésekor futtatni felelsleges, mert akkor még üres a textarea is és a "converted_url" bekezdés is.
Egyébként biztos, hogy html kódot szeretnél kapni a textarea-ban? Biztos, hogy csak egyetlen url-t szeretnél benne megtalálni?

php:
- short tag használata nagyon nem javasolt.
- 2. sorban syntax error és (valószínűleg) undefined constant
- db insert: SOHA nem szórunk be valamit "csak úgy" adatbázisba, ami a felhasználótól jön. Akár php kód is jöhetne, aztán amikor ki szeretnéd írni, szépen lefut... Esetleg törli a teljes adatbázisodat. MINDIG escape-elni kell, ami usertől jön!
- Mivel csak url-eket vársz (gondolom egyesével, mert egyet keres a js), ezt célszerű a szerver oldalon is (php) ellenőrizni, hogy valóban url-e (szintén regexp). Ami kliens oldalon van, azt bármikor meghackeli egy ovis hacker.
- Várhatóan egy _POST metódusú adatbevitel lesz, tehát onnan kéne keresni, hogy jött-e és megfelelő adat
- Célszerű valamilyen választ is adni a kérésre, pl "vettem, beszúrtam az url-t" vs "hiba történt, nem szúrtam be", amit aztán a kliens oldalon (böngésző) meg is jelenítesz. Lássa a user, hogy történt valami, mert megnyomta a gombot.
- Célszerű json stringben válaszolni

js:
- meg kell tanítani, hogy a gomb megnyomásakor, az url kiszedése után, ha van találat, azt küldje el a szervernek, a fenti php szkriptet kell meghívnia pl egy ajax post kéréssel.
- a kérésre kapott választ (vagy annak függvényében valamit) meg kell jeleníteni a felületen.
- akár a kérés-válasz kezelésre, akár az eseményekre, kiíratásra lehet, hogy érdemes valamilyen js keretrendszert használni, pl jQuery.