Endijs Posted February 16, 2009 Report Share Posted February 16, 2009 Ja es gribu lietotājam dot iespēju pievienot YouTube video ar embedošanas kodu, piemēram: <object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/yyyyyyyyyy"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/yyyyyyyyyy" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object> kā to izdarīt droši? T.i. - kā pārbaudīt ka tur ir tikai tas kas vajadzīgs un ka nav kaut kādi neveselīgi skripti (nelabi ceļi) ielikti? Idejas? Varbūt kaut kā citādi YouTube video ievietošanu realizēt? Jāatcerās, ka video varēs likt jebkurš - tātad lietotājam noteikti nedrīkst ticēt un paļauties, ka viņš ievadīs tikai labas lietas. Quote Link to comment Share on other sites More sharing options...
Klez Posted February 16, 2009 Report Share Posted February 16, 2009 es domaaju ka jaanjem regulaaraas izteiksmes un jaatljauj dazhi tagi (object,param,embed) un attieciigi katram tagadm atljautās vērtības a vēl var paskatīties kādam open source projektam .... phpbb,e107 ..... Quote Link to comment Share on other sites More sharing options...
koko Posted February 16, 2009 Report Share Posted February 16, 2009 Būtībā visizdevīgāk ir taisīt ar pregmaču. Es uztaisīju tā (te būs gan vimeo, gan youtube): <?php $pattern = array( '/<object\s+width="(\d+)" height="(\d+)".+(http:\/\/www\.youtube\.com\/v\/([A-Za-z0-9\-_&]+)).+<\/object>/s', '/<object\s+width="(\d+)" height="(\d+)".+(http:\/\/vimeo\.com\/moogaloop\.swf\?([A-Za-z0-9\-_&;=\.]+)).+<\/object>.*/' ); function validate_embed($code, $patternArr) { $code = html_entity_decode($code); if (is_array($patternArr)) { foreach($patternArr as $pattern) { if(preg_match($pattern, $code, $vars)) { $data = serialize($vars); break; } } return isset($data) ? $data : FALSE; } echo "kaut kas ne tā"; return FALSE; } ?> Kad izmanto funkciju, atdod atpakaļ serializētu masīvu, kuru var grūst iekš db. Lai tiktu pie datiem, vajag izmantot <?php $dati = unserialize($dati); ?> Video ielikšana pēc tam ir vienkārša, izmantojot jQuery + flashembed (http://flowplayer.org/tools/flashembed.html) ar sekojošu kodu $(document).ready(function(){ $("#flashembed").flashembed({ src: <?=$dati[3]?>, width: <?=$dati[1]?>, height: <?=$dati[2]?> }); }); #flashembed ir jebkurš html konteineris src, width un height tiek padoti no augšā iegūtajiem. Nu kaut kā tā... Lūdzu! No alus neatteikšos :D Quote Link to comment Share on other sites More sharing options...
bubu Posted February 16, 2009 Report Share Posted February 16, 2009 koko, a man tavs kods gadījumā neļaus ielikt ko šādu tavā lapā? <object width="425" height="344"><param name="movie" value="http://evilsite.com/evil_flash_code"></param><param name="dummy" value="http://www.youtube.com/v/yyyyyyyyyy"></param>...<embed src="http://evilsite.com/evil_flash_code" ...></embed></object> Quote Link to comment Share on other sites More sharing options...
koko Posted February 16, 2009 Report Share Posted February 16, 2009 koko, a man tavs kods gadījumā neļaus ielikt ko šādu tavā lapā? <object width="425" height="344"><param name="movie" value="http://evilsite.com/evil_flash_code"></param><param name="dummy" value="http://www.youtube.com/v/yyyyyyyyyy"></param>...<embed src="http://evilsite.com/evil_flash_code" ...></embed></object> bubu, manā lapā nē, jo es noklusēju by default nonesu nost pirmo mainīgo ar unset($vars[0]) . Man beigās paliek pliki mainīgie, kas vairāk kā youtube neņem.. Ja tomēr ir kāda iespēja, ka var paņemt mani priekšā, tad dalies pārdomās! Quote Link to comment Share on other sites More sharing options...
Endijs Posted February 16, 2009 Author Report Share Posted February 16, 2009 koko - paldies! Pamēģināšu izmantot, ja viss zolīdi strādās - alus no manis (pudele, nevis kauss Vecrīgā :P ) :) Quote Link to comment Share on other sites More sharing options...
marcis Posted February 16, 2009 Report Share Posted February 16, 2009 Es gan darīju tā, ka liku lietotājam norādīt saiti uz video, nevis embed kodu, tb http://www.youtube.com/watch?v=x un izvadi saformatēju pats (šobrīd gan ir savādāk, jo, šķiet, ka plejerim vairs nav viens konstants izmērs). Ja iedotais links aizved uz nevalidu video, tad notiks tikai tas, ka youtube plejeris sāks bļaut, ka video neeksistē. Protams, pie ievades var pārbaudīt vai konkrētais links ir derīgs (video eksistē), kaut vai file_get_contents($vide_url) + preg_match(). Pieļauju domu, ka youtube api arī ir iespēja validēt video id. Quote Link to comment Share on other sites More sharing options...
bubu Posted February 16, 2009 Report Share Posted February 16, 2009 koko: ok, sapratu. Quote Link to comment Share on other sites More sharing options...
marrtins Posted February 16, 2009 Report Share Posted February 16, 2009 Kāpē jāļauj pievienot viss tas penteris? Ļauj pievienot tikai linku (http://www.youtube.com/watch?v=yyyyyyyyyy), un pēcāk to attiecīgi apstrādā. Quote Link to comment Share on other sites More sharing options...
koko Posted February 16, 2009 Report Share Posted February 16, 2009 (edited) Kāpē jāļauj pievienot viss tas penteris? Ļauj pievienot tikai linku (http://www.youtube.com/watch?v=yyyyyyyyyy), un pēcāk to attiecīgi apstrādā. A lai cilvēkam būtu mānīgs iespaids, ka viņš kaut ko var kontrolēt :D. Kā arī, lai noskaidrotu filmas izmēra parametrus. Edited February 16, 2009 by koko Quote Link to comment Share on other sites More sharing options...
LoyC Posted February 18, 2009 Report Share Posted February 18, 2009 (edited) Man atkal ir šāds variants. $links = substr($_POST['embedkods'], 85, 11); Šādi dabū tikai video id un tad lai izvadiitu noteiktaa embed kodaa atliek tik ielikt id. Video izmērs nemainīgs. <param name='movie' value='http://www.youtube.com/v/".$klips->links."&hl=en&fs=1'> Edited February 18, 2009 by LoyC Quote Link to comment Share on other sites More sharing options...
Klez Posted February 18, 2009 Report Share Posted February 18, 2009 var tak ļaut cilvēkam ielikt tikai linku un tad embed kodu panjemt no video lapas koda ... metacafe, yotube .... un nav probleemu :) Quote Link to comment Share on other sites More sharing options...
Kaklz Posted February 18, 2009 Report Share Posted February 18, 2009 Man atkal ir šāds variants. $links = substr($_POST['embedkods'], 85, 11); Šādi dabū tikai video id un tad lai izvadiitu noteiktaa embed kodaa atliek tik ielikt id. Video izmērs nemainīgs. <param name='movie' value='http://www.youtube.com/v/".$klips->links."&hl=en&fs=1'> un kas notiks gadījumā ja tev tajā $_POST['embedkods'] sākot no 85. simbola būs kaut kas šitāds? '><b>kaka< labi, 11 simboli nav daudz, bet tas vienalga ir CAURUMS :) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.