2011-08-18 19 views
5

¿Puedo hacer algo como esto?¿Puedo cargar javascript desde un archivo php?

<script src="/js/custom-user.php" type="text/javascript"></script> 

La razón detrás de esto es que quiero el archivo .php para morir() cuando el usuario no está conectado, de manera que otros visitantes (no autenticado) no pueden ver lo que el Javascript se parece. ¿Es posible/seguro hacer esto?

+5

Sí. Querrá tener un encabezado ('Content-Type: text/javascript'); en tu archivo php sin embargo. – Cfreak

Respuesta

3

Sin duda, siempre que el archivo php de referencia envíe el encabezado content-type apropiado cuando se descargue.

0

Sí, eso funcionará.

Así es como los minitorreros de JavaScript pueden servir dinámicamente scripts minificados. (por ejemplo, http://code.google.com/p/minify/)

2

Sí, puede hacerlo, y es seguro.

En la costumbre-user.php que tendrá que establecer una adecuada cabecera Content-Type:

header('Content-Type: text/javascript'); 

Y entonces la salida del javascript:

readfile('script.js'); 
1

Sí, pero ... deberías mejor hazlo así:

<?php 
if ($loggedIn) { echo '<script src="/js/custom-user.js" type="text/javascript"></script>'; } 
?> 

Eso evitaría la carga de archivos vacíos. Todas las funciones deben colocarse en el archivo externo; si desea algunos cambios específicos de JavaScript, cree un código en HEAD SCRIPT

8

Sí, pero tengo dos recomendaciones. En primer lugar, es mejor, en su circunstancia, mostrar solo <script> si el usuario está conectado. En serio, no quiere que lo que le está dando salida js realmente sepa o se preocupe si el usuario inició sesión.

Si lo hace js salida en PHP, entonces usted debe incluir en el encabezado apropiado:

header("Content-type: text/javascript"); 

// either readFile or custom stuff here. 
echo "alert('i canz have data!')"; 
// or, if you're less silly 
readFile('/path/to/super-secret.js'); 

en realidad, una vez tuve salida de CSS por PHP (oh, se puede hacer eso también), que cambió por completo en base a la obtener variable. Yo, literalmente, podría tener:

rel="stylesheet" type="text/css" href="css.php?v=#FF0000"> 

y sería utilizar #FF0000 como color base para completamente re-definir las combinaciones de colores en el sitio web. Incluso llegué a engancharlo a imagemagick y cambiar el color del logotipo del sitio. Parecía horrible porque no soy diseñador, pero era realmente bueno.

+0

Estoy de acuerdo en que tiene más sentido que PHP compruebe si la etiqueta 'script' debe salir en primer lugar o no. Sin embargo, si por alguna razón realmente, realmente quieres ocultar tu JS, tendrías que colocar el script fuera del directorio web del servidor, en cuyo caso querrías que PHP lo lea y emita el archivo. –

0

Puede, pero ralentizará sus páginas ya que cada vez que alguien accede a su página modphp tendrá que ejecutar su script php/javascript.

Cuestiones relacionadas