Pagina 1 din 1

Permitere doar cod embed adaugat in textarea

Scris: Joi Aug 02, 2012
de steell
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?

Permitere doar cod embed adaugat in textarea

Scris: Sâm Aug 04, 2012
de MarPlo
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

*/
?>