Permitere doar cod embed adaugat in textarea

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
steell
Mesaje:190

Permitere doar cod embed adaugat in textarea

Salut marplo.
Am facut un formular cu un textarea in care se poate adauga un embed dinacelea de la youtube sau alte siteuri, apoi codul php ia valoarea acelui textarea si o scrie intr-o pagina.
Problema este ca in locul acelui embed poti pune orice cod html sau php si astfel cineva poate face rau siteului. cum pot sa permit doar adaugarea unui cod embed si nu a altor scripturi?

MarPlo Mesaje:4343
Salut
In principiu, in scriptul PHP trebuie filtrata valoarea primita de la textarea. Se poate cu functia preg_match() si o expresie regulata ( RegExp ) care sa corespunda cu codul HTML pt. embed.
Despre functia preg_match() gasesti pe site-ul php.net .
Partea mai grea e sa creezi expresia regulata pt. embed, asta depinde de forma acelui cod, si trebuie sa stii despre lucrul cu RegExp.

Daca vrei doar sa permiti anumite tag-uri in textarea, cum ar fi <embed>, <object>, iar restul sa fie sterse, o varianta mai simpla e sa filtrezi datele cu functia strip_tags(); aceasta sterge tag-urile, dar lasa textul din ele.
Exemplu:

Cod: Selectaţi tot

<?php
// cod preluat din textarea
$textarea = '<script>
cod script
</script>
<object width="580" height="400">
<param name="movie" value="fisier.swf">
<embed src="fisier.swf" width="580" height="400">
</embed>
</object> alt text, <h1>H1</h1>';

// permite doar tag-urile: <object>, <param> si <embed>
$textarea = strip_tags($textarea, '<object><param><embed>');
echo $textarea;

/* Rezulta codul HTML:

cod script
<object width="580" height="400">
<param name="movie" value="fisier.swf">
<embed src="fisier.swf" width="580" height="400">
</embed>
</object> alt text, H1

*/
?>