webForumDet fria alternativet

if/else satser

1 svar · 425 visningar · startad av mr.mainline

mr.mainlineMedlem sedan feb. 2003777 inlägg
#1

Har en kod för att genrera fram en 5 siffrig kod (regkey.php),som man måste knappa in för att kunna posta i databasen, men när jag kör valideringen så kommer det upp "Du har inte skrivit säkerhetskoden" när jag går in på sidan utan att jag klickat på submit knappen.

<?php session_start();?>
<form action="form.php" method="post"> 
<?php 
$rand_str = "12345"; 
$_SESSION['regkey'] = $rand_str; 

   if (!empty($_POST['my_regkey'])) { 
    if ($_POST['my_regkey'] == $_SESSION['regkey']) { 
        $KeyCheck = "ok"; 
    } else { 
        $KeyCheck = "Säkerhetskoden matchar inte"; 
    } 
} else { 
    $KeyCheck = "Du har inte skrivit säkerhetskoden"; 
} 
if ($KeyCheck == "ok") { 
    // posta 
} else { 
    echo $KeyCheck; 
} 

?> 
<p>Säkerhetskod:<br /> 
<img src="regkey.php?id=<?php echo $rand_str; ?>" alt="RegKey" title="RegKey"><br /> 
<input type="text" name="my_regkey" value="" maxlength="5" size="40" /></p> 

<p><input type="submit" value="Registrera" /></p> 
</form>
KrikoMedlem sedan dec. 2006382 inlägg
#2

Ja, det är klart att det gör.
Du har ju ingen kontroll för om submit-knappen klickats eller ej. Endast om $_POST['my_regkey'] har något värde, och isf om det stämmer överäns med en session.

[php]if (!empty($_POST['my_regkey']))
...bör, om det går som jag vill då detta är en ren chansning, bli:
[php]if (is_array(@$_POST))

Prova annars att sätta ett namn på submit-knappen och kolla på samma sätt som med $_POST['my_regkey'].

126 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)