php Hjælp mig med at forstå hvordan koden afvikles

Tags:    php

Hej

Jeg sidder her og roder med en formular med en CAPTCHA og den giver mig grå (eller flere grå hår !) i hovedet.

Mit problem er, at noget af min php kode bliver afviklet før den skal !

Årsagen til mit problem ligger i min manglende viden/forståelse af hvordan koden bliver afviklet på min side - ja, selverkendelse er jo en smuk egenskab, så det vil jeg gerne have lidt hjælp med.

Jeg har fundet en formular på W3Schools som jeg har "ødelagt" ved at flytte om på noget af php koden, så den derved opfører sig på samme måde som min egen formular. Jeg har gjort dette for at illustrere hvordan jeg tænker når jeg skriver kode, hvilket er problemet.

Kode, som virker:

Fold kodeboks ind/udHTML kode 


Her er min modificerede version, som selvfølgelig ikke virker ! (det har jeg tjekket på phpfiddle.org)

Fold kodeboks ind/udHTML kode 


Link til phpfiddle

Jeg et lignende problem med min kode og det er fordi jeg har lært at koden bliver afviklet oppefra og ned - dette er jeg sådan set helt med på, men jeg forstår bare ikke hvorfor man skal lave den der IF statement før formularen - jeg mener; det er jo først her vi bestemmer os for om vi vil submitte formularen med enten "GET" eller "POST" !

Det er dog logisk for mig, at man godt kan sætte værdien i variablerne i toppen (så er det jo gjort !) og at man herefter kan arbejde videre med dem, men det andet kan jeg altså ikke rigtig forstå !









5 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
I det tilfælde er det underordnet, hvilken rækkefølge du placerer din kode, som behandler POST/GET data. Det er det fordi, du jo ikke manipulerer videre på de data, som du får tilsendt fra GET/POST. Så de vil derfor altid vil være intakte uanset, hvor langt nede i filen du henter dem.
Forresten, så virker din kode også fint nok; du har bare glemt at omkranse PHP koden med <?php ?>...



Indlæg senest redigeret d. 16.02.2014 13:10 af Bruger #18836
Hej

@Jannik Andreassen

Well, det var da pineligt for mig :$ - måske jeg skulle ændre mit navn til kode-mongolen eller...

Nå, men jeg smider lige en phpfiddle med den formular som jeg har lavet og som volder mig så store problemer:

Problemet er kort fortalt, at mine variabler bliver testet i min IF-statement før jeg har indtastet værdien, som skal sammenlignes med CAPTCHA'en i min textbox.

Link til phpfiddle og min formular

Det er meningen, at hvis brugeren indtaster en forkert CAPTCHA så vises en fejlmeddelelse, men hvis brugeren har indtastet en korrekt CAPTCHA så vil brugeren komme til en anden side.

Der er med 100% sikkerhed andre problemer også, men det er ikke så vigtigt lige nu.





Du skal huske på, at du ikke bare kan blokere eksekveringen af koden, da det jo bl.a. også ville medføre, at resten af dokumentet(layout design osv.) ikke ville kunne indlæses, før du havde indtastet dataene. Og det ville være skidt.

Det du skal gøre er at overflytte din PHP kode til en anden fil således, at når brugeren indtaster sine data samt CAPTCHA, videresender du de data til processering i den pågældende fil.

Hvad skal du bruge projektet til? :)



Får du nogen fejl?



Du skal huske på, at du ikke bare kan blokere eksekveringen af koden, da det jo bl.a. også ville medføre, at resten af dokumentet(layout design osv.) ikke ville kunne indlæses, før du havde indtastet dataene. Og det ville være skidt.



Jeg gik og tænkte på hvor koden løber direkte ned i den der IF-statement... og det er vel fordi jeg ikke lige bad om at få tjekket om brugeren havde trykket på min submit knap inden koden inde i IF-statement'en bliver evalueret - dooh !

Så jeg lavede en if (isset($_GET['submit'])){}

Fold kodeboks ind/udPHP kode 


og nu venter den pænt indtil jeg har indtastet min CAPTCHA :)




Det du skal gøre er at overflytte din PHP kode til en anden fil således, at når brugeren indtaster sine data samt CAPTCHA, videresender du de data til processering i den pågældende fil.


Ja, det er vel en mulighed, men jeg tænkte på om det er nødvendigt, da brugeren skal blive på siden, hvis CAPTCHA'en er forkert.




Hvad skal du bruge projektet til? :)


Jeg skal ikke bruge det til noget, ud over at lære PHP - jeg er i øjeblikket ved at uddanne mig til WebIntegrator.

Nå, men tilbage til mit projekt...

Nu mangler jeg "bare" at finde ud af:

1. hvorfor formularen ikke bliver submittet til: admin/code_createusercaptcha.php når CAPTCHA'en er rigtig.

Fold kodeboks ind/udHTML kode 


2. hvorfor jeg ikke ser: "fejl ! - din CAPTCHA er forkert"; når CAPTCHA'en er forkert.

3. hvorfor man skal tilsyneladende skal bruge echo i:

<form action="<?php echo $formSubmitPage;?>" method="GET">

selvom man ikke skal skrive noget ud til skærmen.








t