【问题标题】:[PHP/JavaScript]: How to refresh a Captcha?[PHP/JavaScript]:如何刷新验证码?
【发布时间】:2009-10-27 12:55:03
【问题描述】:

我是这样显示验证码的:

<img src="ReturnCaptcha2.php" alt="CAPTCHA" width="100" height="50">

我在它附近有一个名为“重新加载”的超链接。我想在不刷新页面的情况下调用那个 PHP 文件。可能,AJAX 参与其中。请帮忙。

【问题讨论】:

  • 添加了更多相关标签

标签: php javascript refresh captcha


【解决方案1】:

是不是有一些带有时间戳之类的参数,这样请求就不会被缓存?为什么不将 src 替换为(使用 jquery)之类的东西

$("img#your-selector").attr("src","ReturnCaptcha2.php?_="+((new Date()).getTime()));

【讨论】:

    【解决方案2】:
    <a href="javascript:;" title="Reload Image" 
       onclick="document.getElementById('captcha').src = 'cimage.php?' + Math.random(); 
       return false">
       <img src="cimage.php" alt="Enter captcha" title="Enter captcha" id="captcha"/>
    </a>
    

    【讨论】:

      【解决方案3】:

      这是我在 Secureimage PHP Captcha 中使用的代码。

      <form method="POST">
      <input type="hidden" name="PHPSESSID" value="0b21dde61d891cd" />
      <img id="siimage" src="securimage_show.php?sid=2ef186788e" alt="CAPTCHA Image" width="126" height="36" /><br />
      <input type="text" name="code" /><br />
      <a href="#" onclick="document.getElementById('siimage').src = 'securimage_show.php?' + Math.random(); return false">Reload Image</a>
      <input type="submit" value="Submit Form" />
      </form>
      

      【讨论】:

        【解决方案4】:

        为什么不使用http://recaptcha.net/ 来省去这一切的麻烦呢?他们只会为您处理验证码。

        这里是一些关于 PHP 和 recaptcha 的集成信息: http://www.google.com/recaptcha/plugins/php

        正如我所提到的,集成到您的 web 应用程序中一点也不难。试试看!

        【讨论】:

        • 它非常简单,它们使其成为 1 个单独的包含,然后您就可以输出。你遇到了什么困难?您进行包含并提供您的重新验证唯一密钥。
        • @Jakub:我在设置 URL 的密钥时遇到问题。
        【解决方案5】:

        可能是这样的:

        function reloadCaptcha()
        {
        img = document.getElementById('captcha');
        img.src = 'ReturnCaptcha2.php';
        }
        

        然后添加一个带有onclick="reloadCaptcha();" 的按钮。

        我没有测试过,我也不是js大师,所以不确定它是否可以工作。

        【讨论】:

          【解决方案6】:

          另一种方法是使用一点 ajax.. 在您的刷新按钮上,将操作指定为: onclick=javascript:reloadCaptcha();

          在这个 reloadCaptcha 函数中, 致电您的 captcha.php 并更新包含您的验证码的 div 与返回值。 您可以轻松地返回一个 html,然后将其嵌入到 div 中。

          【讨论】:

            【解决方案7】:

            这是另一个。

            它创建全局变量。检查是否存在。

            function get_captcha(){
                //get original url refresh
                console.log('captcha requested.');
                if(typeof window.captcha_src === 'undefined'){
                    window.captcha_src = document.getElementById('captcha').src;
                }
                document.getElementById('captcha').src = window.captcha_src + '&nocache=' + Math.random();
            }
            

            【讨论】:

              【解决方案8】:

              您甚至可以在同一部门创建链接并重新加载您的验证码。如果没问题的话。

              Enter Image Text <input name="captcha" type="text"> <img src="captcha.php" /><br> <a href="captcha.php">Reload Captcha</a><br/>

              【讨论】:

                【解决方案9】:

                我已经用一个简单的技巧解决了这个问题; 而不是将验证码放入&lt;img&gt; 将其放入&lt;iframe&gt; 并在需要时使用 javascript 重新加载它

                要重新加载的Javascript:

                function reloadCaptcha()
                
                {
                document.getElementById('cap').src='captcha.php';
                }
                

                实际 HTML:

                <iframe id="cap" src="captcha.php"></iframe> <input type="button" value="reload" onclick="reloadCaptcha();"/>

                它解决了我的问题, 如果我在某处错了,请纠正我

                【讨论】:

                  【解决方案10】:

                  @meme: 我使用相同的东西,但使用 jquery。如果您在一页中需要几个 capthcas:

                  <img class="captcha" src="/securimage/securimage_show.php" alt="CAPTCHA Image">
                  <a class="capcha-refresh" href="#" ><img src="/images/Refresh-icon.png"></a>
                  

                  及js函数:

                  $('.capcha-refresh').click(function(a){
                         $('.captcha').attr('src','/securimage/securimage_show.php?' + Math.random());
                         a.preventDefault();
                  })
                  

                  【讨论】:

                    猜你喜欢
                    • 2013-08-23
                    • 1970-01-01
                    • 2014-09-29
                    • 1970-01-01
                    • 2018-12-02
                    • 2016-01-22
                    • 2013-02-15
                    • 2020-05-01
                    • 2012-04-26
                    相关资源
                    最近更新 更多