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>
这是我写的一段代码,想实现点击超链接的时候验证码刷新。在网上找了很多资料,都没有成功,实在不知道应该怎么弄了。哪位高手指点一下,谢谢
这个是登录界面 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.php和zhuce.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中如何刷新验证码的主要内容,如果未能解决你的问题,请参考以下文章