Nervt es, dass sich jeder eure tollen Javascript-Funktionen einfach runterladen kann? Habt ihr gerade ein neues Layout gebaut, das endlich komplett ohne Markup auskommt und wollt ein Patent anmelden? Vielleicht ist hier eine kleine Möglichkeit Quellcode Dieben zumindest ein wenig die Tour zu vermasseln.
Wie habt ihr eure Script-Bibliotheken ins HTML eingebunden?
<script src="http://www.phpblogger.net/js/a.js"></script> <script src="http://www.phpblogger.net/js/b.js"></script> <script src="http://www.phpblogger.net/js/c.js"></script> <script src="http://www.phpblogger.net/js/d.js"></script> ...
Also wie kann die Situation verbessert werden? Dafür habe ich mir ein wenig mit Hilfe von mod_rewrite und $_SESSION-Variablen eine kleine Umgebung geschaffen, die all das da oben ersetzen kann. Für jede Library, ob JS oder CSS setze ich in meinem Programm-Code in bsp. $_SESSION[’jsLibs’][] = ‘a.js’. In meinem Quellcode habe ich nur noch folgenden Aufruf:
<script src="http://www.phpblogger.net/js/common.js"></script>
Und in meiner .htaccess habe ich
RewriteRule (.*)common.js$ /libraryLoader.php [L]
Der Code sieht dann etwa so aus:
header('Content-Type: application/x-javascript');
foreach($_SESSION['jsLibs'] as $v) {
if(file_exists($euerScriptDir . $v)) $content .= file_get_contents($euerScriptDir . $v);
}
//Das Beste ist ihr könnt den JS-Code dynamisch verändern
//Ich benutze das z.B. um meine Sprach-Variablen zu setzen
$content = str_replace('abc', 'def', $content);
echo $content;
//Und das Wichtigste
$_SESSION['jsLibs'] = array();
Das Interessante ist jetzt die letzte Zeile. Dadurch, dass nach dem erstmaligen Laden der Bibliotheken das Array geleert wird, bekommt die Seite den richtigen JS-Code, aber wenn man das .js manuell aufruft, ist die Variable leer und man bekommt ein leeres Dokument zurückgeliefert. Das Ganze passiert sogar bei ausgeschaltetem Javascript. Auch dann bleibt die Seite leer. Da soll mal noch jemand versuchen meine schönen Implementierungen zu kopieren (was natürlich trotzdem geht, aber ich muss ja nicht gleich verraten wie, oder?)


















