---
title: "Knasig form"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/101070-knasig-form"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "aasah"
published: "2004-04-06T17:20:27.000Z"
updated: "2004-04-11T09:11:12.000Z"
replies: 7
views: 398
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/101070-knasig-form"
---

# Knasig form

## #1 — aasah, 2004-04-06T17:20Z

Hej!

Håller på att lära mig PHP. Enligt min bok kan man lägga form och hanterande kod i samma fil. Rent generellt undrar jag om det finns några fördelar med det jämfört med att ha en html-sida med formen och en php-sida som tar hand om datat?

Dessutom får jag ett mycket mysko utseende på formen när jag testar ett exempel i boken. (Inte riktigt bokens ex, tyckte det var lite väl stort.) Men, jag försöker skaffa mig en form som ser ut ung så här:

Namn *Textfält*
Födelseår *Textfält*
Ålder *Textfält*

När skriptet laddas första gången ska alla fält vara tomma. Men det är de inte!! Alla fält ligger på samma rad och innehåller texten: 

\<BR

???  :q Var kommer det ifrån??

```
<html>
<HEAD>
<title>Posten tas om hand av mig själv</title>
</head>

<?php //Genererar en form OCH tar hand om resultatet

error_reporting(E_ALL);

if (!isSet($_POST["koll"])) {
   $_POST["namn"] = "";
   $_POST["fodAr"] = "";
   $_POST["alder"] = "";
   $alder = "";
}
else {
   if (!isSet($_POST["namn"])) $_POST["namn"] = "Ej ifyllt!";
   else $namn = $_POST["namn"];
   if (!isSet($_POST["fodAr"])) $_POST["fodAr"] = "Ej ifyllt!";
   else {
      $fodAr = $_POST["fodAr"];
      $alder = 2004 - $fodAr;
   }
}
?>

<body>

<h1>Hur gammal är du?</h1>
Fyll i namn och födelseår så räknar vi ut åldern!

<form name = "Test" action = <?php echo $_SERVER["PHP_SELF"]; ?> method = "post">
<BR>Namn: <Input type = "text" name = "namn" value = <?php echo $_POST["namn"]; ?>
<BR>Födelseår: <Input type = "text" name = "fodAr" value = <?php echo $_POST["fodAr"]; ?>
<BR>Ålder: <Input type = "text" name = "alder" value = <?php echo $alder; ?>
<BR><Input type = "hidden" name = "koll" value = 1>
<BR><Input type ="Submit" name = "Räkna!" value = "Räkna!">
</form></body></html>
```

Permalänk: https://www.webforum.nu/p/101070

## #2 — Peeer, 2004-04-06T17:29Z

> **aasah skrev:**
>
> Rent generellt undrar jag om det finns några fördelar med det jämfört med att ha en html-sida med formen och en php-sida som tar hand om datat?

Om du vid en kontroll upptäcker att ett nödvändigt fält inte är ifyllt, så kan du automatiskt fylla i fälten som besökaren fyllde i innan han/hon postade formuläret samt upplysa henne/honom om att fältet X inte var ifyllt.

Du har glömt att avsluta dina inputfält, prova dessutom att sätta fnuttar runt value, dvs

```
<BR>Namn: <Input type = "text" name = "namn" value ="<?php echo $_POST["namn"]; ?>">
```

osv..

Permalänk: https://www.webforum.nu/p/1317908

## #3 — aasah, 2004-04-06T17:55Z

> **Peeer skrev:**
>
> > **aasah skrev:**
> >
> > Rent generellt undrar jag om det finns några fördelar med det jämfört med att ha en html-sida med formen och en php-sida som tar hand om datat?
>
> Om du vid en kontroll upptäcker att ett nödvändigt fält inte är ifyllt, så kan du automatiskt fylla i fälten som besökaren fyllde i innan han/hon postade formuläret samt upplysa henne/honom om att fältet X inte var ifyllt.

Aaah! Det var verkligen ett UTMÄRKT skäl! Jag som trodde att en sådan koll endast kunde göras mha Javascript.

Går det att fylla i värdet i en vald radiobutton på detta sätt? :q

Och tack för felsökningen! :) Att jag inte såg att \> saknades!
Blev dock ingen skillnad om jag satte ":r runt value eller ej. Men php returnerar ju en string så varför borde det bidra?

Permalänk: https://www.webforum.nu/p/1317926

## #4 — @nders, 2004-04-06T18:02Z

> Går det att fylla i värdet i en vald radiobutton på detta sätt?

Absolut. :)

> Blev dock ingen skillnad om jag satte ":r runt value eller ej. Men php returnerar ju en string så varför borde det bidra?

Det har inte med php att göra att du bör ha citationstecken runt dina fältvärden i html, utan det är för att rätt värden skall visas i fältet och skickas vidare. Kika på detta:

```
<input type="text" value=jag heter sören>
```

Eftersom inte *jag heter sören* omsluts av citationstecken, tolkas endast *jag* som fältets värde, och *heter* samt *sören* är två skumma attribut som inte alls html-tolken känner igen.

Man brukar läsa att man skall använda citationstecken (eller apostrofer, det fungerar ju det med) om fältvärdet innehåller andra tecken än a-z och 0-9.

Mvh

Permalänk: https://www.webforum.nu/p/1317928

## #5 — Matte, 2004-04-06T20:19Z

Tag för vana att **alltid** omge värdet för value med citationstecken.

Och skulle det finnas minsta risk att en eventuell variabel du lägger in i value innehåller citationstecken, kör då värdet genom htmlentities:

```php
... value ="<?php echo htmlentities($_POST["namn"], ENT_QUOTES); ?>">
```

 
ENT_QUOTES är inte nödvändigt här, men du kan gärna ta med det som en vana ifall du någon gång skulle omge ditt värde med apostrofer istället för citationstecken.

Permalänk: https://www.webforum.nu/p/1317992

## #6 — aasah, 2004-04-08T12:05Z

> **@nders skrev:**
>
> ...
>
> > Blev dock ingen skillnad om jag satte ":r runt value eller ej. Men php returnerar ju en string så varför borde det bidra?
>
> Det har inte med php att göra att du bör ha citationstecken runt dina fältvärden i html, utan det är för att rätt värden skall visas i fältet och skickas vidare. Kika på detta:
>
> ```
> <input type="text" value=jag heter sören>
> ```
>
> Eftersom inte *jag heter sören* omsluts av citationstecken, tolkas endast *jag* som fältets värde, och *heter* samt *sören* är två skumma attribut som inte alls html-tolken känner igen....

Låter ju mycket rimligt... men varför fick då mina textfält värdet "\<BR" i stället för "" (tom sträng)?? Det var ju precis motsvarighaten till *jag heter Sören*.... :q

htmlentities - Vad gör den?  :q

Permalänk: https://www.webforum.nu/p/1318769

## #7 — Matte, 2004-04-09T20:21Z

Du lägger in text i din value.

Om denna kod har ett citationstecken i sig så kommer din value att avslutas. 
För att fortsätta med tidigare exempel, anta att du har ett citationstecken runt heter. Då får du följande i ditt formulär:

```
<input type="text" value="jag "heter" sören">
```

 
Här kommer värdet endast att bli 'jag '.
Ännu värre kunde det blivit om du t.ex haft med "\> i texten du la in i value.

Med htmlentities byter du ut ett antal tecken, däribland citationstecknet, mot sina motsvarande entiteter. Med htmlentities skulle koden ovan istället blivit:

```
<input type="text" value="jag &amp;quot;heter&amp;quot; sören">
```

 
Men användaren skulle se citationstecken, och det skulle även postas som citationstecken.

Det är därför en kod vana att alltid köra värden man tänker lägga in i ett formulär genom htmlentities.

Permalänk: https://www.webforum.nu/p/1318912

## #8 — aasah, 2004-04-11T09:11Z

Tack, Matte! :)

Kan tyvärr inte acceptera ditt svar också...

Permalänk: https://www.webforum.nu/p/1319282

---

Tråden på webben: https://www.webforum.nu/amne/php/101070-knasig-form
