2016-04-04 15 views
1

Ich habe versucht, enthält als Teil meiner Website für etwa 2 Wochen jetzt. Bei vielen Fragen und langen Recherchen habe ich herausgefunden, dass PHP der beste Weg ist. Ich begann mit dem Versuch, Server Side Includes in den HTML-Kommentar Weg, dann ging ich zu PHP und recherchiert alle die verschiedenen Erweiterungen benötigt für die zu arbeiten und so weiter. Ich hatte MAMP für den Mac heruntergeladen, wissend, dass es mit Includes funktionieren würde. Ich habe es immer wieder mit einem ähnlichen Code mit PHP versucht und aus welchem ​​Grund auch immer hat es nicht funktioniert. Ob es das New Boston auf Youtube oder das Handbuch von PHP war, hatte ich keinen Erfolg.PHP Include Trouble

Schließlich kam ich auf http://www.w3schools.com/php/php_includes.asp. Ich hatte ihren Code in einem Ordner gespeichert und lief auf MAMP, es funktionierte magisch. Ich dachte, wenn ich das in meine Website implementiere, würde es funktionieren. Wieder kein Erfolg. Also bitte ich um Hilfe.

Der Code:

Footer: (footer.php)

<?php echo'<div class ="footer"> 
<p>Contact Us! <br> @allwaterpolo</p> 
<a href="#"><img src ="img/Facebook_Png_01.png" class="facebook" id="FaceBook Link" /> </a> 
<a href="#"><img src ="img/Uiconstock-Socialmedia-Instagram.ico" class="instagram" id="Instagram Link" /> </a> 
<a href="#"><img src ="img/Twitter_Logo_Hd_Png_03.png" class="twitter" id="Twitter Link" /> </a> 
<a href="#"><img src ="img/Youtube_icon.png" class="youtube" id="YouTube Link" /> </a> 
<div class="aboutus"> 
<a href ="htmlfiles/aboutUs.php">About <br>Us</a> 
</div> 
<div class= copyright> 
Copyright &copy; 2016<script>new Date().getFullYear()>2016&&document.write("-"+new Date().getFullYear());</script>, <br> All Water Polo. All rights reserved 
</div> 
</div> ';?> 

Rubrik: (header.php)

<?php echo'<div class ="header"> 
<h1>The Best Sport</h1> 
<h1 class="sitetitle">AllWaterPolo</h1> 
<img src ="img/51wmckj8p1l__sx300__1.png" class="wpball" alt="Water Polo Ball" /> 
<h2 class="homeScreenLink"> <a href ="index.html">Water Polo!</a></h2> </div>';?> 

Navigation Bar :(navbar.php)

<?php echo'<div class="navBar"> 
    <ul> 
    <li><a href ="htmlfiles/history.php">History 
    </a></li> 
    <li><a href ="htmlfiles/started.php"> Get Started</a></li> 
    <li><a href ="htmlfiles/positions.php">Positions</a></li> 
    <li><a href ="htmlfiles/rules.php">Rules</a></li> 
    <li><a href ="htmlfiles/nationalleague.php">National League</a></li> 
    <li> <a href ="htmlfiles/extras.php">Extras</a> 
     <ul> 
      <li><a href="#">Videos</a> </li> 
      <li><a href="#">Plays</a> </li> 
      <li><a href="#">TBA</a> </li> 
     </ul> 
    </li> 
    </ul> 
</div>';?> 

eine Seite in meiner Website: (aboutUs.php)

<!DOCTYPE html> 
<html> 
<head> 
<link rel="stylesheet" href="styles.css" type="text/css" /> 
<script type="text/javascript" src="main.js"></script> 
<title> Water Polo, The Best Sport</title> 
<link rel="icon" type="image/png" href="img/favicon.ico" /> 
</head> 
<body> 
<div class="wrapper"> 
<?php 
include 'header.php' ; 
?> 
<?php 
include 'navbar.php' ; 
?> 
<div class= "content"> 
</div> 
<?php 
include 'footer.php' ; 
?> 
</div> 
</body> 
</html> 

die Ausgabe (ich bin schreiben nicht erlaubt direkte Bilder noch) Directory Structure

diesmal mit von der ../includes/header.php zeigte meine Seite etwas Hoffnung. Das einzige Problem war, dass die Includes nicht auf die css- und image-Dateien zugreifen konnten und etwa so aussahen: Sorry kann nicht zwei Bilder veröffentlichen, aber die neue Seite hatte keinen CSS-Einfluss und sah wie normaler Text aus.

+0

Was ist das Rrot-Verzeichnis? Vielleicht müssen Sie es einbeziehen. – cpugourou

+0

@sbswim können Sie uns Ihre Verzeichnisstruktur in Ihrem 'htdocs' Verzeichnis zeigen? Es gibt uns vielleicht einen Hinweis darauf, was vor sich geht. –

+0

Nur hinzugefügt es danke! @LionelChan – sbswim

Antwort

1

Wenn Sie MAMP verwenden, dann glaube ich, dass Sie Website-Dateien in einen Ordner namens www, bin ich richtig? Angenommen, das ist richtig. Sie haben einen Ordner für diese Website namens waterpolo-site, so sollten Sie die Website angezeigt werden durch diese Eingabe in Safari's address bar Lage:

localhost/waterpolo-site 

Safari-Adressleiste sollte angezeigt werden: http://waterpolo-site/index.html. Wenn das nicht stimmt, bitte korrigieren Sie mich. Normalerweise

(1), würden wir die Website-Struktur so:

example.com 
    - css 
     styles.css 
     bootstrap.min.css 
    - js 
     index.js 
     jquery.min.js 
     bootstrap.min.js 
    - img 
     logo.jpg 
     pic1.jpg 
     pic2.jpg 
     another_pic.jpg 
    - inc 
     connect.inc.php 
     head.inc.php 
     header.inc.php 
     footer.inc.php 
     nav.inc.php 
    index.php 
    about.php 
    history.php 
    positions.php 

Wenn Sie die Website Ordnerstruktur wie oben strukturieren, werden alle Pfade zu Dateien sind geradlinig: include "folder/file.ext" oder <link href="folder/file.ext"

(2) Die Datei head.inc.php könnte wie folgt aussehen:

<?php 
    session_start(); 
    include 'inc/connect.inc.php'; 
    //Any more PHP instructions here 
?> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <title>My Soccer Website</title> 
    <meta charset="utf-8" /> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <meta name="description" content="A description of my website goes here" /> 
    <meta name="keywords" content="soccer, football, hooligans, beer, beckham, stadium, scalpers" /> 
    <meta name="robots" content="index,follow" /> 

    <link rel="icon" type="image/png" href="img/favicon.png?v=2" /> 
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> 

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> 

    <link rel="stylesheet" type="text/css" href="css/index.css" /> 

    <link href="http://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet" type="text/css"> 
    <link href="http://fonts.googleapis.com/css?family=Lato" rel="stylesheet" type="text/css"> 
</head> 

(3) Beachten Sie, dass PHP-Code nur für PHP-Funktionen verwendet wird - Aufruffunktionen, Datenbanksuchen, Session-Start usw. Nachdem Sie das PHP-Tag ?> geschlossen haben, wird HTML ausgegeben, als wäre es eine .html Datei.

(4) Der Hauptunterschied zwischen einer Datei, die in Abhängigkeit von einer .php Enden, die in .html beendet ist, dass die PHP-Datei kann auch Prozess PHP-Befehle. Beide können HTML genau gleich verarbeiten. Es ist wirklich nicht notwendig, jemals die Dateiendung .html

zu verwenden. (5) Beachten Sie den kleinen Trick auf dem favicon. Wenn Sie eine Datei aktualisieren (css, js usw.) und möchten, dass Besucher die neue Datei anstelle einer zuvor abgerufenen Version im Cache ihres Browsers verwenden, können Sie einen ?xxx=yyy gefälschten GET-Parameter hinzufügen und presto! Sie werden die aktualisierte Version von Ihrem Server herunterladen.Beim nächsten Besuch können sie jedoch die Version aus dem Cache verwenden, wenn Sie diesen GET-Parameter nicht noch einmal ändern.

+0

Wofür wird das Dokument connect.inc.php verwendet? Muss der Befehl start session auch für das zu verarbeitende Include enthalten sein? Thanks – sbswim

+1

'connect.inc.php' enthält nur die db connect-Befehle, was zu einer Variable führt, die die db-Sitzung enthält. 'start_session()' muss nur auf der Seite sein, wenn Sie die 'serverseitige Variable' $ _SESSION ['varname]' verwenden. Beachten Sie, dass die '$ _SESSION'-Variable nichts mit Datenbanksitzungen zu tun hat - es ist ein dummer Name für diese Variable, ehrlich gesagt, aber sie haben mich damals nicht gefragt. – gibberish

+0

Vielen Dank, nachdem Sie einen Monat lang versucht haben, es herauszufinden! – sbswim

0

Die PHP-Include-Anweisung in die Datei relativ ist es durch Zugriff auf ...

Beispiel:

Wenn Sie die Website mit index.php Zugriff dann sein beinhaltet brauchen ...

include("includes/footer.php");

Wenn Sie die Seiten direkt zugreifen, zB: http://domain.com/htmlfiles/aboutUs.php dann die Bedürfnisse enthalten sein ...

include("../includes/footer.php");

Die Verwendung des Pfadpfads ../ entspricht dem Sprichwort in der Verzeichnisstruktur um eine Ebene nach oben gehen.

0

Wenn Sie include mit relativen Dateipfad tun, PHP finden Sie die Datei mit dem aktuellen Verzeichnis zuerst, und dann suchen Sie in den Include-Pfaden (Include-Pfade können über phpinfo() gefunden werden).

In Ihrem Fall Ihre footer.php, navbar.php und header.php alle in includes Verzeichnis befinden, aber Ihr aboutUs.php im htmlfiles Verzeichnis.

es zu beheben, können Sie dies tun:

aboutUs.php

include dirname(__DIR__) . '/includes/header.php'; 

Experience Diskussion: Wir in der Regel nicht include '../includes/header.php' tun, weil dieses Übel ist. Obwohl es auf den ersten Blick gut aussieht, wenn sich eine andere Datei in einem anderen Verzeichnis befindet, versuchen Sie, aboutUs.php einzuschließen, der relative Pfad wird sich ändern, und wieder wird Ihre Kopfzeile nicht gefunden. dirname(__DIR__) zu tun, ist „Ich mag die PHP suchen diese Datei relativ zum Verzeichnis der aktuellen Datei, und nicht andere Dateien“


Die include Anweisung, um sicherzustellen, ist sehr mächtig, wie es auch für andere verwendet werden kann, Dazu gehören beispielsweise ein Array aus einer anderen PHP-Datei (für Konfigurationen) oder sogar der Inhalt einer URL. Lesen Sie es :)