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>&lt;?php</literal> för att
    inleda PHP-koden. Sedan skrev vi vår kod och avslutade med
    <literal>?&gt;</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
-->