[OT] programming question

Toby Corkindale tjc at wintrmute.net
Thu Apr 26 14:01:31 BST 2007


David Precious wrote:
> Nicholas Clark wrote:
>> On Thu, Apr 26, 2007 at 09:30:36AM +0100, David Precious wrote:
>>> Nicholas Clark wrote:
>>>> Say I'm trying to write a web based quiz. Multiple guess.
>>>> What I think I want to do is have my backend take the list of 
>>>> possible answers
>>>> and display them in random order. My HTML form has $n radio buttons, 
>>>> with $n
>>>> form parameter options, and (obviously) only one is correct.
> 
>>> How are you storing the questions/answers? 
>>
>> Currently a text file, question then 5 answers.
> 
>> I think that how I store them is irrelevant here, providing that the
>> constraint holds that I don't want to assign answers individual IDs,
>> and I don't particularly want to have to manually randomise each 
>> question's
>> answers' master order. Which ends up with "a particular master order 
>> number
>> is correct" which for the sake of argument is 1. So the flag currently is
>> "1".
> 
> 
> Fair one.
> 
> 
>  > But as I see it, whatever happens storage side if I present the 
> answers in
>> randomised order, and I also don't wish to maintain sessions or store
>> server-side state across each and every question issued, then I have 
>> to have
>> some way of remembering client side what order I presented questions 
>> in the
>> client, without the client being able to trivially reverse it out. (I can
>> verify that the client passes back something truthful by also saving a 
>> hash
>> my-secret-appended-to-the-client-state - that's not really a problem)
> 
> Could you just have the client send back the answer as the value, then 
> check whether that answer matches the first answer in the file for that 
> question?
> 
> So, HTML output looking like:
> 
> <input type="radio" name="answer" value="Answer one">Answer one <br />
> <input type="radio" name="answer" value="Answer two">Answer two <br />
> <input type="radio" name="answer" value="A camel">A camel <br />
> 
> You can randomise them no problems, and if the answer you get back as 
> the value of the answer param matches the first answer in the file, it's 
> correct.  That way, the only way to know what the correct answer is, is 
> to, er, know the correct answer :)
> 
> Might be a tad simplistic (and might perhaps choke if the client's 
> browse modifies the answer in subtle ways, perhaps through dodgy HTML 
> encoding or something), and probably is only going to be useful if the 
> answers will always be short and simple (not paragraphs of text/HTML) 
> but might well do the trick?

You could avoid the danger of having the answer text being munged by 
taking some kind of hash of the answer text for the value, so you have:
<input type="radio" name="answer" value="AB76FE09">Answer one

Although that starts getting close to previous suggestions..

Toby


More information about the london.pm mailing list