【问题标题】:HTML form with a PHP variable test带有 PHP 变量测试的 HTML 表单
【发布时间】:2014-03-11 03:45:35
【问题描述】:

我正在尝试使用我相同的服务器端 php 表单邮件程序将一些非常简单的 PHP CAPTCHA 代码添加到我现有的 HTML Web 表单中。

带有简单验证码的示例表单:

<?
session_start();
?>
<html>
Number challange test<br />
<br />
</html>
<body>
<?
// check login - only code
if (isset($_REQUEST['submit'])) {
     echo "running code comparison now  ";
    if ($_SESSION['captcha']==$_REQUEST['code']) echo 'login ok';
    else echo 'login failed';
}
else {
?>
<form action="<? echo $PHP_SELF ?>" method="POST">
Username: <input type="text" name="username" /><br />
Password: <input type="text" name="password" /><br />
<img src="example.php" />
Code: <input type="text" name="code" /><br />
<input type="submit" name="submit" value="Login" />

</form>
<? } ?>
</body>
</html>

我的具体问题是,如何修改上述表单概念以将我的表单数据提交到我的服务器端 form_mailer.php,(不提交给自身)并验证 'captcha' 值 = '@987654323 @'?

我试图读取/显示$_SESSION['captcha'] 的值(它是一个 4 位数字),但我对 Echo 所做的任何操作都不会显示该值。我想如果我(可以读取/显示)这个值,我可以即时验证代码。

我正在测试独立于提交按钮的验证按钮的使用。这就是我想用一个提交按钮来完成的事情。

example.php 代码:

<?
session_start();

include('captcha_numbers.php');
$captcha = new CaptchaNumbers(4);
$captcha -> display();

$_SESSION['captcha'] = $captcha -> getString();
?>

来源:Source of all code for this

【问题讨论】:

    标签: php variables captcha


    【解决方案1】:

    插入

    if (isset($_REQUEST['submit'])) {  
    

    使用

    if (isset($_POST['submit'])) {  
    

    因为您在表单中使用了 POST 方法。

    我们不知道您的代码。每次有人启动会话时都可以生成您的验证码,然后它就不同了。试试别的。
    对于验证码,有一个简单的技巧,比如放置一个隐藏的 md5。
    http://us2.php.net/manual/pl/function.md5.php
    或者更强大的东西,比如 sha1
    http://pl1.php.net/manual/en/function.sha1.php

    <input type="hidden" name="captcha_md5" value="<?php echo md5($my_number); ?>"/>  
    

    之后,从某人在表单中提供的代码中制作一个 md5 并进行比较。

    if ($_POST['captcha_md5']==md5($_POST['code'])) echo 'login ok';  
    

    Captcha 每次都会给出不同的数字,而 md5 会生成一个无法反转的快捷方式。 :)
    祝你好运。

    【讨论】:

      【解决方案2】:

      检查“example.php”代码,看看它是否将数字保存到 $_SESSION['captcha']

      尝试在“example.php”中写一些文本日志,不要忘记“example.php”中的session_start()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-17
        • 2010-11-09
        相关资源
        最近更新 更多