表格随机编号作为验证

时间:2016-11-10 19:59:57

标签: php

以下PHP代码用于生成四位数的随机数( $numero ),并将其用作具有三个输入框的简单HTML表单的验证。最后一个输入框用于输入代码(随机数)。如果用户没有在最后一个输入框中写入正确的数字,程序将跳过其目的,即向数据库添加一些文本( agregar.txt )。我认为代码很好,除了 if ($_POST['password'] != $numero) { 。我应该将其更改为字符串还是使用其他类型的变量?每次我运行代码时,它的行为就像 $numero password 不同,我确信我写的是正确的数字。请帮忙。

<html>
<body>
<center>
<h2>Agregar entradas a diccionarioie</h2>

<?php
// RANDOM FOUR DIGITS NUMBER
$numero = rand(1000, 9999);
echo "<b>Código: </b><big>".$numero."</big><p>";
if ($_POST['password'] != $numero) {
?>

<form name="form" method="post" action="">
<input title=" LEMA " size="30" type="text" name="lema" autofocus><br>
<input title=" TRADUCCIÓN " size="30" type="text" name="trad"><br>
<input title=" CÓDIGO " size="30" type="text" name="password"><br>
Gracias por colaborar <input title=" ENVIAR " type="submit" value="•"></form>

<?php
} else {
$lema = $_POST['lema'];
$trad = $_POST['trad'];
// ADDING TEXT TO A DATABASE
$texto = $lema." __ ".$trad."\n";
$docu = fopen("agregar.txt", "a+");
fwrite($docu, $texto);
fclose($docu);
}
?>

</center>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

正如@Fred -ii-所指出的,代码中的问题是当您提交表单时,$numero生成了不同的随机数。解决方案是使用会话:PHP session example

会话可用于在提交表单后存储您的$numero值。这是更新后的代码:

<?php

// Make sure to start the session before any output.
session_start();

if (isset($_POST['password']) && isset($_SESSION['numero']) && $_POST['password'] == $_SESSION['numero']) {
    unset($_SESSION['numero']);
    $lema = $_POST['lema'];
    $trad = $_POST['trad'];
    // ADDING TEXT TO A DATABASE
    $texto = $lema." __ ".$trad."\n";
    $docu = fopen("agregar.txt", "a+");
    fwrite($docu, $texto);
    fclose($docu);
} else {
    // RANDOM FOUR DIGITS NUMBER & STORE IT IN SESSION.
    $numero = $_SESSION['numero'] = rand(1000, 9999);
?>
<html>
<body>
    <center>
        <h2>Agregar entradas a diccionarioie</h2>
        <b>Código: </b><big><?php echo $numero; ?></big><p>
        <form name="form" method="post" action="">
            <input title="LEMA " size="30" type="text" name="lema" autofocus><br>
            <input title="TRADUCCIÓN " size="30" type="text" name="trad"><br>
            <input title="CÓDIGO " size="30" type="text" name="password"><br>
            Gracias por colaborar <input title=" ENVIAR " type="submit" value="•">
        </form>
    </center>
</body>
</html>
<?php }

请确保在输出之前调用session_start()(在您的情况下是HTML文档)。

希望得到这个帮助。