Vuoi mantenere il tuo SWF esclusivo nel tuo sito? In questo suggerimento rapido, vedremo come utilizzare un "blocco del sito" per impedire alle persone di scaricare il tuo SWF e di inserirlo in un altro sito web.
Ecco il file in esecuzione su un dominio errato:
Costruiremo un display animato da attivare quando il SWF è nel dominio sbagliato, come nell'esempio sopra. Dicendo che, se vuoi solo conoscere il codice di blocco del sito, vai al passaggio 5.
Prima di iniziare a scrivere codice e aggiungere disegni allo stage, devi prima ottenere Tweener. Per questo progetto ho usato l'open source, che può essere utilizzato per progetti aperti e commerciali. Caurina tweener è disponibile su code.google.com.
Dopo aver scaricato Tweener, è sufficiente copiarlo e incollarlo nella cartella del progetto. Ricorda, la cartella deve essere nominata caurina
, all'interno della cartella ci deve essere una cartella chiamata transizioni e al suo interno un carico di file .as di classe Flash.
Con il primo passo, possiamo andare avanti con la codifica e la progettazione del file.
La dimensione del file è irrilevante. La proprietà del lock del dominio è bloccare il tuo SWF, o componente, nel caso qualcuno lo abbia scaricato da te senza la tua autorizzazione.
Per questo esempio, ho usato una dimensione dello stage di 540 x 400, puoi usare qualsiasi dimensione tu voglia.
Dopo aver selezionato la dimensione del file, crea 3 nuovi livelli come nell'immagine qui sotto. Mantenere sempre il livello delle azioni vuoto. Le fasi organizzate sono molto più facili da lavorare e da capire.
Dopo aver creato i 3 livelli, crea 2 nuovi semplici Movie Clip. Posizionali dove vuoi, qualsiasi dimensione desideri. Diciamo che l'altezza di 40 pixel per 10 pixel, senza tratti. Il posizionamento non è importante, perché in seguito inseriremo questi filmati con actionscript.
Ora, arriva l'aspetto più importante di questi Movie Clip, il punto di registrazione. Guarda le immagini qui sotto, quando converti le tue immagini bitmap in clip mobili, ricorda di fare quanto segue altrimenti il file non funzionerà al suo pieno potenziale:
E, naturalmente, i nomi delle istanze:
Congratulazioni! Hai aggiunto le caselle che chiuderanno la pagina, nel caso in cui il dominio sia sbagliato. Ora, aggiungi una casella di testo dinamica al centro del palco o ovunque tu voglia che sia. Questa casella di testo informerà l'utente che ha scaricato il file illegalmente che il file è protetto dallo script ... Dagli un nome di istanza di warning_txt
Ora, una volta creati i Movie Clip e la casella di testo, sei pronto per il codice. Sul livello delle azioni bloccate, premi F9 e aggiungi il seguente codice:
import flash.events. *; import flash.display.LoaderInfo; import flash.display.MovieClip; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.net.URLVariables; import caurina.transitions.Tweener
flash.events. *;
carica tutti gli eventi di cui probabilmente avremo bisogno.flash.display.LoaderInfo;
riporta tutte le informazioni che dobbiamo caricare e che verranno caricate con il file.flash.flash.display.MovieClip;
carica tutti gli eventi che incontreremo durante l'utilizzo di Movie Clip.import caurina.transitions.Tweener;
carica il nostro motore di interpolazione e l'animazione delle barre di blocco dei contenuti.Il resto degli eventi caricati sono necessari in modo che Flash possa accedere all'URL della pagina nella barra.
var url: String = stage.loaderInfo.url;
Supponiamo che l'SWF sia caricato sulla pagina http://www.domainName.com/siteFolder/sitePage.html. La riga 9 recupera questo URL e lo assegna alla stringa chiamata url
.
Ora che Flash sa da dove ottenere l'URL, è il momento di confrontarlo con l'URL del nostro sito web e agire se corrispondono o no
function pageDomainCheckInit (event: Event): void if (url! = "http://www.domainName.com/siteFolder/sitePage.html") warning_txt.text = "Questo file è in esecuzione sull'URL errato. Limitato!"; closeBoxTop.x = 0 closeBoxTop.visible = true; closeBoxTop.height = stage.stageHeight / 2 Tweener.addTween (closeBoxTop, width: stage.stageWidth, alpha: 0.8, time: 1, transition: "easeInOutExpo"); closeBoxBottom.x = stage.stageWidth closeBoxBottom.visible = true; closeBoxBottom.height = stage.stageHeight / 2 Tweener.addTween (closeBoxBottom, width: stage.stageWidth, time: 1, alpha: 0.8, transition: "easeInOutExpo"); else warning_txt.text = ""; closeBoxTop.visible = false; closeBoxBottom.visible = false; stage.removeEventListener (Event.ENTER_FRAME, pageDomainCheckInit); stage.addEventListener (Event.ENTER_FRAME, pageDomainCheckInit);
Abbiamo utilizzato un listener di eventi per avviare il check-up della stringa di URL rilevata in precedenza. Ciò che sostanzialmente fa, è dire a flash che se la stringa che si trova nella barra di navigazione (o l'URL su cui è ospitata la pagina) non è quella giusta, allora la pagina eseguirà lo script di blocco del contenuto e avviserà l'utente che il dominio non è corretto. Altrimenti, se la pagina è posizionata correttamente, le caselle che chiudono la pagina non verranno mostrate, né il testo di avviso.
Una volta completata questa sezione, rimuoviamo il listener di eventi in modo che il file non mangi le risorse controllando, ricontrollando e ricontriando più e più volte. Una volta che la stringa è stata tirata con successo, confrontata e lo script è stato eseguito correttamente, il file pageDomainCheckInit
evento è rimosso.
if (url! = "http://www.domainName.com/siteFolder/sitePage.html")
Questa sezione del codice è fondamentalmente un "SE NON", quindi se la pagina non lo è http://www.domainName.com/siteFolder/sitePage.html
Flash inizierà l'esecuzione di funzioni al di sotto dell'IF, ma in caso contrario, se il file SWF si trova sulla pagina corretta, Flash rimuoverà i blocchi dallo stage e manterrà tutto pulito e in ordine. Non saprai mai che è lì.
Ora, vediamo cosa succede, quando il file non è nel dominio giusto.
warning_txt.text = "Questo file è in esecuzione sulla pagina sbagliata. Accesso contenuto limitato!"; closeBoxTop.x = 0 closeBoxTop.visible = true; closeBoxTop.height = stage.stageHeight / 2 Tweener.addTween (closeBoxTop, width: stage.stageWidth, alpha: 0.8, time: 1, transition: "easeInOutExpo"); closeBoxBottom.x = stage.stageWidth closeBoxBottom.visible = true; closeBoxBottom.height = stage.stageHeight / 2 Tweener.addTween (closeBoxBottom, width: stage.stageWidth, time: 1, alpha: 0.8, transition: "easeInOutExpo");
Il codice che vedi qui, posiziona le closeBoxes all'inizio della fase e alla fine della fase (closeBoxTop = 0, closeBoxBotton = stage.stageWidth
) e li rende invisibili (closeBoxTop.visible = false, closeBoxBottom.visible = false
) questo li nasconde dal palco, li tiene lontani dalla vista e non influenza l'aspetto del sito. Tuttavia, sono lì.
Se la pagina, o il componente è installato su un diverso sito / nome di dominio che non era originariamente destinato a essere attivo, diventano visibili. Si espandono attraverso lo schermo, coprendolo completamente e avvisando l'utente che il contenuto viene rubato o meno dove dovrebbe essere.
Questa misura non solo informa l'utente generale che il file non è dove dovrebbe essere, ma blocca anche qualsiasi contenuto dalla visualizzazione.
Cosa succede se vogliamo solo verificare se il file SWF è caricato su un dominio specifico?
Quindi, invece di controllare se il SWF è a http://www.domainName.com/siteFolder/sitePage.html
, controlliamo solo se è da qualche parte sul domainName.com
sito web. Quindi potrebbe essere a https://private.domainName.com/secure/secret.html
e ancora funziona.
Possiamo ottenere questo modificando il codice che ottiene l'URL, in questo modo:
var url: String = stage.loaderInfo.url; // questa linea era qui prima! var urlBeginning: int = url.indexOf (": //") + 3; var urlTermination: int = url.indexOf ("/", urlBeginning); var pageDomain: String = url.substring (urlBeginning, urlTermination); var lastDot: int = pageDomain.lastIndexOf (".") - 1; var CharacterAfterDomain: int = pageDomain.lastIndexOf (".", lastDot) + 1; pageDomain = pageDomain.substring (CharacterAfterDomain, pageDomain.length);
Supponiamo che l'SWF sia caricato sulla pagina http://www.domainName.com/siteFolder/sitePage.html. La riga 9 recupera questo URL e lo assegna alla stringa chiamata url
. Questa è la stessa linea che avevamo prima.
La riga 10 del codice recupera la posizione all'interno dell'URL del file : //
La riga 11 del codice recupera il primo /
che appare nell'URL dopo il : //
. Questo è davvero molto importante perché tra questi è possibile trovare il tuo vero nome di dominio.
La riga 12 di codice, sta solo creando la connessione all'interno di Flash di cosa c'è tra: // e il primo / ottenendo il nome di dominio String pronto per il controllo nel passaggio successivo. A questo punto, con il nostro esempio, pageDomain
è stato impostato su www.domainName.com
.
Il codice rimanente controlla la stringa del nome del dominio, cosa c'è prima (che significa "www" o "http: // www.") E cosa è dopo il nome del dominio (che significa ".").
Tutti questi sono ignorati, in modo che Flash possa definire il vero nome di dominio. Il domainName.com
. Invece di controllare:
if (url! = "http://www.domainName.com/siteFolder/sitePage.html")
... controlliamo:
if (pageDomain! = "domainName.com")
Il problema principale con questa tecnica è che non funziona per domini che hanno tre parti. Per esempio, domainName.co.uk
- questo codice otterrà ".co.uk" come valore di pageDomain. Tuttavia, è il mio metodo preferito, come spiegherò nel prossimo passo.
Potresti avere diversi file sul tuo server, su domini diversi, questo metodo avrebbe potuto essere eseguito in modo tale che il file sarebbe stato bloccato su un singolo URL univoco, come sopra. Ma se dovessi eseguire il tuo file utilizzando il deep linking ad esempio, o sottodomini, il file smetterebbe di funzionare, poiché il link non sarebbe valido per il lettore di dominio.
Il fatto che il codice sia if (pageDomain! = "domainName.com")
è molto importante. Ti permetterà di aggiungere questo codice a ogni file sul tuo sito, sottodominio, posizione del link diretto; fino a quando il tuo link si trova su quel dominio, il file verrà eseguito e l'armadio dei domini non verrà attivato!
Tuttavia, può essere utile bloccare su qualcosa di più specifico di un nome di dominio. Immagina di ospitare il tuo sito web su un host come Amazon S3. Allora il tuo URL sarà qualcosa di simile http://yoursitename.s3.amazonaws.com/folder/page.html. Ma qualcun altro su Amazon S3 potrebbe avere l'URL http://someoneelse.s3.amazonaws.com/. Potrebbero caricare il file SWF sul loro sito e poiché il file SWF sarebbe ancora attivo amazonaws.com l'armadietto del dominio non si bloccherebbe.
Ecco un piccolo consiglio che potresti davvero amare. Supponiamo per un momento di avere lo stesso contenuto su diversi nomi di dominio e non vuoi aggiungere un codice diverso per ciascuno dei tuoi domini. Puoi fare in modo che il controllo dei file per più domini sia davvero facile.
Incontra l'operatore AND: &&
Usando questo comando all'interno del primo checker puoi aggiungere tutti i domini che desideri. Lascia che ti mostri come! :)
Controllo del singolo dominio:
(PageDomain! = "DomainName.com")
Multiple domain checker:
((pageDomain! = "domainName.com") && (pageDomain! = "mydomain.com") && (pageDomain! = "hisdomain.com"))
davvero facile, non è vero??
Bene, questo lo avvolge. Come tutti sapete, la protezione completa dei file flash non è mai garantita al 100%, ma questo è solo un altro passaggio, per rendere il vostro sito più sicuro, migliore e più sicuro contro il furto di file. Non dimenticare di criptare i tuoi file prima di aggiungerli al server! Grazie per aver letto questo tutorial, spero che ti sia stato utile, se hai bisogno di ulteriore aiuto, non esitare a lasciare le tue domande nella sezione dei commenti.