PHP如何实现无刷新验证啊? 我不怎么会JQuery啊。。不知道怎么PHP里面怎么实现无刷新和应用AJAX。希望各位大虾解答下。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 哦,这个你可以先看看它是如何获取值,对值进行验证,验证后 再用ajax的方法输出就行了。最好先到网上看看人家写的。 给你个例子http://www.skygq.com/2011/03/17/skygq%E8%A1%A8%E5%8D%95%E9%AA%8C%E8%AF%81ajax%E6%97%A0%E5%88%B7%E6%96%B0%E8%A1%A8%E5%8D%95%E6%8F%90%E4%BA%A4%E5%90%88%E4%BD%93%E7%89%88%E5%8D%87%E7%BA%A7%E4%B8%BA1-5/ 用一个页面实现验证码图片在需要验证码的地方用<img>嵌入验证码页面,然后点击刷新验证码页面即可。验证码页面代码<?php//输出一个gif的图片Header("Content-type: image/gif");/** 初始化*/ //是否要边框 1要:0不要 $border = 1; //验证码位数$how = 4; //图片宽度$w = $how*15+3; //图片高度$h = 22; //字体大小$fontsize = 5; //验证码内容1$alpha = "abcdefghijkmnpqrstujklmnstuvwxyz"; //验证码内容2$number = "vwxyzabcdefgh2345pqr6789"; //验证码字符串初始化$randcode2 = ""; //初始化随机数种子srand((double)microtime()*1000000); //创建验证图片$im = ImageCreate($w, $h); /** 绘制基本框架*///设置背景颜色$bgcolor = ImageColorAllocate($im, 255, 255, 255); //填充背景色 ImageFill($im, 0, 0, $bgcolor); if($border){ //设置边框颜色 $black = ImageColorAllocate($im, 0, 0, 0); //绘制边框 ImageRectangle($im, 0, 0, $w-1, $h-1, $black);}/** 逐位产生随机字符*/for($i=0; $i<$how; $i++){ //字母还是数字 $alpha_or_number = mt_rand(0, 1); $str = $alpha_or_number ? $alpha : $number; //取哪个字符 $which = mt_rand(0, strlen($str)-1); //取字符 $code = substr($str, $which, 1); //绘字符位置 $j = !$i ? 4 : $j+15; //字符随即颜色 $color3 = ImageColorAllocate($im, mt_rand(0,100), mt_rand(0,100), mt_rand(0,100)); ImageChar($im, $fontsize, $j, 3, $code, $color3); //绘字符 $randcode2 .= $code; //逐位加入验证码字符串}/** 添加干扰*/for($i=0; $i<5; $i++)//绘背景干扰线{ $color1 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰线颜色 ImageArc($im, mt_rand(-5,$w), mt_rand(-5,$h), mt_rand(20,300), mt_rand(20,200), 55, 44, $color1); //干扰线} for($i=0; $i<$how*30; $i++)//绘背景干扰点{ $color2 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰点颜色 ImageSetPixel($im, mt_rand(0,$w), mt_rand(0,$h), $color2); //干扰点}//把验证码字符串写入sessionsession_start();$_SESSION['randcode'] = $randcode2;/*绘图结束*/imagegif($im);imagedestroy($im);/*绘图结束*/?>嵌入验证码及刷新验证码代码<input type="text" name="checkcode" /> <img src="<?php echo $baseUrl;?>/login/checkcode/" onclick="this.src='<?php echo $this->baseUrl();?>/login/checkcode/id/'+Math.random()*5;" style="cursor:pointer" alt="验证码,看不清楚?请点击刷新验证码!" /> 给你个例子。我刚刚学会了点点。呵呵。检测用户名是否可用的。1.显示窗口<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><script language="javascript">var str =encodeURI(str); function showHint(str){var xmlhttp;if (str.length==0) { document.getElementById("txtHint").innerHTML="<font size=2 color=red>用户名不能为空!</font>"; return false; }if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); }else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint").innerHTML=xmlhttp.responseText; } }xmlhttp.open("GET","check.php?q="+str,true);xmlhttp.send();}</script></HEAD><BODY>用 户 名: *<input type=text name=name1 onblur="showHint(this.value)"><span id="txtHint"></span></BODY></HTML>2.ajax后台操作页面check.php。<?phpheader("content-type:text/html; charset=gb2312");$q=$_GET["q"];$con = mysql_connect("localhost","root","");if (!$con) { die('Could not connect: ' . mysql_error()); }mysql_select_db("clint", $con); $sql=mysql_query("select * from clint where name='$q'");$num=mysql_num_rows($sql);if ($num==0) { echo "<font size=2 color=green>可以使用!</font>"; } else { echo "<font size=2 color=red>用户名已存在!</font>"; } mysql_close($con); function gbkToUtf8 ($value) {return iconv("gb2312", "UTF-8", $value);}?> 怎样用PHP将数据库记录直接输出到word文件中 去除重复的数据。 php中\n产生的换行问题 求助树状显示的系列代码 php如何从http请求中获取xml信息并进行解析呢 请教如果通过正则表达式返回一个匹配模式的字符串 问一个简单的问题,关于cookie的,好奇怪的 嵌套循环速度超慢~!怎么转换数据啊 急。一个捆饶我很久的问题。。 php环境变量REQUEST_URI是什么作用? DEDECMS 图片路径修改-不是修改日期的那种 zend studio里面导入PHP工程,为何运行时什么都不显示啊
http://www.skygq.com/2011/03/17/skygq%E8%A1%A8%E5%8D%95%E9%AA%8C%E8%AF%81ajax%E6%97%A0%E5%88%B7%E6%96%B0%E8%A1%A8%E5%8D%95%E6%8F%90%E4%BA%A4%E5%90%88%E4%BD%93%E7%89%88%E5%8D%87%E7%BA%A7%E4%B8%BA1-5/
在需要验证码的地方用<img>嵌入验证码页面,然后点击刷新验证码页面即可。
验证码页面代码
<?php
//输出一个gif的图片
Header("Content-type: image/gif");
/*
* 初始化
*/
//是否要边框 1要:0不要
$border = 1;
//验证码位数
$how = 4;
//图片宽度
$w = $how*15+3;
//图片高度
$h = 22;
//字体大小
$fontsize = 5;
//验证码内容1
$alpha = "abcdefghijkmnpqrstujklmnstuvwxyz";
//验证码内容2
$number = "vwxyzabcdefgh2345pqr6789";
//验证码字符串初始化
$randcode2 = "";
//初始化随机数种子
srand((double)microtime()*1000000);
//创建验证图片
$im = ImageCreate($w, $h); /*
* 绘制基本框架
*/
//设置背景颜色
$bgcolor = ImageColorAllocate($im, 255, 255, 255);
//填充背景色
ImageFill($im, 0, 0, $bgcolor);
if($border)
{
//设置边框颜色
$black = ImageColorAllocate($im, 0, 0, 0);
//绘制边框
ImageRectangle($im, 0, 0, $w-1, $h-1, $black);
}/*
* 逐位产生随机字符
*/
for($i=0; $i<$how; $i++)
{
//字母还是数字
$alpha_or_number = mt_rand(0, 1);
$str = $alpha_or_number ? $alpha : $number;
//取哪个字符
$which = mt_rand(0, strlen($str)-1);
//取字符
$code = substr($str, $which, 1);
//绘字符位置
$j = !$i ? 4 : $j+15;
//字符随即颜色
$color3 = ImageColorAllocate($im, mt_rand(0,100), mt_rand(0,100), mt_rand(0,100));
ImageChar($im, $fontsize, $j, 3, $code, $color3); //绘字符
$randcode2 .= $code; //逐位加入验证码字符串
}
/*
* 添加干扰
*/
for($i=0; $i<5; $i++)//绘背景干扰线
{
$color1 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰线颜色
ImageArc($im, mt_rand(-5,$w), mt_rand(-5,$h), mt_rand(20,300), mt_rand(20,200), 55, 44, $color1); //干扰线
}
for($i=0; $i<$how*30; $i++)//绘背景干扰点
{
$color2 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰点颜色
ImageSetPixel($im, mt_rand(0,$w), mt_rand(0,$h), $color2); //干扰点
}//把验证码字符串写入session
session_start();
$_SESSION['randcode'] = $randcode2;
/*绘图结束*/
imagegif($im);
imagedestroy($im);
/*绘图结束*/
?>嵌入验证码及刷新验证码代码
<input type="text" name="checkcode" />
<img src="<?php echo $baseUrl;?>/login/checkcode/" onclick="this.src='<?php echo $this->baseUrl();?>/login/checkcode/id/'+Math.random()*5;" style="cursor:pointer" alt="验证码,看不清楚?请点击刷新验证码!" />
1.显示窗口
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<script language="javascript">
var str =encodeURI(str);
function showHint(str)
{
var xmlhttp;
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="<font size=2 color=red>用户名不能为空!</font>";
return false;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","check.php?q="+str,true);
xmlhttp.send();
}
</script>
</HEAD><BODY>
用 户 名: *<input type=text name=name1 onblur="showHint(this.value)"><span id="txtHint"></span>
</BODY>
</HTML>2.ajax后台操作页面check.php。
<?php
header("content-type:text/html; charset=gb2312");
$q=$_GET["q"];
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}mysql_select_db("clint", $con);
$sql=mysql_query("select * from clint where name='$q'");
$num=mysql_num_rows($sql);
if ($num==0)
{
echo "<font size=2 color=green>可以使用!</font>";
}
else
{
echo "<font size=2 color=red>用户名已存在!</font>";
}
mysql_close($con);
function gbkToUtf8 ($value) {
return iconv("gb2312", "UTF-8", $value);
}
?>