Avatar billede newcoder Nybegynder
26. januar 2006 - 15:46 Der er 18 kommentarer og
1 løsning

Validering af svar

Hey Experts,

Jeg er ved at lave en konkurrence hvor man skal svare på nogle spørgsmål via nogle radio-buttons. Jeg har bygget det hele op vha. et formmail script som sender svarene til en given email adresse.

Det hele fungerer sådan set fint nok, jeg mangler bare en lille feature: Jeg vil have scriptet til at finde ud af om svaret er rigtig og hvis ja så send mail og gå til tak.html, hvis forkert gå til tak.html.

Er der nogen der kan hjælpe med det?


konkurrence.html:

<form method=post action="feedback.php">

<b>Spørgsmål 1:</b><br>
Spørgsmål 1?
<br>
<input type="radio" name="Spørgsmål1" value="Svar1" checked> Svar1<br>
<input type="radio" name="Spørgsmål1" value="Svar1"> Svar2<br>
<input type="radio" name="Spørgsmål1" value="Svar1"> Svar3<br>


feedback.php:

<?

$SendFrom =    "Form Feedback <email@email.com>";
$SendTo =      "email@email.com";
$SubjectLine = "Svar";
$ThanksURL =  "tak.html";
$Divider =    "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";

$MsgBody = @gethostbyaddr($_SERVER["REMOTE_ADDR"]) . "\n$Divider\n";
foreach ($_POST as $Field=>$Value)
  $MsgBody .= "$Field: $Value\n";
$MsgBody .= "$Divider\n" . $_SERVER["HTTP_USER_AGENT"] . "\n";
$MsgBody = htmlspecialchars($MsgBody);  //make content safe

mail($SendTo, $SubjectLine, $MsgBody, "From: $SendFrom");
header("Location: $ThanksURL");
?>
Avatar billede dmdisco Nybegynder
26. januar 2006 - 16:26 #1
hvis valuen på begge radio'er er ens så er det jo lige meget hvad de svarer

men du kan bruge:

if ($_POST['$Spørgsmål1'] == "svar1") {
  // hurra du svarede rigtigt
  mail();
} else {
  print "desværre";
}
Avatar billede newcoder Nybegynder
26. januar 2006 - 16:36 #2
Undskyld det var en mindre tastefejl :)

Den skal selvfølgelig se således ud:

<input type="radio" name="Spørgsmål1" value="Svar1" checked> Svar1<br>
<input type="radio" name="Spørgsmål1" value="Svar2"> Svar2<br>
<input type="radio" name="Spørgsmål1" value="Svar3"> Svar3<br>

Lad os sige at 'Svar2' er korrekt..

Jeg glemte at nævne at der er flere spørgsmål.. se evt. http://www.froghead.dk/291contest/contest.html
Avatar billede dmdisco Nybegynder
27. januar 2006 - 10:09 #3
if ($_POST['$Spørgsmål1'] == "Streetwear" && $_POST['$Spørgsmål2'] == "Graffiti" && $_POST['$Spørgsmål3'] == "Svar2") {
  print "hurra du svarede rigtigt på alle spørgsmål";
  mail();
} else {
  print "desværre";
}
Avatar billede newcoder Nybegynder
30. januar 2006 - 14:29 #4
Det virker ikke...
Den printer 'desværre' allerde når siden er loaded..
Avatar billede newcoder Nybegynder
30. januar 2006 - 14:35 #5
Man skal vælge de 3 svar, udfylde sit navn/adresse, trykke send og komme til tak.html.. Har man svaret rigtigt printer vi "hurra" og sender mail og er der svaret forkert printer vi "desværre" og sender ikke nogen mail.
Avatar billede dmdisco Nybegynder
30. januar 2006 - 23:53 #6
du skal jo poste til siden med valideringen
Avatar billede newcoder Nybegynder
31. januar 2006 - 08:28 #7
ok dmdisco, du må altså lige hjælpe mig lidt, jeg er total newbie til php så hvis du gider at forklare mig lidt om hvad jeg skal gøre !? :)
Avatar billede dmdisco Nybegynder
31. januar 2006 - 09:08 #8
i din feedback.php skriver du
if ($_POST['$Spørgsmål1'] == "Streetwear" && $_POST['$Spørgsmål2'] == "Graffiti" && $_POST['$Spørgsmål3'] == "Svar2") {
  print "hurra du svarede rigtigt på alle spørgsmål";
$SendFrom =    "Form Feedback <email@email.com>";
$SendTo =      "email@email.com";
$SubjectLine = "Svar";
$ThanksURL =  "tak.html";
$Divider =    "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";

$MsgBody = @gethostbyaddr($_SERVER["REMOTE_ADDR"]) . "\n$Divider\n";
foreach ($_POST as $Field=>$Value)
  $MsgBody .= "$Field: $Value\n";
$MsgBody .= "$Divider\n" . $_SERVER["HTTP_USER_AGENT"] . "\n";
$MsgBody = htmlspecialchars($MsgBody);  //make content safe

mail($SendTo, $SubjectLine, $MsgBody, "From: $SendFrom");
} else {
  print "desværre";
}

hvis du vil bruge din header til at smide brugeren til tak.html så kan du ikke udskrive noget først derfor skal hurra fjernes
Avatar billede dmdisco Nybegynder
31. januar 2006 - 09:09 #9
hvis det ikke virker med æ, ø, å så prøv at ændre dem til ae, oe, aa
Avatar billede newcoder Nybegynder
31. januar 2006 - 09:23 #10
Helt sikkert.. så kan jeg forstå, hehe!

Der skal slet ikke være noget hurra og forkert, for brugeren må ikke vide om han har svaret rigtig eller forkert, de skal bare sendes til tak.html med det samme... og så skal mailen kun sendes hvis svarene er rigtige...
Avatar billede newcoder Nybegynder
31. januar 2006 - 09:25 #11
har iøvrigt opdateret med lidt fler spørgsmål her http://www.froghead.dk/291contest/contest.php
Avatar billede newcoder Nybegynder
01. februar 2006 - 07:24 #12
dm?
Avatar billede dmdisco Nybegynder
01. februar 2006 - 08:31 #13
du indsætte bare de sidste af de variabler fra din formular i den if sætning
if ($_POST['$Spoergsmaal1'] == "Streetwear" && $_POST['$Spoergsmaal2'] == "Graffiti" && ....... osv.
Avatar billede newcoder Nybegynder
01. februar 2006 - 13:13 #14
yes det ved jeg.. men det virker ik.. den siger 'desværre' hver gang :(

Btw. der skal slet ikke være noget hurra og forkert, for brugeren må ikke vide om han har svaret rigtig eller forkert, de skal bare sendes til tak.html med det samme... og så skal mailen kun sendes hvis svarene er rigtige...

- kan du hjælpe mig med det?
Avatar billede newcoder Nybegynder
01. februar 2006 - 14:06 #15
feedback.php ser således ud:

<?
if ($_POST['$Spørgsmål1'] == "42" && $_POST['$Spørgsmål2'] == "girlswear" && $_POST['$Spørgsmål3'] == "11" && $_POST['$Spørgsmål4'] == "2500" && $_POST['$Spørgsmål5'] == "streetwear") {
  print "hurra du svarede rigtigt på alle spørgsmål";


$SendFrom =    "Konkurrence <froghead@gmail.com>";
$SendTo =      "froghead@gmail.com";
$SubjectLine = "Svar";
$ThanksURL =  "tak.html";
$Divider =    "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";

$MsgBody = @gethostbyaddr($_SERVER["REMOTE_ADDR"]) . "\n$Divider\n";
foreach ($_POST as $Field=>$Value)
  $MsgBody .= "$Field: $Value\n";
$MsgBody .= "$Divider\n" . $_SERVER["HTTP_USER_AGENT"] . "\n";
$MsgBody = htmlspecialchars($MsgBody);

mail($SendTo, $SubjectLine, $MsgBody, "From: $SendFrom");
header("Location: $ThanksURL");
mail($SendTo, $SubjectLine, $MsgBody, "From: $SendFrom");

} else {
  print "desværre";
}


?>
Avatar billede newcoder Nybegynder
01. februar 2006 - 14:08 #16
den hverken sender eller tjekker korrekt..
Avatar billede dmdisco Nybegynder
01. februar 2006 - 15:10 #17
jeg kan ikke huske om postdata er ligeglad med æøå men ellers kan du ændre navnene på form felterne og derefter variablerne heri (eks. $_POST['æøå'] til $_POST['aeoeaa'])

<?
if ($_POST['$Spørgsmål1'] == "42" && $_POST['$Spørgsmål2'] == "girlswear" && $_POST['$Spørgsmål3'] == "11" && $_POST['$Spørgsmål4'] == "2500" && $_POST['$Spørgsmål5'] == "streetwear") {


$SendFrom =    "Konkurrence <froghead@gmail.com>";
$SendTo =      "froghead@gmail.com";
$SubjectLine = "Svar";
$ThanksURL =  "tak.html";
$Divider =    "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";

$MsgBody = @gethostbyaddr($_SERVER["REMOTE_ADDR"]) . "\n$Divider\n";
foreach ($_POST as $Field=>$Value)
  $MsgBody .= "$Field: $Value\n";
$MsgBody .= "$Divider\n" . $_SERVER["HTTP_USER_AGENT"] . "\n";
$MsgBody = htmlspecialchars($MsgBody);

mail($SendTo, $SubjectLine, $MsgBody, "From: $SendFrom");
mail($SendTo, $SubjectLine, $MsgBody, "From: $SendFrom");
}
header("Location: $ThanksURL");

?>
Avatar billede newcoder Nybegynder
01. februar 2006 - 16:27 #18
Hm.. nu ryger jeg på en "You are not authorized to view this page".. og den sender stadig ik.. ..
Avatar billede newcoder Nybegynder
16. februar 2006 - 09:44 #19
jeg har fundet en anden løsning nu, ellers tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel