phpcms v9phpcms表单向导验证码中怎么加入验证码

播放列表加载中...
正在载入...
分享视频:
嵌入代码:
拍下二维码,随时随地看视频
PHPCMS V9利用表单向导制作在线留言
上 传 者:
内容介绍:
Channel Me 精选
我来说点啥
版权所有 CopyRight
| 京网文[0号 |
| 京公网安备:
互联网药品信息服务资格证:(京)-非经营性- | 广播电视节目制作经营许可证:(京)字第403号
<img src="" width="34" height="34"/>
<img src=""/>
<li data-vid="">
<img src=""/><i data-vid="" class="ckl_plays">
<img width="132" height="99" src=""/>
在线人数:
<li data-vid="">
<img src=""/><i data-vid="" class="ckl_plays">
<img src="///img/blank.png" data-src=""/>
<img src="///img/blank.png" data-src="http://"/>
<li data-vid="" class="cfix">
src="///img/blank.png" data-src=""/>
<i data-vid="" class="ckl_plays">
<li data-vid="" class="cfix">
src="///img/blank.png" data-src=""/><i data-vid="" class="ckl_plays">
没有数据!
{upload_level_name}
粉丝 {fans_count}
{video_count}
{description}PHPCMS v9 二次开发_验证码结合Session开发 - 推酷
PHPCMS v9 二次开发_验证码结合Session开发
$code = isset($_POST['code']) && trim($_POST['code']) ? trim($_POST['code']) : exit(format_ajax_out_json('-1', '请输入验证码'));
if ($_SESSION['code'] != strtolower($code)) {
exit(format_ajax_out_json('-1', &验证码错误!&));
3、结合验证码Session的使用
一)、PHP原生Session
session_start();
//注意$output['data']['area']数据为数组,其他为字符串,原生session能够存储数组
$_SESSION['area'] = $output['data']['area'];
$_SESSION['yhid'] = $output['data']['yhid'];
在需要使用原生session且验证验证码时,验证码从session中是取不出来的:
if (isset($_GET['dosubmit'])) {
session_start();
$code = isset($_POST['code']) && trim($_POST['code']) ? trim($_POST['code']) : exit(format_ajax_out_json('-1', '请输入验证码'));
if ($_SESSION['code'] != strtolower($code)) {
exit(format_ajax_out_json('-1', &验证码错误!&));
//-------------------------省略中间代码-------------------------------
//添加session
//注意$output['data']['area']数据为数组,其他为字符串,原生session能够存储数组
$_SESSION['area'] = $output['data']['area'];
$_SESSION['yhid'] = $output['data']['yhid'];
exit(format_ajax_out_json($output['statusCode'], $output));
经过分析,session取不出来的原因,是因为v9代码中,存储code的session时,调用的是session_mysql类。
api/checkcode.php:
$session_storage = 'session_'.pc_base::load_config('system','session_storage');
pc_base::load_sys_class($session_storage);
二)、v9 &session_mysql
session_mysql.class.php:(v9)
session mysql 数据库存储类
* @copyright
* @license
* @lastmodify
class session_mysql {
var $lifetime = 1800;
* 构造函数
public function __construct() {
$this-&db = pc_base::load_model('session_model');
$this-&lifetime = pc_base::load_config('system','session_ttl');
session_set_save_handler(array(&$this,'open'), array(&$this,'close'), array(&$this,'read'), array(&$this,'write'), array(&$this,'destroy'), array(&$this,'gc'));
session_start();
* session_set_save_handler
* @param $save_path
* @param $session_name
* @return true
public function open($save_path, $session_name) {
* session_set_save_handler
* @return bool
public function close() {
return $this-&gc($this-&lifetime);
* 读取session_id
* session_set_save_handler
* @return string 读取session_id
public function read($id) {
$r = $this-&db-&get_one(array('sessionid'=&$id), 'data');
return $r ? $r['data'] : '';
* 写入session_id 的值
* @param $id session
* @param $data 值
* @return mixed query 执行结果
public function write($id, $data) {
$uid = isset($_SESSION['userid']) ? $_SESSION['userid'] : 0;
$roleid = isset($_SESSION['roleid']) ? $_SESSION['roleid'] : 0;
$groupid = isset($_SESSION['groupid']) ? $_SESSION['groupid'] : 0;
$m = defined('ROUTE_M') ? ROUTE_M : '';
$c = defined('ROUTE_C') ? ROUTE_C : '';
$a = defined('ROUTE_A') ? ROUTE_A : '';
if(strlen($data) & 255) $data = '';
$ip = ip();
$sessiondata = array(
'sessionid'=&$id,
'userid'=&$uid,
'ip'=&$ip,
'lastvisit'=&SYS_TIME,
'roleid'=&$roleid,
'groupid'=&$groupid,
'data'=&$data,
return $this-&db-&insert($sessiondata, 1, 1);
* 删除指定的session_id
* @param $id session
* @return bool
public function destroy($id) {
return $this-&db-&delete(array('sessionid'=&$id));
* 删除过期的 session
* @param $maxlifetime 存活期时间
* @return bool
public function gc($maxlifetime) {
$expiretime = SYS_TIME - $
return $this-&db-&delete(&`lastvisit`&$expiretime&);
该session的使用方式:
private function _session_start() {
$session_storage = 'session_'.pc_base::load_config('system','session_storage');
$this-&todo_session = pc_base::load_sys_class($session_storage);
public function dlsLogin() {
$this-&_session_start();
if (isset($_GET['dosubmit'])) { $code = isset($_POST['code']) && trim($_POST['code']) ? trim($_POST['code']) : exit(format_ajax_out_json('-1', '请输入验证码'));
if ($_SESSION['code'] != strtolower($code)) {
exit(format_ajax_out_json('-1', &验证码错误!&));
//-------------------------省略中间代码-------------------------------
//注意$output['data']['area']数据为数组,其他为字符串,原生session能够存储数组,而session_mysql方法不能存储数组。
$this-&todo_session-&write('area',$output['data']['area']);
$this-&todo_session-&write('yhid',$output['data']['yhid']);
exit(format_ajax_out_json($output['statusCode'], $output));
使用该session方式能很好的使用验证码+需要写入session的数据,但是该方法有个弊端。则:无法在session中存储数组。假设,你需要存入session的数据时数组,且数组的大小是不定的,而使用v9自带的session_mysql其实质是将session值存入数据库,在取的时候读取数据库,如果存一个数组在其中,读出来的数据则是一个&Array&字符串。
经过研究,这里有两种解决方案。
a、将数据库的字段的类型、大小改变(原本为varchar类型,且只能存储255个字符)。并将数组转换成一个json字符串,并使用session_mysql的方式存储。
b、使用session_files方式从存储。
三)、v9 &session_files
这里需要注意的是,我们需要实现的目的是既能使用验证码又能使用session,且能用session存储数组。(不建议重新写一套验证码)
v9 &中,除了用数据库存储session还能用文件的方式。
session_files.class.php:
class session_files {
function __construct() {
$path = pc_base::load_config('system', 'session_n') & 0 ? pc_base::load_config('system', 'session_n').';'.pc_base::load_config('system', 'session_savepath')
: pc_base::load_config('system', 'session_savepath');
ini_set('session.save_handler', 'files');
session_save_path($path);
session_start();
由于要使用验证码,这里需要重新写一个api中的checkcode.php并且在form.class.php中添加一个方法。
新建api/checkcode_files.php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('session_files');
$checkcode = pc_base::load_sys_class('checkcode');
//之后代码省略------------------
form.class.php添加方法
//验证码 session_file存储方式
public static function checkcode_file($id = 'checkcode',$code_len = 4, $font_size = 20, $width = 130, $height = 50, $font = '', $font_color = '', $background = '') {
return &&img id='$id' onclick='this.src=this.src+\&&\&+Math.random()' src='&.SITE_PROTOCOL.SITE_URL.WEB_PATH.&api.php?op=checkcode_file&code_len=$code_len&font_size=$font_size&width=$width&height=$height&font_color=&.urlencode($font_color).&&background=&.urlencode($background).&'&&;
前端调用:
{form::checkcode_file('code_img', '4', '14', 120, 26)}
使用该方式在存储session读取session时与原生PHP中使用一样,直接使用$_SESSION。使用该方法,既能读出$_SESSION['code']值也能完美的解决在session中存储数组的问题。
========================
转载需注明出处:/llicat/
已发表评论数()
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
排版有问题
没有分页内容
视频无法显示
图片无法显示网页设计教程与开发
提供各种常见网页效果
提供各种各样的设计教程
装扮QQ,让QQ变得更酷
设计参考,提高自升水平
学习服务器和操作系统
提供各种素材和工具
收藏学习资料
您现在的位置:&&>>&&>>&&>>&&>>&正文
PhpCms模块管理:表单向导|PHPCms
表单向导说明:
表单向导可以自定义表单,以方便调用一、添加表单
位置:模块管理---表单向导--添加表单
为表单添加字段查看添加的表单字段二、管理表单
位置:模块管理---表单向导--管理表单
添加好表单,并且给表单添加了一个字段。在&管理表单&我们能管理表单,如图:点击表单的名字预览,如图:
转载请注明:破洛洛(谢谢合作)
上一篇文章: 下一篇文章: 没有了
网友评论:&于& 09:39&发表在&7944
这两天事情比较多,没有继续出教程了,让大家久等了,今天仿站网继续授课,这一节课主要内容就是表单向导的使用,至于表单,可以用作提交信息,在线留言,甚至用表单做问答系统(点击可看),废话不多说,现在开始讲课
1,首先建立表单:后台模块》表单向导》添加表单向导
2.添加表单所需要的信息,这里我们举一个例子,添加姓名,其余类似即可
添加单选,比如性别:男,女:注意单选选项添加方法
添加成功后将你需要在线留言的页面加上表单的js,就可以直接调用了
前台显示表单
你可以自己留言试试了,后台查看留言的地方在图2我已经给大家标注了,今天仿站网就说到这里了,感谢大家的支持
来源:仿站,南京网站建设[来源地址]:/wangzhanjiaocheng/287_1.html
佩服他们~!
提示: 作者被禁止或删除 内容自动屏蔽
& & 这两天事情比较多,没有继续出教程了,让大家久等了,今天仿站网继续授课,PHPcms 还是挺不错的,洁面清爽,功能强大
这是什么后台额,
这个比较高深啊& &学习了。。
非常高兴遇到这么好的帖子 谢谢
恩,很不错,支持楼主
关于A5交易
(中介专线:5)
服务时间:周一到周日8:00-23:30
随时随地上A5站长网!
兄弟网站:|||||||
Powered by Discuz! X3.2
Comsenz Inc.

我要回帖

更多关于 phpcms v9表单向导 的文章

 

随机推荐