我有个手机注册功能,需要获取短信验证码,在页面上点击“获取短信验证码”按钮后,
我在后台controller层直接session_start();$_SESSION['code'] = '123456';设置验证码到session中,然后发送给手机,手机获取到验证码后,输入并提交表单,然后我又到后台model层去验证输入的验证码和session中保存的验证码是否相同,结果我比对时却取不到$_SESSION['code']的值了,请问应该怎么设置这个session呢?sessionphp验证码
我在后台controller层直接session_start();$_SESSION['code'] = '123456';设置验证码到session中,然后发送给手机,手机获取到验证码后,输入并提交表单,然后我又到后台model层去验证输入的验证码和session中保存的验证码是否相同,结果我比对时却取不到$_SESSION['code']的值了,请问应该怎么设置这个session呢?sessionphp验证码
session_start()在构造函数中就设置了。
<?php
class passport{
function __construct(){
session_start();
} function getMobileCode($mobile){
$random = $objmember->randCode();//获取6位随机码
$_SESSION['MOBILE_CODE'] = $random;
} function signup(){
if(!$this->checkCode($_POST['vcode'],$msg)){
echo $msg;
}else{
echo '注册成功';
}
} function checkCode($vcode,&$msg){
if(trim($vcode) == ''){
$msg = '短信验证码为空!';
return false;
}elseif(trim($vcode) != trim($_SESSION['MOBILE_CODE'])){
$msg = '短信验证码错误!';
return false;
}else{
return true;
}
}}我首先调用了getMobileCode()方法获取验证码获取到验证码后,调用signup()方法验证输入的验证码是否和保存在session中的验证码一致signup()方法验证验证码时调用了checkMobileCode()方法去验证,
这时输入的验证码和session中的验证码比对,
而session中的验证码却取不到了,为空NULL,没有值!
代码如楼上我首先调用了getMobileCode()方法获取验证码获取到验证码后,调用signup()方法验证输入的验证码是否和保存在session中的验证码一致signup()方法验证验证码时调用了checkCode()方法去验证,
这时输入的验证码和session中的验证码比对,
而session中的验证码却取不到了,为空NULL,没有值!
checkCode方法里来的,关键这个msg不碍session的事啊
我就是在checkCode方法中打印了一下$_SESSION['MOBILE_CODE']值为NULL
function getMobileCode(){
$random = $objmember->randCode();
session_start();
$sessionid = session_id();
$_SESSION['MOBILE_CODE'] = $random; //然后将返回信息以及$sessionid发送给客户端
}然后,客户端接收到验证码和$sessionid,在第二次请求signup()方法时,通过$sessionid得到session的值,代码如下:
function signup($sessionid){
if(!$this->checkCode($_POST['vcode'],$sessionid,$msg)){
echo $msg;
}else{
echo '注册成功';
}
} function checkCode($vcode,$sessionid,&$msg){
session_id($sessionid);
session_start();
$session_code = $_SESSION['MOBILE_CODE'];//这样这里就能获取到保存在session里的验证码了
if(trim($vcode) == ''){
$msg = '短信验证码为空!';
return false;
}elseif(trim($vcode) != trim($session_code)){
$msg = '短信验证码错误!';
return false;
}else{
return true;
}
}
如有错误敬请更正!
如果其它解决方案敬请分享!