2012-08-09 14 views
23

Tengo una barra de navegación, una imagen y un encabezado que incluiré en todas las páginas de mi sitio web, así que quería usar php include para referirme a este código en varias páginas. Sin embargo, creo que puedo tener la sintaxis incorrecta o algo así porque no muestra nada cuando la cargo. Éstos son algunos fragmentos de código:PHP Include para HTML?

<!-- sample page --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html> 
<head> 
<?php include ('headings.php'); ?> 
</head> 
<body> 
<?php include ('navbar.php'); ?> 
<?php include ('image.php'); ?> 
</body> 
</html> 

navbar.php

<?php 

    echo '<ul id="nav"> 
     <li> 
      <a href="Home.html">Home</a> 
     </li> 
     <li> 
      <a>About Me</a> 
      <ul> 
       <li> 
        <a href="Career.html">Career</a> 
       </li> 
       <li> 
        <a href="Coding.html">Coding</a> 
       </li> 
       <li> 
        <a href="Personal.html">Personal</a> 
       </li> 
      </ul> 
     </li> 
     <li> 
      <a href="Travels.html">Travel</a> 
     </li> 
     <li> 
      <a href="Contact.html">Contact</a> 
     </li> 
    </ul>'; 

    ?> 

Gracias por ayudar!

+6

No hay ninguna razón para tener esto en una etiqueta PHP y usar 'echo'. Puede incluirlo incluso si solo es HTML sin procesar. ** Editar **: Dicho eso, tu código se ve bien. ¿Has intentado ver la fuente y podrías publicarla en el OP? ** Editar **: Tal vez sea porque PHP no está instalado en su servidor, y por lo tanto su navegador solo renderiza las etiquetas PHP como etiquetas HTML normales (nada). – h2ooooooo

+0

+1 como lo hizo para las etiquetas de cabeza y cuerpo – Waygood

+0

Es posible que desee considerar un motor de plantilla en su lugar. Echa un vistazo a Smarty, Twig o Dwoo como ejemplos. Hay mucho más por ahí. – Crontab

Respuesta

23

Puede usar el código php en archivos con la extensión .php y solo allí (si otro no está definido en la configuración de su servidor).

Sólo cambiar el nombre de su archivo *.html a *.php


Si desea permitir el procesamiento php código en archivos de formato diferente, usted tiene dos opciones para hacerlo:

1) Modificación de httpd.conf para permitir esto para todos los proyectos en su servidor, agregando:

AddHandler application/x-httpd-php .htm .html 

2) Creando .htaccess archivo en el directorio superior proyecto separado con:

<Files /> 
    AddType application/x-httpd-php .html 
</Files> 

Por segunda opción que necesita para permitir el uso de .htaccess archivos en su httpd.conf, mediante la adición de los siguientes ajustes:

AllowOverride All 
AccessFileName .htaccess 

* que es correcto para Apache HTTP Server

+8

Falso. Siempre que el servidor esté configurado para manejar diferentes extensiones como archivos PHP, puede incluir código PHP en un archivo con ** CUALQUIER ** extensión (es decir, '.js',' .css', '.html', etc.) – Matt

+0

También puede usar PHP en archivos con otras extensiones. – jprofitt

+0

Actualmente puedes usar PHP donde quieras. – Vatev

9

No necesita hacer eco de la información dentro del archivo php. Un php include incluirá automáticamente cualquier HTML dentro de ese archivo.

Asegúrate de estar usando un archivo de índice con una extensión .php, .html no funcionará con php includes. (A menos que le indique a su servidor que trate los archivos .html de lo contrario)

Asegúrese de que las rutas estén configuradas correctamente. Según su descripción, la forma en que lo configuró los archivos header.php/navbar.php/image.php debe estar en su directorio raíz. Así que su directorio raíz debe tener este aspecto:

index.php
navbar.php
image.php
header.php

De lo contrario, si esos archivos PHP están en una carpeta llamada /includes/, debe verse así:

<?php include ('includes/headings.php'); ?>

0

Primero: lo que el otros dijeron. Olvídese de la declaración de eco y simplemente escriba su navbar.php como un archivo HTML normal.

Segundo: sus rutas de inclusión probablemente estén en mal estado.Para asegurarse de incluir los archivos que se encuentran en el mismo directorio que el archivo actual, utilice __DIR__:

include __DIR__.'/navbar.php'; // PHP 5.3 and later 
include dirname(__FILE__).'/navbar.php'; // PHP 5.2 
4

tratar de conseguir algo de información de depuración, podría ser que la ruta del archivo es incorrecta, por ejemplo.

Pruebe estas dos cosas: - añadir esta línea a la parte superior de la página de muestra:

<?php error_reporting(E_ALL);?> 

Esto imprimirá todos los errores/advertencias/avisos en la página por lo que si hay algún problema se obtiene una mensaje de texto que describe que en lugar de una página en blanco

Además, puede cambiar include() para exigir()

<?php require ('headings.php'); ?> 
<?php require ('navbar.php'); ?> 
<?php require ('image.php'); ?> 

Esto lanzará un Error fatal de o PHP no puede cargar las páginas requeridas, y debería ayudarlo a obtener un mejor rastreo de lo que está fallando.

Puede publicar las descripciones de error aquí, si tiene alguna, y no puede entender lo que significa ..

+0

Gracias, pero lo tenemos resuelto. ¡Sin embargo, estoy seguro de que esto será útil en el futuro! – sresht

1

Aquí está el proceso paso a paso para incluir código PHP en el archivo html (Probado)

Si PHP está funcionando sólo hay un paso a la izquierda para utilizar scripts PHP en archivos con * .html o * Extensiones .htm también. La palabra mágica es ".htaccess". Consulte la definición de Wikipedia de .htaccess para obtener más información al respecto. Según Wikipedia, es "un archivo de configuración de nivel de directorio que permite la administración descentralizada de la configuración del servidor web".

Probablemente pueda usar dicho archivo de configuración .htaccess para su propósito. En nuestro caso, desea que el servidor web analice los archivos HTML, como los archivos PHP.

Primero, cree un archivo de texto en blanco y asígnele el nombre ".htaccess". Puede que se pregunte por qué el nombre del archivo comienza con un punto. En sistemas tipo Unix, esto significa que es un archivo de puntos es un archivo oculto. (Nota: si su sistema operativo no permite nombres de archivos que comiencen con un punto, simplemente asigne un nombre temporal al archivo "xyz.htaccess." Tan pronto como lo haya cargado a su servidor web en un paso posterior, puede cambiar el nombre del archivo en línea a " .htaccess ") A continuación, abra el archivo con un editor de texto simple como el" Editor "en MS Windows. Pegue la siguiente línea en el archivo: AddType application/x-httpd-php .html .htm Si esto no funciona, elimine la línea anterior de su archivo y pegue esta línea alternativa en él, para PHP5: AddType application/x-httpd-php5 .html .htm Ahora cargue el archivo .htaccess en el directorio raíz de su servidor web. Asegúrese de que el nombre del archivo sea ".htaccess". Su servidor web ahora debe analizar los archivos * .htm y * .html como los archivos PHP.

Puede probar si funciona creando un archivo HTML como el siguiente. El nombre de "php-en-html-test.htm", pegue el código siguiente en él y subirlo al directorio raíz de su servidor web:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
    <HTML> 
<HEAD> 
<TITLE>Use PHP in HTML files</TITLE> 
</HEAD> 

    <BODY> 
    <h1> 
    <?php echo "It works!"; ?> 
    </h1> 
    </BODY> 
</HTML> 

intenta abrir el archivo en su navegador tecleando: http://www.your-domain.com/php-in-html-test.htm (una vez más, reemplace su-dominio.com por su propio dominio ...) Si su navegador muestra la frase "¡Funciona!" todo funciona bien y puede utilizar PHP en archivos * html y * .htm a partir de ahora. Sin embargo, si no es así, intente utilizar la línea alternativa en el archivo .htaccess como mostramos arriba.Si todavía no funciona, póngase en contacto con su proveedor de alojamiento.

1

Descubrí una solución simple para PHP incluir cosas. Simplemente cambie el nombre de todos sus archivos .html a .php y estará listo.

0

Tengo un problema similar. Parece que PHP no le gusta el código php dentro del archivo incluido. En su caso, la solución es bastante simple. Elimina el código php de navbar.php, simplemente deja HTML sin formato y funcionará.

+0

Esto realmente no responde la pregunta. Si tiene una pregunta diferente, puede formularla haciendo clic en [Preguntar pregunta] (https://stackoverflow.com/questions/ask). También puede [agregar una recompensa] (https://stackoverflow.com/help/privileges/set-bounties) para atraer más atención a esta pregunta una vez que tenga suficiente [reputación] (https://stackoverflow.com/help/ que-reputación). - [De la crítica] (/ review/low-quality-posts/17479786) –