@ibrakadabra: Ska se om jag kan hjälpa dig bena ut vad koden gör.
Säg att du har en fil som heter 'index.php' och den innehåller följande kod:
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect value of input field
$name = $_REQUEST['fname'];
if (empty($name)) {
echo "Name is empty";
} else {
echo $name;
}
}
?>
</body>
</html>
Om vi börjar med form delen:
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
method="post" - anger vilken metod som ska användas för anropet man gör när man skickar formuläret, dvs när man klickar på submit. I detta fallet ska en 'post' begäran skickas, vilket är det vanliga när man ska skicka information, man postar det.
action="<urladress>" - action avser vart du vill skicka informationen, till vilken adress/fil
echo $_SERVER['PHP_SELF']; - står inom php-taggar och körs således bara på servern och det den gör är att ta fram filnamnet i vilken koden befinner sig i. Den tar alltså filnamnet från 'SELF' - sig själv. Och eftersom filen som koden ligger i heter 'index.php' är det detta som returneras. echo - betyder att den ska skriva ut resutatet i klartext i html-koden. Om användaren tittar på koden i sin webläsare kommer hen att se: action="index.php"
<input type="text" name="fname"> - Här gör vi ett fält som heter 'fname' och som innehåller text
Nästa del i koden körs endast om sidan anropas av en post-begäran, det normala när man tex klickar på länkar och skriver in adresser i webläsaren är att en GET-begäran skickas. Det finns fler sorters anrop men dom struntar vi i nu
Säg att vi klickar på skicka i formuläret, då används det vi angett i <form>dvs metoden 'post' och anropet skickas till action, som var 'index.php', dvs samma fil som vi redan är i.
Nu har vi ju begärt att få samma fil igen, 'index.php' MEN denna gången har vi begärt att få den med metoden 'post' istället för 'get', och då kickar denna kodsnutten in:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect value of input field
$name = $_REQUEST['fname'];
if (empty($name)) {
echo "Name is empty";
} else {
echo $name;
}
}
Vi går igenom den:
if ($_SERVER["REQUEST_METHOD"] == "POST") { - översatt blir detta typ: 'om anropsmetoden är post' och det är den ju när vi klickat på submit. Här använder vi inte echo eftersom inget ska skrivas ut till HTML, vi vill bara läsa av den.
$name = $_REQUEST['fname']; - I '$_REQUEST' lagras all data från fälten i formuläret och i detta fallet vill vi lagra datan från fältet 'fname' i formuläret, i en variabel som heter '$name'.
if (empty($name)) { - Detta betyder 'om $name är tomt'
echo "Name is empty"; - Detta skriver ut "Name is empty" till HTML-koden så vi kan se den.
echo $name; - Och detta skriver ut innehållet i '$name' vilket ju är detsamma som i '$_REQUEST['fname']' vilket i sin tur är det samma som innehållet i inputfältet 'fname' från formuläret
Hoppas det klarnade lite!