Input

Webbrowseren

I de forgående kapitler har vi lært hvordan forskellige metoder i PHP fungerer. For at komme videre skal vi nu arbejde med input, og det kræver at vi anvender browseren og HTML.

Vi skal have oprettet to filer på webserveren:

  • input.html - skal bruges til at lave input med
  • output.php - skal bruges til at køre koden.

input.html og output.php

Læg mærke til at vi ikke lavet et korrekt HTML dokument, men kun selve den del der har betydning for at arbejde med PHP.

	
<form action="output.php" method="GET">
	Input: <input type="text" name="input">
	<input type="submit" >
</form>
	

Opret filen php_test.php i din www mappe. Filen skal have følgende indhold:


<?php
	$input = $_GET["input"];	
	echo "Dit input var: $input";
?>

Åbn browseren og vælg adressen: localhost eller 127.0.0.1. Så får du en oversigt over dine to filer

Dobbeltklik på input.html og indtast TEST:

Klik på Indsend:

Det som sker er, at browseren sender ordet TEST til serveren når man trykker på Indsend. Samtidig åbner browseren en ny side nemlig output.php. Det indstiller man i linien: <form action="output.php" method="GET">. Skulle Indsend aktivere andre sider skulle vi erstatte output.php med en anden PHP-side.

Det er det som gør PHP til et specielt og meget anvendeligt programmeringssprog er netop, at det er designet til web. Og det specielle er også at data bliver sendt til serveren, som så den kan behandle data.

GET vs POST

I vores eksempel har vi valgt at sende vores variabel ved hjælp af GET metoden. Det er den hurtigste og simpleste metode at anvende. Den har blot en ulempe. Prøv at kigge i adressefeltet, hvor der står: localhost/output.php?input=TEST. Vi kan altså på adresselinien læse vores sendte data.

Selve metoden kan læses i:

  • input.html i linien: <form action="output.php" method="GET">
  • output.php i linien: $input = $_GET["input"];

Det er altid at foretrække, med mindre de data vi sender ikke må være tilgængelige. Det glæder f.eks. kodeord, CPR-numre og andre vigtige, personlige eller hemmelige data. Hvis vi vil ændre metoden og gøre de sendte data usynlige, ændrer vi ordet GET i begge linier og erstatter dem med POST.

Fordelen ved at anvende GET er, at man kan gemme adresselinien og få fat i den samme side. Ved POST mister man disse informationer, og man starter ved indtastningssiden hver gang.

isset()

Metoden vi lige har set på kræver at vi har to dokumenter. Men det kan også lade sig gøre at have hele koden i samme dokument. Det kan man gøre med funktionen isset(). Det funktionen gør er, at den undersøger om noget en bestemt betingelse er opfyldt. Er den det, så køres de kommandoer der er indlejret i isset().

Lad os kigge på koden herunder


<form action="input2.php" method="GET">
Input: <input type="text" name="input">
<input type="submit" >
</form>

<?php
	if (isset($_GET["input"])) {
		echo "<hr>";
		$input = $_GET["input"];
		echo "Dit input var: $input";
	}	 
?>

Ved første gennemkørsel vises HTML koden, men PHP koden bliver ikke vist. PHP undersøger om serveren har en variabel der hedder input. Det har den jo ikke, for vi har ikke indtastet den endnu.

Lad os indtaste: TEST og trykke Indsend:

I det vi trykker Indsend, sender browseren variablen input til serveren, som åbner den den samme side igen (action="input2.php"). Når browseren læser siden, så:

  1. Viser den HTML koden
  2. isset() spørger serveren om der findes en variabel der hedder input
  3. Serveren svarer ja og leverer variablen tilbage til browseren
  4. isset() kører koden den har indlejret

Egentlig har vi her foregrebet det som næste kapitel handler - nemlig at vi kan køre kode hvis (if) visse betingelser er opfyldt.

Hvilken metode anvender vi.

I resten af materialet vil vi arbejde videre med 2 filer, simpelthen fordi det giver det største overblik.

I praksis vil man anvende en kombination af de to metoder, fordi man i nogle tilfælde vil have fordel af at lade en bruger blive på samme side. Det kan f.eks. være en loginside, hvor vi ikke ønsker at brugeren skal gå videre før han har brugt et gyldigt login - eller hans forsøg er spildt og vi sender ham videre til en anden side. Hvilket er en problemstilling vi senere vil programmere os ud af ;).