Codice php in Javascript

  • Creatore Discussione Creatore Discussione Marco_88
  • Data di inizio Data di inizio

Marco_88

Utente Attivo
4 Dic 2014
150
0
0
Roma
batwebit.blogspot.it
Buongiorno a tutti!
E' da un po' che tento di inserire del codice php in un file javascript, la guida che ho trovato è la seguente.
http://blog.mrwebmaster.it/2010/05/14/inserire-php-in-javascript.html

Ho seguito le istruzioni passo passo ed ho creato quindi un file .htaccess con le direttive specificate ed ho inserito l'header nel file .js che mi interessa, tuttavia però non ho alcun output, nel senso che sparisce proprio il contenuto.

P.s. il file qui sotto è uno slideshow e ho bisogno di tradurlo utilizzando delle etichette per le traduzioni in php che ho già compilato.

HTML:
<?php
// definizione del Content Type
@header("Content-type: application/javascript");
?>

(function(){(function k(){var f="NewSlidePbgComeFunziona.hyperesources",d="NewSlidePbgComeFunziona",c="newslidepbgcomefunziona_hype_container";if(false==!1)try{for(var g=document.getElementsByTagName("script"),a=0;a<g.length;a++){var b=g[a].src;if(null!=b&&-1!=b.indexOf("newslidepbgcomefunziona_hype_generated_script.js")){f=b.substr(0,b.lastIndexOf("/"));break}}}catch(m){}if(false==!1&&null==window.HYPE_458)null==window.HYPE_dtl_458?(window.HYPE_dtl_458=[],window.HYPE_dtl_458.push(k),d=document.getElementsByTagName("head")[0],c=document.createElement("script"),
a=navigator.userAgent.match(/MSIE (\d+\.\d+)/),a=parseFloat(a&&a[1])||null,c.type="text/javascript",c.src=f+"/"+(!0==(null!=a&&10>a||false==!0)?"HYPE-458.full.min.js":"HYPE-458.thin.min.js"),d.appendChild(c)):window.HYPE_dtl_458.push(k);else{window.HYPE_dtl_458=[];g=window.HYPE.documents;if(null!=g[d]){b=1;a=d;do d=""+a+"-"+b++;while(null!=g[d]);for(var e=document.getElementsByTagName("div"),b=!1,a=0;a<e.length;a++)if(e[a].id==c&&null==e[a].getAttribute("HYP_dn")){var b=
1,h=c;do c=""+h+"-"+b++;while(null!=document.getElementById(c));e[a].id=c;b=!0;break}if(!1==b)return}b=[];b=[];e={};h={};for(a=0;a<b.length;a++)try{h[b[a].identifier]=b[a].name,e[b[a].name]=eval("(function(){return "+b[a].source+"})();")}catch(l){window.console&&window.console.log(l),e[b[a].name]=function(){}}f=new HYPE_458(d,c,{"7":{p:1,n:"arrow.png",g:"44",o:true,t:"@1x"},"3":{p:1,n:"Schermata%202015-03-27%20alle%2016.06.47.jpg",g:"29",o:true,t:"@1x"},"8":{p:1,n:"arrow%402x.png",g:"44",o:true,t:"@2x"},"4":{p:1,n:"Schermata%202015-03-27%20alle%2016.06.47%402x.jpg",g:"29",o:true,t:"@2x"},"0":{p:1,n:"Schermata%202015-03-27%20alle%2015.58.54.jpg",g:"7",o:true,t:"@1x"},"9":{p:1,n:"arrow_indietro.png",g:"49",o:true,t:"@1x"},"5":{p:1,n:"Schermata%202015-03-27%20alle%2016.09.37.jpg",g:"31",o:true,t:"@1x"},"1":{p:1,n:"Schermata%202015-03-27%20alle%2016.02.45.jpg",g:"26",o:true,t:"@1x"},"6":{p:1,n:"Schermata%202015-03-27%20alle%2016.09.37%402x.jpg",g:"31",o:true,t:"@2x"},"2":{p:1,n:"Schermata%202015-03-27%20alle%2016.02.45%402x.jpg",g:"26",o:true,t:"@2x"},"10":{p:1,n:"arrow_indietro%402x.png",g:"49",o:true,t:"@2x"}},f,[],e,[{n:"Scena senza titolo",o:"1",X:[0]},{n:"Scena senza titolo Copia",o:"12",X:[1]},{n:"Scena senza titolo Copia Copia",o:"19",X:[2]}],[{A:{a:[{p:0}]},o:"3",p:"600px",x:0,cA:false,Z:400,Y:800,c:"#FFFFFF",L:[{a:[{}],B:"Personalizzato"}],bY:1,d:800,U:{},T:{kTimelineDefaultIdentifier:{i:"kTimelineDefaultIdentifier",n:"Seq. temp. principale",z:2,b:[],a:[{f:"c",y:0,z:1,i:"a",e:298,s:819,o:"59"},{y:0,i:"b",s:14,z:0,o:"59",f:"a"},{f:"c",y:1,z:1,i:"bL",e:0,s:20,o:"57"},{f:"c",y:1,z:1,i:"bL",e:0,s:20,o:"58"},{y:1,i:"a",s:298,z:0,o:"59",f:"c"},{y:2,i:"bL",s:0,z:0,o:"57",f:"c"},{y:2,i:"bL",s:0,z:0,o:"58",f:"c"}],f:30}},bZ:180,O:["63","62","58","57","60","61","59"],v:{"60":{G:"#000000",aU:8,c:696,aV:8,d:32,r:"inline",s:"AppleGothic,sans-serif",t:16,Z:"break-word",w:"Per prima cosa \u00e8 necessario registrarsi, clicca sul pulsante \u201cregistrazione\u201d in alto a destra e compila tutti i campi richiesti<br>",j:"absolute",x:"visible",k:"div",y:"preserve",z:3,aS:8,aT:8,a:43,F:"center",b:121},"63":{h:"44",p:"no-repeat",x:"visible",a:750,q:"100% 100%",b:183,j:"absolute",r:"inline",aA:{a:[{d:1.1000000000000001,p:1,g:5,f:1}]},k:"div",z:7,d:35,c:35,aP:"pointer"},"58":{h:"26",p:"no-repeat",x:"visible",a:418,q:"100% 100%",b:190,j:"absolute",r:"inline",z:5,k:"div",c:229,d:172,bL:20},"61":{aV:8,w:"Step 1 -<b> Registrazione</b>",x:"visible",a:27,Z:"break-word",b:86,y:"preserve",j:"absolute",z:2,yy:"nowrap",s:"'Helvetica Neue',Arial,Helvetica,Sans-Serif",aT:8,k:"div",aS:8,t:16,r:"inline",aU:8,G:"#000000"},"59":{aV:8,w:alert('<?php echo $labels[\"come_funziona_1\"];?>'"<br>E\u2019 semplicissimo!",x:"visible",a:819,Z:"break-word",b:14,y:"preserve",j:"absolute",z:1,yy:"nowrap",s:"AppleGothic,sans-serif",aT:8,k:"div",aS:8,t:24,r:"inline",aU:8,G:"#000000"},"62":{c:51,d:51,I:"Solid",J:"Solid",K:"Solid",g:"#E8EBED",L:"Solid",M:1,N:1,aI:"50%",A:"#D8DDE4",x:"visible",j:"absolute",O:1,aJ:"50%",k:"div",C:"#D8DDE4",z:6,B:"#D8DDE4",D:"#D8DDE4",aK:"50%",P:1,a:739,aL:"50%",b:174},"57":{h:"7",p:"no-repeat",x:"visible",a:57,q:"100% 100%",b:176,j:"absolute",r:"inline",z:4,k:"div",c:307,d:100,bL:20}}},{A:{a:[{p:0}]},o:"18",p:"600px",x:1,cA:false,Z:400,Y:800,c:"#FFFFFF",L:[],bY:1,d:800,U:{},T:{kTimelineDefaultIdentifier:{i:"kTimelineDefaultIdentifier",n:"Seq. temp. principale",z:2,b:[],a:[{f:"c",y:0,z:2,i:"e",e:1,s:0,o:"66"},{y:2,i:"e",s:1,z:0,o:"66",f:"c"}],f:30}},bZ:180,O:["71","70","69","68","66","67","64","65"],v:{"65":{aV:8,w:"Ricordati di confermare l\u2019 iscrizione..<br>",x:"visible",a:198,Z:"break-word",b:16,y:"preserve",j:"absolute",z:1,yy:"nowrap",s:"AppleGothic,sans-serif",aT:8,k:"div",aS:8,t:24,r:"inline",aU:8,G:"#000000"},"68":{c:51,d:51,I:"Solid",J:"Solid",K:"Solid",g:"#E8EBED",L:"Solid",aP:"pointer",M:1,N:1,aI:"50%",A:"#D8DDE4",x:"visible",O:1,j:"absolute",aJ:"50%",k:"div",C:"#D8DDE4",z:9,B:"#D8DDE4",D:"#D8DDE4",aK:"50%",P:1,a:740,aL:"50%",b:174},"71":{h:"49",p:"no-repeat",x:"visible",a:12,q:"100% 100%",b:182,j:"absolute",r:"inline",aA:{a:[{d:1.1000000000000001,p:1,g:4,f:2}]},k:"div",z:12,d:37,c:37,aP:"pointer"},"66":{h:"31",p:"no-repeat",x:"visible",a:158,q:"100% 100%",b:170,j:"absolute",r:"inline",c:405,k:"div",z:4,d:214,e:0},"69":{h:"44",p:"no-repeat",x:"visible",a:750,q:"100% 100%",b:182,j:"absolute",cT:0,aA:{a:[{d:1.1000000000000001,p:1,g:5,f:1}]},k:"div",z:10,d:37,aX:0,aW:0,aP:"pointer",c:37,r:"inline"},"64":{aV:8,w:"Step 2 -<b> Conferma di iscrizione</b>",x:"visible",a:16,Z:"break-word",b:83,y:"preserve",j:"absolute",z:2,yy:"nowrap",s:"'Helvetica Neue',Arial,Helvetica,Sans-Serif",aT:8,k:"div",aS:8,t:16,r:"inline",aU:8,G:"#000000"},"67":{aV:8,w:"Apri la tua casella di posta elettronica e conferma la tua iscrizione cliccando sul link ricevuto.<br>",x:"visible",a:59,Z:"break-word",b:127,y:"preserve",j:"absolute",z:3,yy:"nowrap",s:"AppleGothic,sans-serif",aT:8,k:"div",aS:8,t:16,r:"inline",aU:8,G:"#000000"},"70":{c:51,d:51,I:"Solid",J:"Solid",K:"Solid",g:"#E8EBED",L:"Solid",aP:"pointer",M:1,N:1,aI:"50%",A:"#D8DDE4",aA:{a:[{d:1.1000000000000001,p:1,g:5,f:2}]},O:1,x:"visible",aJ:"50%",j:"absolute",C:"#D8DDE4",z:11,k:"div",D:"#D8DDE4",aK:"50%",B:"#D8DDE4",P:1,a:6,aL:"50%",b:174}}},{A:{a:[{p:0}]},o:"25",p:"600px",x:2,cA:false,Z:400,Y:800,c:"#FFFFFF",L:[],bY:1,d:800,U:{},T:{kTimelineDefaultIdentifier:{i:"kTimelineDefaultIdentifier",n:"Seq. temp. principale",z:2.01,b:[],a:[{f:"c",y:0,z:2.01,i:"b",e:184,s:413,o:"72"},{y:2.01,i:"b",s:184,z:0,o:"72",f:"c"}],f:30}},bZ:180,O:["76","75","72","74","73","77"],v:{"75":{c:51,d:51,I:"Solid",J:"Solid",K:"Solid",g:"#E8EBED",L:"Solid",M:1,N:1,aI:"50%",A:"#D8DDE4",x:"visible",j:"absolute",O:1,aJ:"50%",k:"div",C:"#D8DDE4",z:5,B:"#D8DDE4",D:"#D8DDE4",aK:"50%",P:1,a:6,aL:"50%",b:173},"74":{aV:8,w:"La registrazione \u00e8 completata! Adesso puoi fare le tue offerte su tutti i prodotti nel catalogo<br>",x:"visible",a:67,Z:"break-word",b:126,y:"preserve",j:"absolute",z:3,yy:"nowrap",s:"AppleGothic,sans-serif",aT:8,k:"div",aS:8,t:16,r:"inline",aU:8,G:"#000000"},"77":{aV:8,w:"Ora sei pronto per fare le offerte!<br>",x:"visible",a:216,Z:"break-word",b:16,y:"preserve",j:"absolute",z:1,yy:"nowrap",s:"AppleGothic,sans-serif",aT:8,k:"div",aS:8,t:24,r:"inline",aU:8,G:"#000000"},"73":{aV:8,w:"Step 3 - <b>Fai le tue offerte!</b>",x:"visible",a:31,Z:"break-word",b:82,y:"preserve",j:"absolute",z:2,yy:"nowrap",s:"'Helvetica Neue',Arial,Helvetica,Sans-Serif",aT:8,k:"div",aS:8,t:16,r:"inline",aU:8,G:"#000000"},"76":{h:"49",p:"no-repeat",x:"visible",a:12,q:"100% 100%",b:181,j:"absolute",r:"inline",aA:{a:[{d:1.1000000000000001,p:1,g:4,f:2}]},k:"div",z:6,d:37,c:37,aP:"pointer"},"72":{h:"29",p:"no-repeat",x:"visible",a:205,q:"100% 100%",b:413,j:"absolute",r:"inline",c:389,k:"div",z:4,d:175}}}],{},h,{},
0,false,false,true,-1,true,true,true);g[d]=f.API;document.getElementById(c).setAttribute("HYP_dn",d);f.z_o(this.body)}})();})();
 
Direi di fare la prova più semplice possibile per vedere se l'interprete di php sta effettivamente parsando il file.
Ad inizio script, subito dopo l'apertura del tag <?php, fai così:
PHP:
<?php
echo 'Hello Script!';
exit();

// ... resto dello script

E vediamo intanto se questo funziona richiamando la url dello script ;)
 
Ok allora il webserver non ha preso l'impostazione dettata nel file .htaccess

Direi che è il caso di provare a cambiare strategia: anziché configurare il webserver per inserire un nuovo handler per php, possiamo usare una regola di url rewriting per ottenere l'effetto desiderato.

In primis, il file .htaccess
Codice:
RewriteEngine On # Se usi già regole di riscrittura, questa istruzione probabilmente sarà già presente
RewriteRule    ^dscript/([^.]+)\.js$    $1.js.php    [NC,L]

Con questa regola ho definito che un qualsiasi script, richiamato dalla cartella fittizia dscript (nella mia testa "dynamic script" così che si possano riconoscere ad occhio tali url) corrisponda ad un file php con lo stesso nome ma con estensione .js.php

Un esempio?

Se da browser richiamo www.website.com/dscript/slideshow.js
Internamente la richiesta sarà redirezionata a: www.website.com/slideshow.js.php

Quindi, prova a cambiare il nome del tuo file, a seguire queste indicazioni e se riesci a visualizzare "Hello Script!" potresti togliere il codice di esempio e visualizzare il tuo script.
 
Dunque ho creato la cartella dscript nella root del sito e ci ho messo tutto il codice dello slideshow in javascript.
Nel file .htaccess ho inserito la direttiva per dscript (rewrite engine era già on).
Nel codice postato sopra ho lasciato lo script di prova "hello script".
Tuttavia qualcosa sembra ancora non funzionare
 
La cartella non va creata, viene semplicemente "emulata" dalla regola di riscrittura.
Il file tuo file deve trovarsi nella root del sito e deve avere l'estensione che ti ho indicato ( .js.php )
 
Il fatto è che non si tratta di un semplice codice singolo, è una cartella che contiene tutto il pacco di accessori che servono per far girare questo slideshow e nel mio caso si trova nella cartella "js" della root del sito.
A sua volta il file (che ho postato sopra) contiene delle dipendenze per altri due o tre file in javascript inseriti nella stessa cartella dello slideshow.
Non so sinceramente se tramite il rewrite riesco a fare un'operazione del genere.

edit
Ho cambiato l'estensione a tutti i file da .js a .js.php. Li ho messi nella root quindi l'interprete php quando legge il file con estensione .js.php grazie alla direttiva del rewrite engine dovrebbe reindirizzare verso il file in javascript giusto?
 
Ultima modifica:
Se vuoi reindirizzare ad una vera cartella dscript allora creala.
Se hai bisogno che anche altri script presenti in sottocartelle site in dscript vengano interpretati quando trovati con l'estensione .js.php, bisogna modificare la regola come segue:
Codice:
RewriteRule    ^dscript/(.*?/)?([^.]+)\.js$    dscript/$1$2.js.php    [NC,L]

Da browser i files dovresti sempre e solo chiamarli con l'estensione .js

Fai qualche prova e fammi sapere come va ;)
 
Ultima modifica:
Adesso qualcosa sembra funzionare.

Nella pagina dove viene visualizzato lo slideshow ho questo percorso per lo script.

HTML:
<div id="slidepbg_hype_container" style="top:40px; margin:auto;position:relative;width:900px;height:400px;overflow:hidden; border: solid 2px gray;"aria-live="polite">
		<script type="text/javascript" charset="utf-8" src="dscript/Slidepbg/SlidePbg.hyperesources/slidepbg_hype_generated_script.js"></script>
	</div>

Dopodiché ho cambiato l'estensione del file "slidepbg_hype_generated_script.js" in "slidepbg_hype_generated_script.js.php".
Ed ho inserito nel file .htaccess la seguente direttiva:

Codice:
RewriteRule    ^dscript/(.*?/)?([^.]+)\.js$    dscript/$1$2.js.php    [NC,L]

Quindi, quando apro la pagina, lo script lo vedo nonostante abbia come estensione php.

Allora ho eseguito la seguente prova sullo script "slidepbg_hype_generated_script.js.php".

PHP:
//	HYPE.documents["SlidePbg"]

<?php echo 'Hello Script';
exit();

/*Ho disattivato lo script per vedere se echo funziona
(function(){(function k(){var f="SlidePbg.hyperesources".....etc...etcc
*/


Il risultato è che mi sparisce lo slideshow in output.
Anche provando così:

PHP:
//	HYPE.documents["SlidePbg"]

<?php echo 'Hello Script';
exit();?>

/*Ho disattivato lo script per vedere se echo funziona
(function(){(function k(){var f="SlidePbg.hyperesources".....etc...etcc
*/


p.s. il regola di rewrite funziona perché se la disattivo, sparisce lo script.
 
Ultima modifica:
Il risultato è che mi sparisce lo slideshow in output.

Il testo 'Hello Script' però lo leggi quando apri il file .js dal browser ? Se si significa che php funziona, quindi puoi riportare il tuo script alle istruzioni originarie (quelle del tuo post di apertura) e procedere normalmente.
 
Navigando nel browser al link diretto "http:../dscript/Slidepbg/SlidePbg.hyperesources/slidepbg_hype_generated_script.js":

PHP:
//	HYPE.documents["SlidePbg"] 
Hello Script 
(function(){(function k(){var f="SlidePbg.hyperesources",d="SlidePbg",c="slidepbg_hype_container";if(false==!1)try{for(var g=document.getElementsByTagName("script"),a=0;aa||false==!0)?"HYPE-458.full.min.js.php":"HYPE-458.thin.min.js.php"),d.appendChild(c)):window.HYPE_dtl_458.push(k);else{window.HYPE_dtl_458=[];g=window.HYPE.documents;if(null!=g[d]){b=1;a=d;do d=""+a+"-"+b++;while(null!=g[d]);for(var e=document.getElementsByTagName("div"),b=!1,a=0;aRegistrazione",x:"visible",a:21,Z:"break-word",b:97,y:"preserve",j:"absolute",z:2,yy:"nowrap",s:"Helvetica,Arial,Sans-Serif",aT:8,k:"div",aSt..........etc etc...

Quindi l'echo "Hello script" in php funziona.

Ho riabilitato lo script ed ho inserito le etichette in php laddove mi servivano è il risultato è che navigando nel browser come prima direttamente al file .js vedo che il php funziona e le etichette vengono lette correttamente:

PHP:
b:149},"62":{aV:8,w:<?php echo $labels['come_funziona_1'];?><br>E\u2019 semplicissimo<br>",x:"visible",a:.....etc etc

Sul browser quindi vedo:

PHP:
b:149},"62":{aV:8,w:"Come funziona?E\u2019 semplicissimo",x:"visible".....etc etc....


Se torno nella pagina dove devo vedere lo slideshow sparisce il contenuto.
Le dipendenze le ho modificate tutte in js.php....cos'altro posso provare?
 
Beh per ora ci ho messo una "pezza", ho creato un altro slideshow in inglese che attivo tramite un controllo if else sula lingua impostata......comunque voglio approfondire la questione...per ora grazie flameseeker..:)
 

Discussioni simili