Sayfanın içine başlığı (sayfa üst kısmı) dahil html php gömülü

8 Cevap php

I'm trying to put the top of my page (which is all html) in a seperate file so I only need to change things once like the menu bar etc. So I googled some and found a solution on this website as well, but it doesn't work and I don't know why.

Yani article.html gibi bir sayfa var ve üstüne bu var:

   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01         
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>

<?php  include("/pages/header.php");   ?> 

<!-- rest of the html code -->

Header.php ben her sayfanın üstünde olmalıdır html var ve ile başlar:

<?php
/**
 * @author name
 * website header
 */
?>

<!-- html code -->

Peki bu sorun var. Ben sayfa article.html açın ve sağ kaynağını görüntülemek için üzerine tıkladığınızda, ben header.php dosyasını çağıran yukarıdaki php görebilirsiniz.

Teşekkürler!

Bilginize: Ben php sunucu üzerinde etkin olması

EDIT: Ben '.. / Sayfalar / header.php' dosya yolunu değiştirdi ve şimdi çalışıyor. Bu gibi çalışır neden hiçbir ipucu var ..?

8 Cevap

Bir html dosyası içinde php kodu kullanamazsınız.

article.html article.php için yeniden adlandırın.

Eğer göreli yolun başında bir '/' koydu. Bunu kaldırmak gerekir. Yani mutlak bir yol yapar. Muhtemelen include("pages/header.php"); olmalıdır

<?php include("/pages/header.php"); ?> bir PHP dosyası değil onun dosya uzantısını kontrol var ...: bu var nerede sayfasını düşünüyorsun? Bu olması gerekir:. Madde php

Include_once ve Require_once tam sunucu yolları ile iyi çalışır, gerektirir. Gibi bir şey kullanmayı deneyin:

<?php include($_SERVER['DOCUMENT_ROOT'] . '/pages/header.php'); ?>

PHP Dokümanlar:

Files are included based on the file path given or, if none is given, the include_path specified. The include() construct will emit a warning if it cannot find a file; this is different behavior from require(), which will emit a fatal error.

If a path is defined (full or relative), the include_path will be ignored altogether. For example, if a filename begins with ../, the parser will look in the parent directory to find the requested file.

For more information on how PHP handles including files and the include path, see the documentation for include_path.

Göreceli başlangıç ​​noktası yürütülen dosyadan her zaman olduğuna dikkat edin. Giriş noktası (lanet, o :) açıklamak zor) birçok dizinleri idam edilebilir eğer çok dizinlere dosyaları dahil ve eğer Böylece içeren göreli ve mutlak yolları kullanarak hatalara yol açabilir.

Diğerleri işaret olarak da, sen düz bir HTML dosyası (en azından varsayılan) PHP ifadeleri kullanamazsınız. Bu tablolar, düz metin olarak kabul edilecektir. Php için html dosyayı yeniden adlandırmak, ya da bir php dosyası olarak bu dosyayı tedavi sunucusu anlatmak için bir. Htaccess yapmak ya.

Sunucu PHP dosyaları gibi. Html dosyalarını ayrıştırmak değil kurmak gibi geliyor. Bu normaldir kurgusunda - Article.php için article.html yeniden adlandırma deneyin ve sorunu çözüp çözmediğini görmek. Öyle ise, PHP (ayrıntılar için http://serverfault.com/ sormak) gibi html dosyaları. Ayrıştırmak için sunucuyu yeniden, ya da yönlendirmek için mod_rewrite kullanımı ya. Html dosyalar. Php eşdeğer

Ben sorunuzu tam olarak okumadım. Eğer bir PHP tercüman aracılığıyla kodunuzu geçen değil gibi aslında geliyor. PHP dosyaları sunucu üzerinde bir program tarafından yorumlanması gerekir kod vardır. Onlar uzantısı .php Eğer ev PHP sunuyor olmadığını görmek gerekir sona eğilimindedir. Onlar muhtemelen. Eğer öyleyse, sadece article.php için dosyayı yeniden adlandırma deneyebilirsiniz.

Aşağıdaki satırları için (benim sunucu bu kadar / etc / apache / mod_php.conf üzerinde) php yapılandırma dosyasını kontrol

# Load the PHP module
LoadModule php5_module libexec/apache/libphp5.so

# Tell Apache to feed all *.php files through the PHP module
AddType application/x-httpd-php .php .phtml

Sonra, her bir dosya include 'd veya talep ya doğrudan uzantısı. Php olduğundan emin olun.

Ben nasıl tüm diğer yanıtlar eserlerinden oluşan bir iyi kavramak olsun düşünüyorum, ama şeyler biraz zorlaştırmak için, sana could yuvarlak başka bir yol gitmek, bahsetmek istiyorum: [(1 {Dahil Eğer sunucuda değil docroot ile ilgili yolunu ayarlamak zaman (ki), bekliyoruz gibi .php dosyaları içinde)]} dosya çalışır.

Why this? Sen bir PHP dosyası istenen sunucu, onu koyar php programı aracılığıyla atar ve kullanıcıya sonuç verir ki, diğer yanıtlar öğrenirler. (Sunucu bunu yapar ki) bu nedenle .php için orijinal dosyayı yeniden adlandırmak gerekir.

Şimdi, inside PHP, sen include ifadesi var. Eğer öğrendiğimiz gibi, başka bir dosya getirir ve (bu ek ?> önce ve bir <?php sonra düşünürken, olan) sadece içerik anlamıyla orada olurdu gibi onun pozisyonunda gömer.

Şimdi basit bir HTML dosyası eklerseniz, PHP dosyasını getirir ve ona bütün kodunu değerlendirmek yerinde koyar. HTML dosyaları da geçerli PHP dosyaları, olur tüm olduğundan, HTML tarayıcıya gönderilen olduğunu.

Özetle söylemek gerekirse: ne ne aracı, anlamaya çalışın:

  • Browser (ya da daha genel olarak, client) bir talep gönderir
  • Server (örneğin, Apache) isteği uygun bir dosyayı bulmak için çalışıyor
  • Server, de görür: ". Ah, bir PHP dosyası ben PHP rpogram aracılığıyla boru bunu gerektiği, benim yapılandırma" diyor
  • PHP, her <?php ... ?> ile sunucudan şeyler içinde görünüyor ve PHP kodu olarak bu değerlendirmeye çalışır. Her şey yalnız bıraktı ve olduğu gibi tarayıcıya gönderilir.
  • Browser parsed yanıtı alır, ki içinde, without herhangi bir <?php ... ?> parçaları, onlar {[tarafından işlenir ve daha sonra uzaklaştırılmış için (4)]} önce onları göndermeden

Senin durumunda: include deyimi bir PHP kodu segment içinde olduğunu ve bu nedenle PHP 'görür' ne bir parçasıdır. Bu sunucu üzerinde değerlendirilir ve never tarayıcıya gönderilir.