Programmera i PHP/PHP i externa filer
Include
[redigera]PHP-kod som skall användas i en sida läggs normalt sett in i en hemsida topp, innan någonting annat skrivits in:
<?php
$enVariabel=10;
?>
<html>
<head>
(osv ...)
Har man ett långt kodstycke som skall användas på mer än en sida kan det vara vettigare att lägga koden i en egen fil som har .php som filslut. Den länkas in genom att man anger var filen finns i förhållande till hemsidan:
<?php
include("externFil.php");
$enVariabel=10;
?>
Skall man ha flera olika filer lägger man bara till dem:
<?php
include("externFil.php");
include("enAnnanExternFil.php");
$enVariabel=10;
?>
Underkatalog
[redigera]Ligger filen i en underkatalog skriver man t.ex.:
<?php
include("./externascript/externFil.php");
$enVariabel=10;
?>
Alternativt:
include($_SERVER['DOCUMENT_ROOT'] . '/externascript/externFil.php');
(Du kan alltid se dokumentroten med: echo $_SERVER; )
Det kan dock uppstå problem beroende på vilken webserver som används och om serveradministratören gjort interna ompekningar av kataloger. Ett fulare sätt som alltid fungerar är att ange den plats htmlfilen finns som root och sedan ange länken till underliggande kataloger från den. T.ex.:
<?php
$minSidasRoot_dir = 'http://www.minSida.com';
include $minSidasRoot_dir.'/externascript/externFil.php'; ?>
?>
Koden förutsätter att du har en underkatalog som heter include och att filen externFil.php ligger just där. En extra
fördel med det här sättet att skriva kod är att du kan göra resten av koden oberoende av vilken server den ligger på. Om du skulle vilja dela med dig av den, genom att konsekvent ange alla länkar som:
<a href="{$minSidasRoot_dir}/sidnamn.php">Klicka för att visa sidnamn.php</a>
Require
[redigera]Vad händer om det blivit något stavfel i filnamnet och HTML-sidan inte hittar filen? Det som händer är att hela sidan visas upp, men utan det som scripten i den externa php-sidan skulle visa upp. Om man inte vill visa upp sidan med felaktigheter kan man skriva require istället för include:
<?php
require("externFil.php");
$enVariabel=10;
?>
Det som händer är att ett varningsmeddelande visas upp istället för sidan. Detta är egentligen den bästa vägen att gå. Speciellt om sidan är databasbaserad och man har alla uppgifterna om hur man kontaktar databasen i en extern fil. Då är det lika bra att sidan inte visas alls om inte databasen går att öppna. Du får bara en hel drös felmeddelanden i alla fall.