cvs: phpdoc-sv /chapters tutorial.xml
[email protected] ("Per Gustafsson") Sun, 28 Jul 2002 17:11:50 -0000
| Newsgroups | php.doc.sv |
|---|---|
| Message-ID | <cvsjome1027876310@cvsserver> |
jome Sun Jul 28 13:11:50 2002 EDT
Added files:
/phpdoc-sv/chapters tutorial.xml
Log:
New translation. Some proofread needed.
jome-20020728131150.txt
(text/plain, 16.4 KB)
Index: phpdoc-sv/chapters/tutorial.xml
+++ phpdoc-sv/chapters/tutorial.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.1 $ -->
<chapter id="tutorial">
<title>En enkel lektion i PHP</title>
<para>
Här följer en enkel lektion i vilken vi vill visa det mest
grundläggande i PHP. Texten behandlar bara skapandet av dynamiska
webbsidor även om PHP är kapabelt till mycket mer. Se kapitlet
<link linkend="intro-whatcando">Vad kan PHP göra?</link> för mer
information.
</para>
<para>
Webbsidor som behandlas av PHP-motorn fungerar precis som vanliga
HTML-sidor och du kan skapa och editera dem på samma sätt som med
vanliga HTML-sidor.
</para>
<sect1 id="tutorial.requirements">
<title>Vad behöver jag?</title>
<para>
Den här texten förutsätter att du har en server med PHP-stöd
installerad och aktiverad samt att alla filer som har
filtillägget <filename>.php</filename> behandlas av PHP.
På de flesta servrar är detta standard-tillägget för PHP-filer,
men fråga din systemadministratör om du inte är säker. Om din
server har stöd för PHP behöver du inte göra någonting mer, skapa
bara dina <filename>.php</filename>-filer och lägg dem i
din webbkatalog och sedan tar webbservern och PHP-motorn hand
om resten. Det finns ingen anledning att kompilerra något eller
installera några extra verktyg. Föreställ dig PHP-filer som
vanliga HTML-filer med en serie av magiska taggar som låter
dig för massor av saker.
</para>
</sect1>
<sect1 id="tutorial.firstpage">
<title>Din första PHP-sida</title>
<para>
Skapa en fil och döp den till <filename>hello.php</filename>,
lägg den sedan i din webbkatalog. Innehållet i filen ska
vara följande:
</para>
<para>
<example>
<title>Vårt första PHP-script: <filename>hello.php</filename></title>
<programlisting role="php">
<![CDATA[
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo "Hello World<p>"; ?>
</body>
</html>
]]>
</programlisting>
<para>
Utdatan från det här scriptet kommer bli:
<screen role="html">
<![CDATA[
<html>
<head>
<title>PHP Test</title>
</head>
<body>
Hello World<p>
</body>
</html>
]]>
</screen>
</para>
</example>
</para>
<para>
Notera att PHP-scriptet inte fungerar på samma sätt som ett
CGI-script. Filen behöver inte vara exekverbar eller skilja sig från
vanliga HTML-filer på något sätt var det gäller rättigheter eller
ägarskap. Du kan tänka dig PHP-filen som en vanlig HTML-fil fast
med ett antal specialtaggar med vilka du kan utföra mycket intressanta
saker.
</para>
<para>
Det här programmet är egentligen så simpelt att du inte skulle
behöva PHP för dess funktion. Allt scriptet gör är att
visa texten <literal>Hello World</literal> genom att anropa
PHP-funktionen <function>echo</function>.
</para>
<para>
Om du prövar det här exemplet och det inte skriver ut något, eller
du blir tillfrågad om du vill ladda ner filen, eller om du helt enkelt
ser hela filen som vanlig text är det risk att din webbserver inte
har PHP inlagt. Du kan då fråga din administratör, om han kan
installera det åt dig genom att läsa kapitlet som behandlar
<link linkend="installation">installation</link>. Om du vill
utveckla PHP-script lokalt behöver du <ulink url="&url.php.downloads;">ladda
ner</ulink> PHP. Du kan utveckla dina script på vilket operativ system
som helst, om du installerar en webbserver som fungerar med PHP.
</para>
<para>
Poängen med scriptet är att demonstrera hur PHP-taggar fungerar.
I det här exemplet använde vi <literal><?php</literal> för att
inleda PHP-koden. Sedan skrev vi vår kod och avslutade med
<literal>?></literal>. Du kan utan problem växla mellan HTML-
och PHP-kod hur mycket du vill i ditt dokument.
</para>
</sect1>
<sect1 id="tutorial.useful">
<title>Något användbart</title>
<para>
Nu ska vi göra något lite mer användbart än det tidigare. Vi ska
kontrollera vilken webbläsare besökaren av webbsidan använder.
För att göra det undersöker vi "user agent"-strängen som skickas
till webbservern av webbläsaren som en del av HTTP-förfrågan.
Den informationen finns lagrad i en
<link linkend="language.variables">variabel</link>. Variabler
inleds i PHP alltid med ett dollar-tecken. Variabeln vi behöver
nu är <varname>$_SERVER["HTTP_USER_AGENT"]</varname>.
</para>
<note>
<title>PHP Autoglobals-notering</title>
<para>
<link linkend="reserved.variables.server">$_SERVER</link> är en
speciell reserverad variabel i PHP som innehåller all
webbserverinformation. Den typen av variabel kallas för en
"autoglobal". Läs mer under sektionen <link
linkend="language.variables.superglobals">Autoglobals</link>
(även kallade superglobals). Dessa specialvariabler introducerades
i version 4.1.0 av PHP. Förut användes istället <varname>
$HTTP_*_VARS</varname>-arrayer såsom t.ex. <varname>
$HTTP_SERVER_VARS</varname>. Trots att anvädningen av dessa
variabler inte rekommenderas finns de fortfarande kvar.
</para>
</note>
<para>
För att skriva ut variabeln, skriver vi helt enkelt:
</para>
<para>
<example>
<title>Skriva ut en variabel (Array element)</title>
<programlisting role="php">
<![CDATA[
<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>
]]>
</programlisting>
<para>
A sample output of this script may be:
<screen role="html">
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
</screen>
</para>
</example>
</para>
<para>
Det finns många olika <link linkend="language.types">typer</link>
av variabler i PHP. I ovanstående exempel skrev vi ut ett
element från en <link linkend="language.types.array">array</link>.
Arrayer kan vara väldigt användbara.
</para>
<para>
<varname>$_SERVER</varname> är bara en av de variabler som automatiskt
finns tillgängliga i PHP. En lista på alla återfinns i kapitlet
<link linkend="reserved.variables">Reserverade variabler</link>, eller
så kan du skapa en lista med hjälp av följande PHP-kod:
</para>
<para>
<example>
<title>Visa alla fördefinerade variabler med <function>phpinfo</function></title>
<programlisting role="php">
<![CDATA[
<?php phpinfo(); ?>
]]>
</programlisting>
</example>
</para>
<para>
Om du tittar på den här filen i din webbläsare kommer du se
en sida full av information om PHP samt en lista med de
variabler som finns tillgängliga.
</para>
<para>
Du kan ha fler PHP-kommandon inom en PHP-tagg och skapa
små block av kod som gör mer än bara skriver ut text.
Om vi till exempel skulle vilja kontrollera om användaren
kör Internet Explorer skulle vi kunna göra så här:
</para>
<para>
<example>
<title>Exempel på hur man använder <link
linkend="control-structures">kontrollstrukturer</link>
och <link linkend="functions">funktioner</link></title>
<programlisting role="php">
<![CDATA[
<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
echo "You are using Internet Explorer<br />";
}
?>
]]>
</programlisting>
<para>
Ovanstående script skulle t.ex. kunna generera följande:
<screen role="html">
<![CDATA[
You are using Internet Explorer<br />
]]>
</screen>
</para>
</example>
</para>
<para>
Här ovan introducerade vi ett par nya begrepp. Det finns bland
annat en <link linkend="control-structures.if">if</link>-sats.
Om du är bekant med den grundläggande syntaxen i C bör det här
se logiskt ut. Om du inte kan C eller något språk med en liknande
syntax som den ovan bör du antagligen införskaffa en PHP-bok för
nybörjare och läsa åtminstone de första kapitlen. Alternativt kan
du läsa <link linkend="langref">Språkreferens</link>-delen av
manualen. En förteckning över PHP-böcker finner du på adressen
<ulink url="&url.php.books;">&url.php.books;</ulink>.
</para>
<para>
Det andra begreppet vi nu introducerat är funktionsanropet till
<function>strstr</function>. <function>strstr</function> är en inbyggd
funktion i PHP som söker i en sträng efter en annan sträng, i det här
fallet letar vi efter <literal>"MSIE"</literal> inuti
<varname>$_SERVER["HTTP_USER_AGENT"]</varname>. Om strängen hittas
returnerar funktionen &true; och om den inte hittas returneras &false;.
Om funktionen returnerar &true; blir även
<link linkend="control-structures.if">if</link>-satsen &true; och därmed
körs PHP-koden som omsluts av dess "måstaggar", det vill säga { och }.
Om inte, körs inte PHP-koden inom nämnda. Skapa gärna egna
<link linkend="control-structures.if">if</link>-satser som även kan
innehålla <link linkend="control-structures.else">else</link>, och
bekanta dig med funktioner som <function>strtoupper</function> och
<function>strlen</function>. Dess sidor i manualen innehåller alla
exempel på hur funktionerna används.
</para>
<para>
Vi ska nu gå ännu längre och demonstrera hur du kan växla mellan PHP
och HTML mitt i ett PHP-block:
</para>
<para>
<example>
<title>Att växla mellan PHP och HTML</title>
<programlisting role="php">
<![CDATA[
<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
?>
<h3>strstr must have returned true</h3>
<center><b>You are using Internet Explorer</b></center>
<?php
} else {
?>
<h3>strstr must have returned false</h3>
<center><b>You are not using Internet Explorer</b></center>
<?php
}
?>
]]>
</programlisting>
<para>
Det här scriptet skulle t.ex. kunna skriva ut följande:
<screen role="html">
<![CDATA[
<h3>strstr must have returned true</h3>
<center><b>You are using Internet Explorer</b></center>
]]>
</screen>
</para>
</example>
</para>
<para>
Istället för att använda PHP-funktionen echo för att skriva ut något,
växlade vi till HTML-läge och skrev ut vanlig HTML. Observera dock
att logiken i scriptet fortfarande finns kvar, bara ett av HTML-blocken
visas för användaren beroende på om <function>strstr</function> returnerade
&true; eller &false;; Med andra ord om strängen <literal>MSIE</literal>
hittades eller inte.
</para>
</sect1>
<sect1 id="tutorial.forms">
<title>Skapa formulär</title>
<para>
Av PHP's alla finesser är en av de mest kraftfulla dess hantering
av HTML-formulär. Grunden är att förstå att varje element i ett
HTML-formulär blir tillgängligt i ditt PHP-script. Läs gärna
kapitlet om <link linkend="language.variables.external">Externa
variabler i PHP</link> för mer information om hur man använder
formulär med PHP. Här är ett exempel med HTML-formulär:
</para>
<para>
<example>
<title>Ett enkelt HTML-formulär</title>
<programlisting role="html">
<![CDATA[
<form action="action.php" method="POST">
Your name: <input type="text" name="name" />
Your age: <input type="text" name="age" />
<input type="submit">
</form>
]]>
</programlisting>
</example>
</para>
<para>
Det är inget speciellt med det här formuläret. Det är ett vanligt
HTML-formulär utan några special-taggar. När användaren fyller
i det här formuläret och trycker på Skicka anropas
<filename>action.php</filename>. I den filen skulle du kunna ha något
liknande följande:
</para>
<para>
<example>
<title>Skriva ut data från ett formulär</title>
<programlisting role="php">
<![CDATA[
Hi <?php echo $_POST["name"]; ?>.
You are <?php echo $_POST["age"]; ?> years old.
]]>
</programlisting>
<para>
A sample output of this script may be:
<screen role="html">
<![CDATA[
Hi Joe.
You are 22 years old.
]]>
</screen>
</para>
</example>
</para>
<para>
Det borde vara uppenbart vad ovanstående gör. Det är inte mer
med det. Variablerna <varname>$_POST["name"]</varname> och
<varname>$_POST["age"]</varname> definerar automatiskt åt dig
av PHP. Tidigare använde vi autoglobalen <varname>$_SERVER
</varname>, nu använde vi istället autoglobalen <link
linkend="reserved.variables.post">$_POST</link> som innehåller
alla POST-data. Notera att <emphasis>metoden</emphasis> i
HTML-formuläret är satt till POST. Om vi istället skulle använt
metoden <emphasis>GET</emphasis> skulle formulär-datan finnas
i autoglobalen <link linkend="reserved.variables.get">$_GET</link>.
Du kan också använda <link linkend="reserved.variables.request">
$_REQUEST</link> om du inte bryr dig om varifrån din data kommer.
Den innehåller en mix av GET-, POST-, COOKIE-, och FILE-data.
Se även funktionen <function>import_request_variables</function>.
</para>
</sect1>
<sect1 id="tutorial.oldcode">
<title>Använda gammal kod i nyare versioner av PHP</title>
<para>
Nu när PHP har växt och blivit ett populärt scriptspråk har det
medfört att det finns många källor till PHP-kod på internet som
du kan använda i dina egna script. För det mesta har utvecklarna
av PHP försökt att göra det bakåt-kompatibelt så att script skrivna
i äldre versioner av PHP ska kunna köras utan förändringar i
nyare versioner, tyvärr är det inte alltid så idealiskt utan några
förändringar behövs oftast.
</para>
<para>
Två av de viktigaste av de senaste förändringarna som påverkar äldre kod är:
<itemizedlist>
<listitem>
<simpara>
Du rekommenderas inte längre att använda de äldre
<varname>$HTTP_*_VARS</varname>-arrayerna (som behövde deklareras
som globala om de användes i en funktion). Följande
<link linkend="language.variables.superglobals">autoglobala
arrayer</link> introducerades i PHP 4.1.0:
<varname>$_GET</varname>, <varname>$_POST</varname>,
<varname>$_COOKIE</varname>, <varname>$_SERVER</varname>,
<varname>$_ENV</varname>, <varname>$_REQUEST</varname>, and
<varname>$_SESSION</varname>. De äldre
<varname>$HTTP_*_VARS</varname>-arrayerna, t.ex. $HTTP_POST_VARS,
existerar fortfarande och har gjort det sen PHP 3.
</simpara>
</listitem>
<listitem>
<simpara>
Externa variabler registreras inte längre med automatik i det
globala "variablscopet". Med andra ord, från PHP
<ulink url="&url.php.release4.2.0;">4.2.0</ulink> har PHP-direktivet
<link linkend="ini.register-globals">register_globals</link> satts
till <emphasis>off</emphasis> som standard i &php.ini;. Du bör
istället använda de autoglobaler som nämnts ovan för att komma åt
datan. Äldre script, böcker och lektioner kan bygga på att
<link linkend="ini.register-globals">register_globals</link> är
påslaget. Om så är fallet kan du, t.ex. med adressen
<literal>http://www.example.com/foo.php?id=42</literal> använda
<varname>$_GET['id']</varname> istället för <varname>$id</varname>
för att komma åt värdet på id. <varname>$_GET['id']</varname> sätts
oavsett om <link linkend="ini.register-globals">register_globals</link>
är påslaget eller inte.
</simpara>
</listitem>
</itemizedlist>
För flera detaljer om dessa förändringar, se kapitlet om
<link linkend="language.variables.predefined">fördefinerade variabler</link>
och länkarna däri.
</para>
</sect1>
<sect1 id="tutorial.whatsnext">
<title>Vad händer nu?</title>
<para>
Med det du nu vet bör du kunna förstå det mesta av manualen och
även många exempelscript som finns tillgängliga i exempelrakivet.
Du kan också hitta andra exempel under länksektionen på adressen
<ulink url="&url.php.links;">&url.php.links;</ulink>.
</para>
</sect1>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->