RewriteEngine On # seteaza referer permis. Inlocuiti "marplo.net" cu numele domeniului site-ului dv. RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?marplo.net [NC] RewriteRule .(flv|mp4|ogg|mp3) / [NC,L] # Redirect URL la scriptul PHP, pt. fisierele cu extensia de mai sus RewriteRule ^(vi|au)_([^\.]+\.(flv|mp4|ogg|mp3))$ redirect_va.php?fn=$2&tp=$1 [NC,L] # Blocare acces extern la dirsuffix.txt <files dirsuffix.txt> order allow,deny deny from all </files>
<?php // Prevenire Hotlinking video /audio - marplo.net/php-mysql/ session_start(); $fstore = 'dirsuffix.txt'; // fisier de inregistrare: sufix^timestamp $base_dir_vi = 'video'; // nume de baza pt. directorul cu fisiere video $base_dir_au = 'audio'; // nume de baza pt. directorul cu fisiere audio // array with valori folosite pt. modificare nume director $suffix = array('xyz5', 'de18', 'ab85', 'ju7k', 'w2er', 'hws8', 'bnji', 'hgdmar'); // verifica daca sesiunea "getva" exista, si URL cu GET "fn" si "tp" (redirectionate din .htaccess) if(isset($_SESSION['getva']) && isset($_GET['fn']) && isset($_GET['tp'])) { // sterge tag-urile din datele GET, si preia numele si indiciul pt. tip fisier $_GET = array_map("strip_tags", $_GET); $fname = trim($_GET['fn']); $ftype = trim($_GET['tp']); // obtine baza pt. numele directorului, pt. video sau audio, in functie de $ftype $dir = ($ftype == 'vi') ? $base_dir_vi : $base_dir_au; // citeste fisierul TXT, separa sufixul si timestamp $ardata = file($fstore, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $pf_tm = explode('^', $ardata[0]); $sfx = $pf_tm[0]; // daca datele sunt mai vechi de 60 min, alege aleator un nou sufix ca sa formeze numele directorului if(($pf_tm[1] + 3600) < time()) { $isf = array_rand($suffix, 1); $sfx = $suffix[$isf]; if($sfx == $pf_tm[0]) $sfx = 'files'; // daca e acelasi sufix, seteaza 'files' // inregistreaza noul sufix^timestamp in fisierul TXT if(file_put_contents($fstore, $sfx.'^'.time())) { // verifica daca directoarele pt. video si audio exista, si le redenumeste if(is_dir($base_dir_vi.$pf_tm[0])){ rename($base_dir_vi.$pf_tm[0], $base_dir_vi.$sfx); } if(is_dir($base_dir_au.$pf_tm[0])){ rename($base_dir_au.$pf_tm[0], $base_dir_au.$sfx); } } } header('Location: '. $dir.$sfx. '/'. $fname); // redirect la fisierul solicitat } ?>
<video controls="controls"width="200" height="150"> <source src="vi_video_filename.mp4" type="video/mp4" /> <source src="vi_video_filename.ogg" type="video/ogg" /> Brovser-ul dv. nu recunoaste tag-ul video, <a href="vi_video_filename.mp4">Descarcati fisierul</a>. </video>
<audio controls="controls"> <source src="au_audio_filename.ogg" type="audio/ogg" /> <source src="au_audio_filename.mp3" type="audio/mp3" /> Brovser-ul dv. nu recunoaste tag-ul audio, <a href="au_audio_filename.mp3">Descarcati fisierul</a>. </audio>Aceste prefixe trebuie adaugate doar la numele fisierului in player, nu la fisiere pe server. Numele fisierului pe server va fi, de exemplu: "video_filename.mp4", fara "vi_".
Observati ca numele directorului nu e adaugat in player, astfel, utilizatorul nu poate vedea locatia fisierelor. .htaccess va face redirect la scriptul PHP ("redirect_va.php"), care va redirectiona catre locatia fisierului.
<?php // Prevenire Hotlinking video /audio - marplo.net/php-mysql/ $fstore = 'dirsuffix.txt'; // fisier de inregistrare: sufix^timestamp $base_dir_vi = 'video'; // nume de baza pt. directorul cu fisiere video $base_dir_au = 'audio'; // nume de baza pt. directorul cu fisiere audio // array with valori folosite pt. modificare nume director $suffix = array('xyz5', 'de18', 'ab85', 'ju7k', 'w2er', 'hws8', 'bnji', 'hgdmar'); // verifica daca exista URL cu GET "fn" si "tp" (redirectionate din .htaccess) if(isset($_GET['fn']) && isset($_GET['tp'])) { // sterge tag-urile din datele GET, si preia numele si indiciul pt. tip fisier $_GET = array_map("strip_tags", $_GET); $fname = trim($_GET['fn']); $ftype = trim($_GET['tp']); // obtine baza pt. numele directorului, pt. video sau audio, in functie de $ftype $dir = ($ftype == 'vi') ? $base_dir_vi : $base_dir_au; // citeste fisierul TXT, separa sufixul si timestamp $ardata = file($fstore, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $pf_tm = explode('^', $ardata[0]); $sfx = $pf_tm[0]; // daca datele sunt mai vechi de 60 min, alege aleator un nou sufix ca sa formeze numele directorului if(($pf_tm[1] + 3600) < time()) { $isf = array_rand($suffix, 1); $sfx = $suffix[$isf]; if($sfx == $pf_tm[0]) $sfx = 'files'; // daca e acelasi sufix, seteaza 'files' // inregistreaza noul sufix^timestamp in fisierul TXT if(file_put_contents($fstore, $sfx.'^'.time())) { // verifica daca directoarele pt. video si audio exista, si le redenumeste if(is_dir($base_dir_vi.$pf_tm[0])){ rename($base_dir_vi.$pf_tm[0], $base_dir_vi.$sfx); } if(is_dir($base_dir_au.$pf_tm[0])){ rename($base_dir_au.$pf_tm[0], $base_dir_au.$sfx); } } } header('Location: '. $dir.$sfx. '/'. $fname); // redirect la fisierul solicitat } ?>
<ul> <li>http://coursesweb.net/html/</li> <li>http://www.marplo.net/html/</li> </ul>
.some_class { display: list-item; }
var obj = { "courses": ["php", "javascript", "ajax"] }; var jsonstr = JSON.stringify(obj); alert(jsonstr); // {"courses":["php","javascript","ajax"]}
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>'; $dochtml = new DOMDocument(); $dochtml->loadHTML($strhtml); $elm = $dochtml->getElementById("dv1"); echo $elm->nodeValue; // CoursesWeb.net
I`m living here. - Traiesc /Locuiesc aici.
Estoy viviendo aquí. - Traiesc /Locuiesc aici.