Formular vil ikke submitte, da variabel er tom

Her kan du få hjælp og stille spørgsmål til PHP!
Besvar
Neo
Begynder
Indlæg:11
Tilmeldt:7. aug 2013, 09:46
Formular vil ikke submitte, da variabel er tom

Indlæg af Neo » 19. feb 2014, 00:12

Hej

Jeg har et problem med noget php kode, som jeg simpelthen ikke kan få til at virke...

Koden udtrækker to tilfældige tal mellem 1 & 10 og lægger dem herefter sammen. Brugeren skal så lave det samme regnestykke og hvis resultatet er ens og brugeren trykker på en submit-knap så skal brugeren logges ind på en anden side.

Det er i bund og grund en CAPTCHA jeg forsøger at lave !

Her er koden:

Kode: Vælg alt

<!DOCTYPE>

<html>
    <head>
        <meta charset="UTF-8">
        <title>formularer_01</title>
     <style type="text/css">


#form_04_wrapper {
    
    width: 250px;
    min-height: 100px;
    height: auto;
    float: left;
}

#form_04_container {
    
    background-color: #CCCCCC;
    width: 250px;
    min-height: 100px;
    height: auto;
    padding-top: 20px;
    overflow: hidden;
    float: left;
    
}

#form_04_container form label:nth-child(-n+4) {
    
    width: 230px;
    min-height: 50px;
    height: auto;
    margin-left: 20px;    
    float: left;
}

#form_04_container form label:nth-child(5) {
    
    width: 50px;
    min-height: 50px;
    height: auto;
    margin-left: 20px;
    float: left;
}

#form_04_container form label:nth-child(6) {
    
    width: 100px;
    min-height: 50px;
    height: auto;
    float: left;
}

#form_04_container form label:nth-child(7) {
    
    width: 80px;
    min-height: 50px;
    height: auto;
    float: left;
}

#form_04_container form label:nth-child(7) select {
    
    width: 60px;
    min-height: 20px;
    height: auto;
}

#form_04_container form label:nth-child(8) {
    
    width: 230px;
    min-height: 50px;
    height: auto;
    margin-left: 20px;
    float: left;
}



#form_04_container form label:nth-child(8) input {
    
    margin-right: 15px;
}

#form_04_container form label:nth-child(9) {
    
    width: 230px;
    min-height: 50px;
    height: auto;
    margin-left: 20px;
    float: left;
}





   
     </style>   
    </head>
    <body> 
	<div id="form_04_wrapper">
                    <div id="form_04_container">
                        <h1>formularer-04</h1>
                        <form action="<?php echo $formSubmitPage;?>" method="GET">
                        <label>
                            <span>email</span>
                            <input type="text" name="email">
                        </label>
                        <label>
                            <span>navn</span>
                            <input type="text" name="name">
                        </label>
                        <label>
                            <span>password</span>
                            <input type="password" name="password">
                        </label>
                        <label>
                            <span>gentag password</span>
                            <input type="password" name="repeat_password">
                        </label>
                        <label>
                            <span>dag</span>
                            <select name="day">
                                <option value=""></option>
                                <option value="1">1</option>
                                <option value="2">2</option>
                                <option value="3">3</option>
                                <option value="4">4</option>
                                <option value="5">5</option>
                                <option value="6">6</option>
                                <option value="7">7</option>
                                <option value="8">8</option>
                                <option value="9">9</option>
                                <option value="10">10</option>
                                <option value="11">11</option>
                                <option value="12">12</option>
                                <option value="13">13</option>
                                <option value="14">14</option>
                                <option value="15">15</option>
                                <option value="16">16</option>
                                <option value="17">17</option>
                                <option value="18">18</option>
                                <option value="19">19</option>
                                <option value="20">20</option>
                                <option value="21">21</option>
                                <option value="22">22</option>
                                <option value="23">23</option>
                                <option value="24">24</option>
                                <option value="25">25</option>
                                <option value="26">26</option>
                                <option value="27">27</option>
                                <option value="28">28</option>
                                <option value="29">29</option>
                                <option value="30">30</option>
                                <option value="31">31</option>
                             </select>
                        </label>
                         <label>
                             <span>m&aring;ned</span>
                             <select name="month">
                                 <option value=""></option>
                                 <option value="januar">januar</option>
                                 <option value="febuar">febuar</option>
                                 <option value="marts">marts</option>
                                 <option value="april">april</option>
                                 <option value="maj">maj</option>
                                 <option value="juni">juni</option>
                                 <option value="juli">juli</option>
                                 <option value="august">august</option>
                                 <option value="september">september</option>
                                 <option value="oktober">oktober</option>
                                 <option value="november">november</option>
                                 <option value="december">december</option>
                             </select>
                        </label>
                        <label>
                            <span>&aring;r</span>
                            <select name="year">
                                <option value=""></option>
                                <option value="2014">2014</option>
                                <option value="2013">2013</option>
                                <option value="2012">2012</option>
                                <option 
                            </select>
                        </label>
                        <label>
                            <span>udfyld venligt denne <span style="text-transform: uppercase">captcha</span></span>
                                    <?php

                                        $firstNumber = rand(1,10);
                                        $secondNumber = rand(1,10);

                                        $result = $firstNumber + $secondNumber;

                                        ?>
                            <span><?php echo $firstNumber.'  + '.$secondNumber.'  = '; ?></span>

                            <input type="text" name="captcha" value="<?php $userInput; ?>">

                            <?php 
                            
                            
                            
                                if (isset($_GET['submit'])){
                                    if (isset($userInput) && $userInput == $result){

                                        $formSubmitPage = "admin/code_createusercaptcha.php";

                                    }
                                    else {

                                        $formSubmitPage = $_SERVER["PHP_SELF"];

                                        echo "fejl ! - din CAPTCHA er forkert";
                                    }
                                }
                            ?>

                        </label>
                        <label>
                            <input type="submit" name="submit" value="send">
                        </label>
                    </form>
                    </div> <!-- form_container END -->
                </div> <!-- form_wrapper END -->
            </div> <!--page_content_container END-->
        </div> <!-- page_wrapper END -->
    </body>
</html>
Problemet er at variablen $formSubmitPage tilsyneladende ikke får noget indhold fra if-statement'en og derfor kan formularen ikke overføre brugeren til siden: admin/code_createusercaptcha.php eller lade brugeren blive på samme side og prøve at udfylde formularen igen.

Fejlen er undefined index og ligger i <form action="<?php echo $formSubmitPage;?>" method="GET">

Er der nogen som kan se hvad jeg har lavet forkert og give mig et svar ?

På forhånd tak for hjælpen

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg:709
Tilmeldt:21. jun 2012, 23:40
Kontakt:

Re: Formular vil ikke submitte, da variabel er tom

Indlæg af scootergrisen » 19. feb 2014, 14:20

Undefined index betyder at variablen ikke findes.
Altså den er ikke sat til noget der hvor du echoer den.

Det er først senere i din kode at du giver den en værdi.

Det du gør svarer til dette.

Kode: Vælg alt

<?php

echo $formSubmitPage;

$formSubmitPage = "noget";

?>

Neo
Begynder
Indlæg:11
Tilmeldt:7. aug 2013, 09:46

Re: Formular vil ikke submitte, da variabel er tom

Indlæg af Neo » 19. feb 2014, 20:47

scootergrisen skrev:Undefined index betyder at variablen ikke findes.
Altså den er ikke sat til noget der hvor du echoer den.

Det er først senere i din kode at du giver den en værdi.

Det du gør svarer til dette.

Kode: Vælg alt

<?php

echo $formSubmitPage;

$formSubmitPage = "noget";

?>
Hej

Mange tak for hjælpen.

Okay, så php kode kan altså ikke "kigge opad" i, hvis det giver nogen mening...

Vil det sige at alt min php kode skal stå oven over <form action="<?php echo $formSubmitPage;?>" method="GET"> for at det vil virke ?

Lige et tillægsspørgsmål:

Er det nødvendig med echo foran $formSubmitPage; - jeg mener; jeg skal jo ikke skrive noget ud til skærmen.

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg:709
Tilmeldt:21. jun 2012, 23:40
Kontakt:

Re: Formular vil ikke submitte, da variabel er tom

Indlæg af scootergrisen » 20. feb 2014, 07:12

Ja det går oppe fra og ned.

$formSubmitPage = 'noget'; skal være før <form action="<?php echo $formSubmitPage;?>" method="GET">

Du behøver ikke sætte alt PHP før bare den variabel.

Ja du skal bruge echo. Det betyde at du udskriver værdien af variablen i HTML dokumentet.

Du kan også bruge den korte måde når man kun skal udskrive værdien af en variabel <?=$variabel?> som svare til at bruge echo.

Neo
Begynder
Indlæg:11
Tilmeldt:7. aug 2013, 09:46

Re: Formular vil ikke submitte, da variabel er tom

Indlæg af Neo » 20. feb 2014, 11:26

scootergrisen skrev:Ja det går oppe fra og ned.

$formSubmitPage = 'noget'; skal være før <form action="<?php echo $formSubmitPage;?>" method="GET">

Du behøver ikke sætte alt PHP før bare den variabel.
Problemet med denne variabel er, at jeg ikke ved hvad den indeholder før brugeren har indtastet CAPTCHA'en !

Den kan enten være:

"admin/code_createusercaptcha.php" eller $_SERVER["PHP_SELF"]

Så jeg skal på en eller anden måde have placeret min kode således at når koden blive eksekveret; så løber jeg først igennem min IF-statement, hvor jeg finder ud af hvilken værdi (eller string) min variabel $formSubmitPage får og herefter så bliver formularens action så sat til denne værdi.

Er det måde jeg skal gøre det på ?


scootergrisen skrev: Ja du skal bruge echo. Det betyde at du udskriver værdien af variablen i HTML dokumentet.
Så lærte jeg lige noget nyt der, da jeg havde forstået det således, at echo kun skal bruges, hvis man ønsker at skrive noget til skærmen som brugeren skal se

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg:709
Tilmeldt:21. jun 2012, 23:40
Kontakt:

Re: Formular vil ikke submitte, da variabel er tom

Indlæg af scootergrisen » 20. feb 2014, 14:31

Så må du udregne hvad der skal være i variablen først.
Også derefter echoen variablen.
Så flyt den del af PHP koden som sætte variablen op før echo.

Man kan godt sige at echo bruges til at skrive noget på skærmen.
Hvis du skrev <div><?php echo "noget"; ?></div> så står det i browseren.
Men browseren viser jo ikke HTML koden.

Besvar