¿Está mal esta forma de llamar a los archivos que están alojados en mi propio servidor?
define('HTTP_PROTOCOL', 'http'); // http protocol
define('ROOT_URL', (HTTP_PROTOCOL).'://'.($_SERVER['HTTP_HOST']).'/myApp'); // donde myApp es el nombre x de la aplicación
Entonces en mi html yo llamo así..
// como llamo a un archivo .css
<link rel="stylesheet" type="text/css" href="<?php echo(ROOT_URL); ?>/css/fonts.css<?php echo(VERSION_LAST); ?>">
// como llamo a un script js
<script type="text/javascript" src="<?php echo(ROOT_URL); ?>/javascript/highcharts.js<?php echo(VERSION_LAST); ?>"></script>
// como llamo a una imagen
<img src="<?php echo(ROOT_URL); ?>/images/myPhoto.jpg<?php echo(VERSION_LAST); ?>">
Hay constantes que ya tiene listas PHP creo que una es __DIR__ o algo así, el punto es que estaba pensando y una cosa es acceder por directorio pero yo estoy accediendo por una URL, quizás sea menos óptimo hacerlo como hago yo.
¿Qué les parece?
No se de que hables cuando dices por "directorio". Los attributos src y href usan URLs.
Ah okay, me olvidé de dejar un ejemplo de como llamo mis ficheros:
require(($_SERVER['DOCUMENT_ROOT']).'/myApp/library/x.php');
Para este caso si está correcto hacerlo con una constante de directorio "(C:\xampp\etc)" y no de una url, no?
Hola, tenés que usar la ruta de archivos locales porque justamente estás llamando a archivos del mismo servidor, cuando es externo se usan las URLs.
Saludos
Es lo que se llama comun mente rutas absolutas o relativas. Creería que es lo mismo pero algunas personas les va mejor con la ruta completa. A mi en lo personal prefiero las relativas a partir de la carpeta del website, no me gusta ver plasmado la ruta completa.
Buscas algo asi?
dirname(((isset($_SERVER['HTTPS']) and ($_SERVER['HTTPS'] === true)) ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']).'/'
También está el $_SERVER['PHP_SELF'] pero tiene XSS.
Por otro lado en ves de pegar las variables en el template mejor llamaría a una función que construya la ruta según opciones, por ejemplo:
<?php
function url($path = '/') {
return (((isset($_SERVER['HTTPS']) and ($_SERVER['HTTPS'] === true)) ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].$path;
}
?>
<a href="<?php=url('/test')?>">Test</a>
En el camino te encontrarás con mcuhos problemas, por ejemplo algunos filtrados para evitar el xss, saber si vas a tener lógica dentro de tus plantillas o no, etc. Lo que te recomiendo mejor es que uses un framework que ya tenga todo eso incluido como codeigniter (https://codeigniter.com/).
Saludos.