A. php 注册页面 手机验证码存到数据库
简单的说,手机验证和手机注册是差不多的。
手机验证:
首先你在php代码中生成一串字符串,可以保存在session里面,然后在把这串字符串通过短信服务(这一步需要去买,找代理,前提你获得了用户的正确手机号码)发给用户,然后提供一个输入框给用户输入收到的验证码在和session中的比对。
手机注册:
前面的部分都是和上面一样,多出来的步骤就是验证成功后把信息存入用户数据库而已,最多在存入之前让用户再输入一点用户其他信息。
以上验证码可以扩展一下,比如有效时间,直接在session中设置有效时间,过期作废的限制就可以了。
你可以去后盾人平台看看,里面的东西不错
B. PHP问题如何写注册账号写入数据库并判断验证码的代码
<?php//此处判断验证码与check.php中是一样的。
error_reporting(0);
$code=$_POST['yzm'];
if($code){
if(strtolower($_SESSION["rand"])==strtolower($code)){
echo"<script>alert('验证码正确!');</script>";
}
else{
echo"<script>alert('验证码不正确!');history.back();</script>";
}
}
?>
你这里,判断验证码不正确的时候,没有及时的终止php代码的运行
似乎很多人会发生这种误区
php是服务器端脚本,而js的客户端脚本
网页文件的代码执行顺序是先服务器,后客户端
也就是说,当你在浏览器中看到弹出框的时候,你的php代码早就执行完成了!
你看到的,只是php运行后发送给浏览器的所有信息而已!
哪怕你用php输出js代码是在网页的最开头,只要你没有终止代码的运行,等你看到这个js的时候,你php代码的所有代码都已经运行完成,那怕你的代码有几万行!
所以,你这里应该这样改一下:
echo "<script>alert('验证码正确!');</script>";
die;
或者
exit;
来终止程序代码的继续运行!
C. 验证码怎么用php实现
<?php
/*
* Filename: authpage.php
*/
srand((double)microtime()*1000000);
//验证用户输入是否和验证码一致
if(isset($HTTP_POST_VARS['authinput']))
{
if(strcmp($HTTP_POST_VARS['authnum'],$HTTP_POST_VARS['authinput'])==0)
echo "验证成功!";
else
echo "验证失败!";
}
//生成新的四位整数验证码
while(($authnum=rand()%10000)<1000);
?>
<form action=authpage.php method=post>
<table>
请输入验证码:<input type=text name=authinput style="width:
80px"><br>
<input type=submit name="验证" value="提交验证码">
<input type=hidden name=authnum value=<? echo $authnum; ?>>
<img src=authimg.php?authnum=<? echo $authnum; ?>>
</table>
</form>
代码二:
<?php
/*
* Filename: authimg.php
* Author: hutuworm
* Date: 2003-04-28
* @Copyleft hutuworm.org
*/
//生成验证码图片
Header("Content-type: image/PNG");
srand((double)microtime()*1000000);
$im = imagecreate(58,28);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
$gray = ImageColorAllocate($im, 200,200,200);
imagefill($im,68,30,$gray);
//将四位整数验证码绘入图片
imagestring($im, 5, 10, 8, $HTTP_GET_VARS['authnum'], $black);
for($i=0;$i<50;$i++) //加入干扰象素
{
imagesetpixel($im, rand()%70 , rand()%30 , $black);
}
ImagePNG($im);
ImageDestroy($im);
?>
D. PHP注册账号 怎么加入验证码 求帮助
使用图片验证码,一般注册机很难识别图片上的字符。
图片验证码原理:在注册表单页上,添加一个表单项,用于提交用户看到的图片验证码,在适合位置放一个<img,路径是某一个php程序,例如叫cc.php,这个php产生随机字符,保存在session,然后使用php的图片处理相关函数,将刚才产生的随机字符和指定背景生成一个图片,php发送头信息告诉浏览器“这是一个图片”,然后再发头信息告诉浏览器“别缓存”。
追问:
你能帮我弄弄吗?我不知道在哪加入判断语句。PHP还没学会。希望您能留下QQ号
回答:
在提交表单后,保存数据前,判断表单提交来的验证码是否与保存在session里的一样,不一样就返回,一样才通过。
我不
代工
写代码,也不教人写代码,不好意思。
麻烦采纳,谢谢!
E. 我的php代码中登陆界面加一个验证码,如何实现
php登陆页面+验证码的实现,参考如下:
1、首先新建一个php站点;
F. php中用户登入和验证码验证问题
我一般都用Zend,所以你的代码没有看太懂。只是浅浅的注意到里面有一段代码:
if (isset($_SESSION['PrevUrl']) && false) {
这里不出意外的话永远会是false吧。
但好像问题也不再这里。让我更没有明白的是你的$_SESSION['yzm']是在这个脚本执行以前就被写好的吗?因为我在这个脚本里除了最后一个if里面看到这个东西以外,就没有看到了。
G. php实现手机验证码验证注册功能的逻辑是怎样的
手机注册验证逻辑是这样的:
首先要找短信服务商如:梦网、云信使、互亿无线等等申请短信发送接口。
网站实现流程如下:
第一步:用户注册时输入手机号,网站首先要通过JS或者ajax+php验证这个号码是不是正确的手机号。
第二步:用户点击发送手机验证码,通过ajax把手机号传到php,这时php生成一个随机的验证码保存在session中,然后通过短信接口把这个验证码发送到这个手机号中。
第三步:用户输入手机收到的验证码注册。网站用session中的验证码和用户输入的验证码比较。
H. 如何实现php手机短信验证功能
现在网站在建设网站时为了保证用户信息的真实性,往往会选择发短信给用户手机发验证码信息,只有通过验证的用户才可以注册,这样保证了用户的联系信息资料的100%的准确性。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >
<html xmlns>
<head>
<title></title>
<script src="js/jquery-1.4a2.min.js" type="text/javascript"></script>
<script type="text/javascript">
/*-------------------------------------------*/
var InterValObj; //timer变量,控制时间
var count = 60; //间隔函数,1秒执行
var curCount;//当前剩余秒数
var code = ""; //验证码
var codeLength = 6;//验证码长度
function sendMessage() {
curCount = count;
var dealType; //验证方式
tel = $(’#tel’).val();
if(tel!=’’){
//验证手机有效性
var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+d{8})$/;
if(!myreg.test($(’#tel’).val()))
{
alert(’请输入有效的手机号码!’);
return false;
}
tel = $(’#tel’).val();
//产生验证码
for (var i = 0; i < codeLength; i++) {
code += parseInt(Math.random() * 9).toString();
}
//设置button效果,开始计时
$("#btnSendCode").attr("disabled", "true");
$("#btnSendCode").val("请在" + curCount + "秒内输入验证码");
InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次
//向后台发送处理数据
$.ajax({
type: "POST", //用POST方式传输
dataType: "text", //数据格式:JSON
url: ’yanzhengma.php’, //目标地址(根据实际地址)
data: "&tel=" + tel + "&code=" + code,
error: function (XMLHttpRequest, textStatus, errorThrown) { },
success: function (msg){ }
});
}else{
alert(’请填写手机号码’);
}
}
//timer处理函数
function SetRemainTime() {
if (curCount == 0) {
window.clearInterval(InterValObj);//停止计时器
$("#btnSendCode").removeAttr("disabled");//启用按钮
$("#btnSendCode").val("重新发送验证码");
code = ""; //清除验证码。如果不清除,过时间后,输入收到的验证码依然有效
}
else {
curCount--;
$("#btnSendCode").val("请在" + curCount + "秒内输入验证码");
}
}
</script>
</head>
<body>
<input name="tel" id=tel type="text" />
<input id="btnSendCode" type="button" value="发送验证码" onclick="sendMessage()" /></p>
</body>
</html>
第三、调用短信服务器短信接口
整理的页面是yanzhengma.php(具体根据服务商提供信息)
<?php //提交短信
$post_data = array();
$post_data[’userid’] =短信服务商提供ID;
$post_data[’account’] = ’短信服务商提供用户名’;
$post_data[’password’] = ’短信服务商提供密码’;
// Session保存路径
$sessSavePath = dirname(__FILE__)."/../data/sessions/";
if(is_writeable($sessSavePath) && is_readable($sessSavePath)){
session_save_path($sessSavePath);
}
session_register(’mobliecode’);
$_SESSION[’mobilecode’] = $_POST["code"];
$content=’短信验证码:’.$_POST["code"].’【短信验证】’;
$post_data[’content’] = mb_convert_encoding($content,’utf-8’, ’gb2312’); //短信内容需要用urlencode编码下
$post_data[’mobile’] = $_POST["tel"];
$post_data[’sendtime’] = ’’; //不定时发送,值为0,定时发送,输入格式YYYYMMDDHHmmss的日期值
$url=’http://IP:8888/sms.aspx?action=send’;
$o=’’;
foreach ($post_data as $k=>$v)
{
$o.="$k=".$v.’&’;
}
$post_data=substr($o,0,-1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果需要将结果直接返回到变量里,那加上这句。
$result = curl_exec($ch);
?>
第四:提交表单信息时对短信验证码验证
//手机验证码开始
session_start();
$svalitel = $_SESSION[’mobilecode’];
$vdcodetel = empty($vdcodetel) ? ’’ : strtolower(trim($vdcodetel));
if(strtolower($vdcodetel)!=$svalitel || $svalitel==’’)
{
ResetVdValue();
//echo "Pageviews=".$vdcodetel;
ShowMsg("手机验证码错误!", ’-1’);
exit();
}
I. php验证码判断问题
没明白你的意思, 验证码就是这样, 生成的时候将验证码写进session, 验证的时候取出来的肯定是上次生成那个.
能详细说一下你哪里不明白么?
------------------------------
我想你是没明白验证码的工作原理, 验证码多数情况是用来防止机器人自动发贴或注册而采取的一种验证手段, 在php中验证码多数用session来实现.
举个例子让你理解下流程.
1. 用户访问注册页面a.php
2. a.php输出了一个验证码b.php,实际上等于用户向b.php发送了一个请求.
3. b.php生成一个随机数$a, 并将这个随机数保存到session中, 然后将图片显示给用户
4. 用户填写注册表单并提交到c.php
5. c.php接受用户注册信息, 但在注册之前要从session中取出随机数$a和你提交上来的验证码做一下比较, 这个随机数$a是在b.php那个请求中生成的, 也就是在a.php中看到的那个图片. 比较如果相同那么同意你进行申请, 如果不相同则返回错误信息并跳转回a.php, 然后回到步骤1
这里我觉得你最应该了解的是session的作用,是用来在会话期间内在请求之间传递数据.
J. 如何用PHP生成验证码
PHP生成验证码的原理:使用PHP的GD库,生成一张带验证码的图片,并将验证码保存在Session中。PHP生成验证码的大致流程有:
1、产生一张png的图片;
2、为图片设置背景色;
3、设置字体颜色和样式;
4、产生4位数的随机的验证码;
5、把产生的每个字符调整旋转角度和位置画到png图片上;
6、加入噪点和干扰线防止注册机器分析原图片来恶意破解验证码;
7、输出图片;
8、释放图片所占内存。
session_start();
getCode(4,60,20);
functiongetCode($num,$w,$h){
$code="";
for($i=0;$i<$num;$i++){
$code.=rand(0,9);
}
//4位验证码也可以用rand(1000,9999)直接生成
//将生成的验证码写入session,备验证时用
$_SESSION["helloweba_num"]=$code;
//创建图片,定义颜色值
header("Content-type:image/PNG");
$im=imagecreate($w,$h);
$black=imagecolorallocate($im,0,0,0);
$gray=imagecolorallocate($im,200,200,200);
$bgcolor=imagecolorallocate($im,255,255,255);
//填充背景
imagefill($im,0,0,$gray);
//画边框
imagerectangle($im,0,0,$w-1,$h-1,$black);
//随机绘制两条虚线,起干扰作用
$style=array($black,$black,$black,$black,$black,
$gray,$gray,$gray,$gray,$gray
);
imagesetstyle($im,$style);
$y1=rand(0,$h);
$y2=rand(0,$h);
$y3=rand(0,$h);
$y4=rand(0,$h);
imageline($im,0,$y1,$w,$y3,IMG_COLOR_STYLED);
imageline($im,0,$y2,$w,$y4,IMG_COLOR_STYLED);
//在画布上随机生成大量黑点,起干扰作用;
for($i=0;$i<80;$i++){
imagesetpixel($im,rand(0,$w),rand(0,$h),$black);
}
//将数字随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成
$strx=rand(3,8);
for($i=0;$i<$num;$i++){
$strpos=rand(1,6);
imagestring($im,5,$strx,$strpos,substr($code,$i,1),$black);
$strx+=rand(8,12);
}
imagepng($im);//输出图片
imagedestroy($im);//释放图片所占内存
}