php中如何刷新验证码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中如何刷新验证码相关的知识,希望对你有一定的参考价值。

<html>
<HEAD>
<TITLE> 用户登录 </TITLE>
<script type="text/javascript">
function changecode()
var img = document.getElementById("showing");
img.src = "imgcode.php";
return ;

</script>
</HEAD>
<BODY>
<form action="loginOperation.php" method="POST">
用户:<input type="text" name="T_User"/><br>
密码:<input type="password" name="T_Password"/><br>
验证:<input type="text" name="T_Valid"/><br><br>
<img id="showing" src="imgcode.php"/><br>
<a href="javascript:changecode();">看不清,换一张</a>
<input type="submit" value="登录">
</form>
</BODY>
</HTML>
这是我写的一段代码,想实现点击超链接的时候验证码刷新。在网上找了很多资料,都没有成功,实在不知道应该怎么弄了。哪位高手指点一下,谢谢

我做的一个简单的登录界面有刷新验证码还有注册功能 希望对LZ有帮助
这个是登录界面 land.php
<?php
@include_once('global.php');
session_start();
$user = $_POST['username'];
$sql = sprintf("select * from `p_admin` where `username` = '%s'",$user);
//echo $sql;
$query = $db->query($sql);//调用golbal里面的$db类
$fetch = $db->fetch_array($query);
if($_POST['sccode']==$_SESSION['rand'])
$state = $fetch ? md5($_POST['password'].$extra)==$fetch['password']:FALSE;//是否登录成功 如果失败了返回为空echo $state没有结果
if(!$state)
echo"<script language=javascript>alert('用户名或密码错误');</script>";

else
$_SESSION['id'] = $fetch['m_id'];
$_SESSION['shell'] = md5($fetch['username'].$fetch['password']);
$_SESSION['ontime'] = time();
//echo $_SESSION['id']."<br>";
//echo $_SESSION['shell'];
$action = new action();
$action ->get_show_msg('admin/admin_main.php', $show = '操作已成功!');

else
echo "<script language=javascript>alert('验证码错误');</script>";

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>

<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>用户登录</title>
<link href="style/global.css" rel="stylesheet" type="text/css">
<link href="style/link.css" rel="stylesheet" type="text/css">
<link href="style/layoutid.css" rel="stylesheet" type="text/css">
<script language="javascript">
function chform (obj)
if (obj.username.value == "")
alert("请输入用户名!");
obj.username.focus();
return false;

if (obj.password.value == "")
alert("请输入密码!");
obj.password.focus();
return false;

if (obj.sccode.value == "")
alert("请输入验证码!");
obj.sccode.focus();
return false;

return true;

function RefreshImage(id)

document.getElementById(id).src ='Confirm.php?'+Math.random(1);

</script>
</head><body>
<!--用户登录开始-->
<div class="login">
<form id="form1" name="form1" method="post" action="" onsubmit="return chform(this)">
<ul>
<li class="loginbtbj fright" style="background-image: url("images/hydl.gif");"><a title="" href="javascript:%20close();"><img src="images/close.gif" alt="关闭" align="right" border="0" height="18" width="18"></a></li>
<li class="fyellowxx fcenter">
.............................................................................................................
</li>
<li class="padleft43">
用户名:<input name="username" size="15" style="width: 150px;" type="text">
</li>
<li class="padleft43">
密  码:<input name="password" size="15" style="width: 150px;" type="password">
</li>
<li class="padleft43">
验证码:<input name="sccode" size="6" style="width: 50px;" type="text"><img id="re_confirm" onclick="RefreshImage('re_confirm')" src="Confirm.php">
<a title="看不清?" href="#" onclick="RefreshImage('re_confirm')">看不清?</a> <a href=register.php >注册</a>

</li>
<li class="fyellowxx fcenter">
.............................................................................................................
<br>
<input name="Submit" src="images/dl.gif" style="border: 0pt none; width: 80px; height: 31px;" type="image">
</li>
</ul>
</form>
</div>
<!--用户登录结束-->
</body></html>
这个是验证码的程序 confirm.php 图片什么的代码我就不穿了 LZ可以借鉴下 有一点需要注意 就是这个confirm文件里面不能报错 我在这卡了很久
因为header这个之前不能输出文本 所以如果报错 就会无法显示验证码
<?php
session_start();
$random='';
for($i=1;$i<5;$i++)
$random .= dechex(rand(1,15));
$_SESSION['rand']=$random;
$im = imagecreatetruecolor(40,20);
$bg = imagecolorallocate($im,0,0,0);
$te = imagecolorallocate($im,255,255,255);
imagestring($im,rand(1,6),rand(1,6),rand(1,6),$random,$te);
header("Content-type: image/jpeg");
imagejpeg($im);
?>
参考技术A 可以通过javascript代码来实现

例如:
生成验证码的php文件 captcha.php

然后在HTML中调用,也就是生成图片,代码如下

<img border="0" style="cursor:pointer;" onclick="this.src='captcha.php?'+new Date().getTime();" src="captcha.php">

实现的功能就是点击一次,验证码重新生成一次。

注册表单无刷新验证+php无刷新刷新验证码

原生Php无刷新(验证+刷新验证码)

概述:本案例既实现了php注册页面的验证码无刷新刷新功能

又实现了表单的无刷新验证,。效果绝对实用。本例只做为测试样例,未接数据库验证。

源文件分2部分:code.phpzhuce.php

其中code.php文件为验证码文件,zhuce.php文件为注册页面。

闲话少说,代码献上。

Code.php

<?php
session_start();
    //生成验证码图片
    Header("Content-type: image/PNG");
    $im = imagecreate(44,18); // 画一张指定宽高的图片
    $back = ImageColorAllocate($im, 245,245,245); // 定义背景颜色
    imagefill($im,0,0,$back); //把背景颜色填充到刚刚画出来的图片中
    $vcodes = "";
    srand((double)microtime()*1000000);
    //生成4位数字
    for($i=0;$i<4;$i++){
    $font = ImageColorAllocate($im, rand(100,255),rand(0,100),rand(100,255)); // 生成随机颜色
    $authnum=rand(1,9);
    $vcodes.=$authnum;
    imagestring($im, 5, 2+$i*10, 1, $authnum, $font);
    }
    $_SESSION[‘VCODE‘] = $vcodes;

    for($i=0;$i<100;$i++) //加入干扰象素
    {
    $randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
    imagesetpixel($im, rand()%70 , rand()%30 , $randcolor); // 画像素点函数
    }
    ImagePNG($im);
    ImageDestroy($im);
?>
<img src="code.php" />
<?php 
 
echo   $_SESSION[‘VCODE‘];
echo "211";
?>

Zhuce.php

<?php

session_start();

if(isset($_POST[‘auth‘])){
$auth = $_POST[‘auth‘];
//$test=$_POST[‘test‘];  
$error="验证码输入有误";
$true="ok";
if($_SESSION["VCODE"] == $auth)
{
  echo $true; 
 header("location: http://www.xinhuanet.com/");
}else
{   
   $tests=$_POST[‘test‘];
   echo $error;
}
}

?>
 
<html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head>
<title>login</title>
<style type="text/css">
<!--
#textboxs {
height: 18px;
width: 100px;
}
table{ margin:0 auto;}
img{ width:60px; height:30px;}
.text {
font-size: 14px;
vertical-align: bottom;
color: #0000FF;
}
.style1 {
font-size: 18px;
color: #0000FF;
font-family: "幼圆";
}
-->
</style>
<script language="JavaScript">
   function reloadcode()
   {
       var verify=document.getElementById(safecode);
       verify.setAttribute(src,code.php?+Math.random());
       //这里必须加入随机数不然地址相同会重新加载
}
 
 
</script>
</head>
<body>
<table width="200">
<tr><td align="center" valign="bottom" class="style1" bgcolor="#C7D3F9">请输入验证码</td>
</tr>
</table>
<form method="post" >
<table width="200" border="0" bgcolor="C7D3F9">
  <tr>
    <td class="text">验证码:</td>
    <td align="right" valign="bottom"><input type="text" name="auth" id="textboxs"/></td>
  </tr>
<tr><td><img src="code.php?act=yes" align="middle" id="safecode"></td></tr>
</table>
<table width="200"><tr><td align="right"><input type="button" value="看不清楚验证码" onClick="reloadcode();">
<input name="submit" type="submit" value="Submit"></td></tr>
<tr><td><input type="text" name="test" value="<?php if(isset($tests)){ echo $tests;}?>"></td></tr></table>
</form>
</body>
</html>

有关表单提交前的交互,这里不做详解,有兴趣的可以加我好友私聊!

以上是关于php中如何刷新验证码的主要内容,如果未能解决你的问题,请参考以下文章

如何在点击时验证码时刷新验证码

求 PHP 图片验证码类 给出详细调用方法 谢谢!!!

php验证码+js点击刷新

验证码刷新功能实现

php登陆界面刷新验证码 javascript 的写法

c# httpwebrequest 模拟登陆