Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Postirati samo jedno hidden pole

[es] :: PHP :: Postirati samo jedno hidden pole

[ Pregleda: 1752 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Insider_m
Web developer

Član broj: 290688
Poruke: 98
77.28.203.*



+7 Profil

icon Postirati samo jedno hidden pole14.10.2011. u 09:31 - pre 152 meseci
Radim quiz u koje prikazujem prasanje, ispod svake prasanje po nekoliko odgovora kao radio buttons.
Logika je sljedna:

Code:
{foreach $question as $q}
       Question: {$q.question_name}
       <input type="hidden" name="question-id[]" value="{$q.question_id}" /> //ovdje cuvam id od prasanje
        {foreach $answer as $a}
                 {if $q.question_id == $a.question_id}
                          <input type="radio" name="answer-id{$q.question_id}" class="answer" value="{$a.answer_id}"/>{$a.answer_name}
                          <input type="hidden" name="correct[]" value="{$a.answer_correct}" />
                  {/if}
         {/foreach}
{/foreach}


u tabeli za svako prasanje imam polje answer_correct. njegovi vrjednosti bi mogao biti 1 i 0. svako tocno prasanje je 1.

u ovom slucaju, koliko vkupno odgovora ima od sva prasanja (pr. 4 prasanja i svako po 4 odgovora bi imao 16 elemenata u array) toliko puta bi se prosljedio pole hidden name="correct". a ja hocu da za svakog izabranog radio button od svako prasanje, samo u tom slucaju za istu tu vrjednost da se prosljedi i hidden polju i da uzmem 1 ili 0 odnosno dali je tacno ili netacno
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.dynamic.sbb.rs.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Postirati samo jedno hidden pole14.10.2011. u 09:41 - pre 152 meseci
Ako dobro razumem sta ti treba, mozes JSom da setujes vrednost svakom hidden polju, odnosno samo menjas "disabled" u zavisnosti da li ti polje treba ili ne.
Inace, u PHPu mozes da filtriras sigurno poslata polja po IDju pitanja (tako sto ce hidden polje da ima za kljuc ID pitanja name="correct[{$q.question_id}]").
Mada iskreno ne vidim zasto uopste imas to hidden polje u formama ako ono ima bilo kakvu ulogu u odluci da li je odgovor ispravan ili ne. Te podatke cuvas ili u sesiji ako ti trebaju prilikom trenutnog prikaza, ili samo u bazi imas za svaki odgovor flag da li je tacan ili ne.
Ako te nisam dobro razumeo, pojasni malo sta tacno pokusavas da uradis, mozda moze problem i da se zaobidje
 
Odgovor na temu

ColdKeyboard
Sasa Karanovic
Hardware and Firmware Engineer
Toronto, Canada

Član broj: 31924
Poruke: 868
*.dynamic.sbb.rs.

Jabber: ColdKeyboard
Sajt: www.SasaKaranovic.com


+11 Profil

icon Re: Postirati samo jedno hidden pole14.10.2011. u 09:44 - pre 152 meseci
Sta ti znaci prasanje?

Nemoj nikada ostavljati podatke na korisnickoj strani. Generisi neki jedinstveni ID za svakog korisnika koji ce biti kriptovan
sa recimo md5() algoritmom, onda taj key sacuvas u bazu u tabelu korisnika a korisniku upises cookie sa istim jedinstvenim ID-om.

Onda svaki put kada treba da vrsis neko racunanje (poslat je tacan/pogresan odgovor, novo pitanje, trajanje kviza i sl.) trazit ces u bazi
unos koji ima isti jedinstveni key kao sto korisnik ima u cookie-u i onda mijenjas taj unos.

Nema veze sto si ti polje za obiljezavanje tacnog odgovora stavio kao hidden, korisnik i dalje moze da uradi View-Source i da
iscita sva sakrivena polja i na osnovu njih uvijek da tacan odgovor. Zato pitanja i odgovore drzis u posebnoj tabeli i onda
kada korisnik da odgovor, on ti proslijedi njegov odgovor i redni broj pitanja u data bazi, onda ti u php-u provjeris da li je odgovor
tacan ili ne, osvjezis drugu tabelu gdje drzis koliko ko ima tacnih/pogresnih odgovora i to je to.
 
Odgovor na temu

Insider_m
Web developer

Član broj: 290688
Poruke: 98
77.28.203.*



+7 Profil

icon Re: Postirati samo jedno hidden pole14.10.2011. u 11:00 - pre 152 meseci
@dakipro
imam 4 tabele:

quiz: quiz_id, quiz_name
questions: quiz_id, question_id, question_name
answers: question_id, answer_id, answer_name, correct

results: user_id, quiz_id, question_id, answer_id, correct

za to sto si rjekao da postavim flag, to i imam u tabelu, pole 'correct' mogu da ima vrejdnosti 0 ili 1 (ako prasanje je tacno, 1)

quiz je prikazan na jedno stranu, i so $_POST['submit'] sva odgovora zapisujem u tabelu:

Code:

if(isset($_POST['submit-quiz'])) {
        foreach($_POST['question-id'] as $q_id) {
                $answer_id = $_POST['answer-id'.$q_id];
                $sql = "INSERT INTO results (user_id, quiz_id, question_id, answer_id,  correct)
                        VALUES ('$user->user_id', '" . $_GET['quiz_id'] . "', '$q_id', '$answer_id', 'TU MI FALI VRJEDNOST')";
                        $db->query($sql);
        }
}


nije mi jasno kako uzmeti ta vrjednost/flag od tabelu answers za proveru dali je odgovor tacan ili ne

i evo jos jedan put logiku prikazivanja (koristim smarty template engine)

Code:

{foreach $question as $q}
        Question {$q@iteration}: {$q.question_name}</p>
        <input type="hidden" name="question-id[]" value="{$q.question_id}" />
        {foreach $answer as $a}
              {if $q.question_id == $a.question_id}
                  <input type="radio" name="answer-id{$q.question_id}" class="answer" value="{$a.answer_id}"/><label>{$a.answer_name}</label>
               {/if}
         {/foreach}
{/foreach}


@ColdKeyboard
ja sam pomislio sa hidden da rjesim taj probljem ali sad vidim da tako nije ispravno
 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
*.dynamic.isp.telekom.rs.



+44 Profil

icon Re: Postirati samo jedno hidden pole14.10.2011. u 16:57 - pre 152 meseci
Nisam siguran da sam sve razumeo, ali poželjno je da proveru tačnih odgovora vršiš server-side, a ne client-side (mada možeš da koristiš javascript/ajax tehniku u kombinaciji sa .php call-om, što je možda najbolja varijanta)...

[Ovu poruku je menjao ivan.a dana 14.10.2011. u 18:12 GMT+1]
I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

Zlatni_bg
Nikola S
Beograd

Član broj: 65708
Poruke: 4420
*.dynamic.sbb.rs.



+498 Profil

icon Re: Postirati samo jedno hidden pole15.10.2011. u 02:52 - pre 152 meseci
Citat:
ColdKeyboard:
Nemoj nikada ostavljati podatke na korisnickoj strani. Generisi neki jedinstveni ID za svakog korisnika koji ce biti kriptovan
sa recimo md5() algoritmom, onda taj key sacuvas u bazu u tabelu korisnika a korisniku upises cookie sa istim jedinstvenim ID-om.


Samo bih se nadovezao na ovo, nemoj nikako da stavis da ti taj jedinstveni ID bude broj poput 1,2,3... vec uzmi neku rec, vezi je za neki broj, nesto vec smisli... i obavezno u cookie-ju cuvaj tako enkriptovan string... Jer ukoliko se nadje neko pametan i krene da radi md5 bruteforce svog korisnickog ID-a koji ce procitati iz svog kolacica, odmah ce naci pocetni ID i posle ce moci da "bude" bilo koji korisnik, jer je lako izmeniti sadrzaj cookie-ja. Moci ce manje-vise da ti napravi haos na sajtu. Ili jednostavno stavi da ti se taj ID generise tako sto se odredi nasumicno 20ak slova.
THE ONLY EASY DAY WAS YESTERDAY
 
Odgovor na temu

[es] :: PHP :: Postirati samo jedno hidden pole

[ Pregleda: 1752 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.