webForumDet fria alternativet

Utskrift av "värdet" i checkbox

17 svar · 665 visningar · startad av peroerik

peroerikMedlem sedan juni 200827 inlägg
#1

Jag försöker lösa ett problem med att skicka ett ifyllt formulär som MIME HTML-mail.
Jag får iväg mailet och allt ser bra ut. Vanliga testfält är ifyllda men jag lyckas inte hitta syntaxen för att få checkboxes att visa ifyllda resp tomma beroende på vad som fyllts i.

Jag är en PHP-klipp och klistrare som försöker lära mig PHP.

Förslag till hur det bör vara efterlyses.

Mitt ifyllnadsformulär. (Utdrag ur PHP-script)
-------------
.
.

<table>
<tr><td>Förnamn:</td><td>Efternamn:</td><td>e-post:</td></tr>
<tr><td><input type="Text" name="FornamnE" required="Yes" size="20" maxlength="20" tabindex="7"> </td>
<td><input type="Text" name="EfternamnE" required="Yes" size="20" maxlength="20" tabindex="8"></td>
<td><input type="Text" name="e-postE" required="Yes" size="30" tabindex="9"></td>
</table>

<table width="100%" cellspacing="2" cellpadding="2" border="0">
<thead><tr>

\<th width="25"\>Kurs\</th\>
\<th width="8" align="center"\>Medlem\</th\>
\<th width="11" align="center"\>Ej&nbsp;medlem\</th\>
\<th width="30"\>Veckodag\</th\>
\<th width="10"\>Startdatum\</th\>

</tr></thead>
<tr>
<th width="25">Hantverk m.m.</th>
</tr>
<tr>
<td>Möbelklädsel</td>
<td><input type="checkbox" name="chk1" value=""></td>
<td><input type="checkbox" name="chk2" value=""></td>
<td>Onsdag kl 09.30</td>
<td>17 sept</td>
<td></td>
</tr>
.
.
----------

Och här utdrag ur det script som skickar mailet:

----------
.
.
<table>
<tr><td>Förnamn:</td><td>Efternamn:</td><td>e-post:</td></tr>
<tr><td><input type="Text" name="FornamnE" value="' . $_POST["FornamnE"] . '" size="20"></td>
<td><input type="Text" name="EfternamnE" value="' . $_POST["EfternamnE"] . '" size="20"></td>
<td><input type="Text" name="e-postE" value="' . $_POST["e-postE"] . '" size="30"></td>
</table>

<table width="100%" cellspacing="2" cellpadding="2" border="0">
<thead><tr>

\<th width="25"\>Kurs\</th\>
\<th width="8" align="center"\>Medlem\</th\>
\<th width="11" align="center"\>Ej&nbsp;medlem\</th\>
\<th width="30"\>Veckodag\</th\>
\<th width="10"\>Startdatum\</th\>

</tr></thead>
<tr>
<th width="25">Hantverk m.m.</th>
</tr>
<tr>
<td>Möbelklädsel</td>
<td><input type="checkbox" value=' . $_POST["chk1"] .'></td>
<td><input type="checkbox" value=' . $_POST["chk2"] .'></td>
<td>Onsdag kl 09.30</td>
<td>17 sept</td>
<td></td>
</tr>

.
.
---------

Vad saknas? Vad är fel?
Tacksam för lite hjälp.

HiDensityMedlem sedan dec. 20051 420 inlägg
#2

Alltså, missar jag nåt eller saknar du en <form>.
Hur skickar du det ifyllda formuläret från användaren (html) till servern (php)?

Vet inte om du är i rätt sektion här. Allt du klistrade in är ju html utom ett par php-variabler.

off-topic: klistra aldrig in en $_POST rakt in i html-koden. Lägg över den i en vanlig php-variabel och kör htmlentities() på den, annars riskerar du att någon haxxar din sida.

peroerikMedlem sedan juni 200827 inlägg
#3

Förtydligande

Som jag skrev i första inlägget i denna tråd så visar jag UTDRAG ur min kod.
Det finns form-tag och jag skickar iväg datat med Mail().
Jag skickar alltå iväg ett MIME mail med ett ifyllt formulär där textrutorna blir OK men checkboxarna blir tomma.
Det som inte fungerar är att få iväg checkboxes ifyllda.
Antingen så deklarerar jag dem fel i fil 1 eller så tar jag hand om dem på fel sätt i fil 2 eller så gör jag fel på båda ställena.

Hela koden är för omfattande för att läggas in här.

TroxyMedlem sedan mars 20041 505 inlägg
#4

Om du inte visar PHP-koden som skickar iväg mailet så är det svårt för oss att hjälpa dig.

PeddaMedlem sedan juni 20006 032 inlägg
#5

När du skriver php kod så måste du alltid omsluta med php taggarna.
Ett exempel på ett ställe där du gör fel

<td><input type="checkbox" value=' . $_POST["chk2"] .'></td>

Ska vara:

<td><input type="checkbox" value="<?php echo $_POST['chk2']; ?>"></td>

Om en checkbox inte har något värde satt inom value så skickas värdet 'on' när checkboxen är ibockad.

peroerikMedlem sedan juni 200827 inlägg
#6

Hur testar jag då på värdet 'on' för att få det utskrivet som en bock i en ruta i mitt MIME mail?
För den som vill se en mer komplett kod hänvisar jag till en tidigare tråd här med rubriken: "Problem att skicka ifyllt formulär som HTML-mail "

Den del där jag använder $_POST ligger ju i en sträng av HTML-kod som skickas som mail. För att få textfält att fungera i ett sådant sammanhang används en punkt före resp. efter variabel.

Jag kan inte skicka med PHP-kod i mailet eftersom PHP måste exekveras på servern.

HiDensityMedlem sedan dec. 20051 420 inlägg
#7

peroerik skrev:

Som jag skrev i första inlägget i denna tråd så visar jag UTDRAG ur min kod.
Det finns form-tag och jag skickar iväg datat med Mail().
Jag skickar alltå iväg ett MIME mail med ett ifyllt formulär där textrutorna blir OK men checkboxarna blir tomma.
Det som inte fungerar är att få iväg checkboxes ifyllda.
Antingen så deklarerar jag dem fel i fil 1 eller så tar jag hand om dem på fel sätt i fil 2 eller så gör jag fel på båda ställena.

Hela koden är för omfattande för att läggas in här.

Om allt som inte fungerar är ifyllda checkboxes så har det ju ingenting med php att göra? Eller är det så att du har testat att skapa ett statiskt formulär som fungerar? Men när du försöker göra samma sak med php-variabler så blir det fel?

Mer information tack.

och åter igen, din kod är inte säker om du inte hanterar eventuella html-tecken i $_POST-variablen.

peroerikMedlem sedan juni 200827 inlägg
#8

Jag skickar iväg ett formulär som fyllts och det fungerar utmärkt att få in det som användaren skrivit i testfälten men alla checkboxes blir tomma i mailet.

Kolla koden i tråden "Problem att skicka ifyllt formulär som HTML-mail" den är komplett. Består av 2 st PHP-filer.

HiDensityMedlem sedan dec. 20051 420 inlägg
#9

peroerik skrev:

Jag skickar iväg ett formulär som fyllts och det fungerar utmärkt att få in det som användaren skrivit i testfälten men alla checkboxes blir tomma i mailet.

Läs min fråga igen, och försök svara.

HiDensity skrev:

Eller är det så att du har testat att skapa ett statiskt formulär som fungerar? Men när du försöker göra samma sak med php-variabler så blir det fel?

..

En annan sak:

peroerik skrev:

<td><input type="checkbox" value=' . $_POST["chk1"] .'></td>
<td><input type="checkbox" value=' . $_POST["chk2"] .'></td>

Du har missat citationstecken kring värdet i value.

och åter igen, din kod är inte säker om du inte hanterar eventuella html-tecken i $_POST-variabeln. Nuvarande kod kan användas för att skicka skadlig kod.

PeddaMedlem sedan juni 20006 032 inlägg
#10

Du får kolla om fälten skickas med och om dom finns med så får du sätta checkboxarna till checked.
Fortsätter med chk2 som exempel:

<?php 
if(isset($_POST['chk2'])) {
	$checkstate = " checked";
}
?>
<td><input type="checkbox" name="chk2"<?php echo $checkstate; ?>></td>

/red
Såg nu att du hänvisade till en annan tråd och där såg jag att du hade htmlkoden i en variabel, så min kod kan du glömma. Jag får skriva om den.

peroerikMedlem sedan juni 200827 inlägg
#11

Säkerheten tänker jag mig att bygga in när jag ser att jag kan få grundläggande funktionalitet. Jag håller på att försöka lära mig detta med PHP. Jag får ta en sak i taget.
Beträffande vad jag åstadkommit som jag tycker fungerar framgår förhoppningavis av koden i den tråd jag nyss hänvisade till.
OK?

HiDensityMedlem sedan dec. 20051 420 inlägg
#12

peroerik skrev:

Säkerheten tänker jag mig att bygga in när jag ser att jag kan få grundläggande funktionalitet.

Det du kallar "grundläggande funktionalitet" kallar jag att "bygga fel från grunden". Ska du koda php är det likabra du lär dig att koda rätt från början, annars lär du fortsätta göra fel även efter att du har lärt dig "grundläggande funktionalitet".

Pedda har svaret på dina problem. (y)

peroerikMedlem sedan juni 200827 inlägg
#13

Tack Pedda,
nu har jag ett nytt uppslag att testa vidare med.
Återkommer om det inte löser mitt problem.

PeddaMedlem sedan juni 20006 032 inlägg
#14
if(isset($_POST['chk1'])) {
    $checkstate1 = " checked";
} 

if(isset($_POST['chk2'])) {
    $checkstate2 = " checked";
} 

$html_content='
// din html kod här...

<tr>
<td>Möbelklädsel</td>
<td><input type="checkbox" name="chk1"' . $checkstate1 . '></td>
<td><input type="checkbox" name="chk2"' . $checkstate2 . '></td>
<td>Onsdag kl 09.30</td>
<td>17 sept</td>
<td></td>
</tr>

// mer av din html kod här ';

I ditt formulär kan du ta bort value="" eftersom det är tomt.

peroerikMedlem sedan juni 200827 inlägg
#15

HighDensity.
Som jag sagt inledningsvis är jag nybörjare och till största delen en klipp och klistra PHP-are. Jag behöver bra exempel att studera för att lära.
Försöker hitta något bra att läsa men har ännu inte funnit något riktigt bra.

Jag har dock 45 års erfarenhet inom IT och sysslade med programmering redan på 60-talet, men jag har aldrig sysslat med web-programmering.

HiDensityMedlem sedan dec. 20051 420 inlägg
#16

peroerik skrev:

Försöker hitta något bra att läsa men har ännu inte funnit något riktigt bra.

Då ska du få ett tips: Säkerhet i PHP

peroerikMedlem sedan juni 200827 inlägg
#17

Tack jag ska följa ditt tips!

peroerikMedlem sedan juni 200827 inlägg
#18

Stort TACK Pedda, Du löste mitt akuta problem. Nu ska jag ta mig an säkerheten.

139 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)