discuz formhash

class.core.php中

$this->var[‘formhash‘] = formhash();
define(‘FORMHASH‘, $this->var[‘formhash‘]);

hash值生成方法

function formhash() {
  return substr(md5(substr($this->time, 0, -4).UC_KEY), 16);
 }

在表单中使用

<input type="hidden" name="formhash" value="<?php echo FORMHASH;?>" />function submitcheck($var, $allowget = 0, $seccodecheck = 0, $secqaacheck = 0) {
    if(!getgpc($var)) {
        return FALSE;
    } else {
        global $_G;
        if(!empty($_G[‘gp_mobiledata‘])) {
            require_once libfile(‘class/mobiledata‘);
            $mobiledata = new mobiledata();
            if($mobiledata->validator()) {
                return TRUE;
            }
        }
        if($allowget || ($_SERVER[‘REQUEST_METHOD‘] == ‘POST‘ && !empty($_G[‘gp_formhash‘]) && $_G[‘gp_formhash‘] == formhash() && empty($_SERVER[‘HTTP_X_FLASH_VERSION‘]) && (empty($_SERVER[‘HTTP_REFERER‘]) ||
        preg_replace("/https?:\/\/([^\:\/]+).*/i", "\\1", $_SERVER[‘HTTP_REFERER‘]) == preg_replace("/([^\:]+).*/", "\\1", $_SERVER[‘HTTP_HOST‘])))) {
            if(checkperm(‘seccode‘)) {
                if($secqaacheck && !check_secqaa($_G[‘gp_secanswer‘], $_G[‘gp_sechash‘])) {
                    showmessage(‘submit_secqaa_invalid‘);
                }
                if($seccodecheck && !check_seccode($_G[‘gp_seccodeverify‘], $_G[‘gp_sechash‘])) {
                    showmessage(‘submit_seccode_invalid‘);
                }
            }
            return TRUE;
        } else {
            showmessage(‘submit_invalid‘);
        }
    }
}

表单提交验证

时间: 2024-10-22 02:28:17

discuz formhash的相关文章

discuz故障描述退出登录时出现”您当前的访问请求当中含有非法字符,已经被系统拒绝

打开: \source\class\discuz的discuz_application.php查找 private function _xss_check() { static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING'); if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) { syst

Android HttpClient自动登陆discuz论坛!

你登陆论坛的时候,我们先看看浏览器干了什么事儿: 用Firefox打开HiPda 的登陆页面,输入用户名和密码,点登陆. 下面是通过firebug插件获取的数据: 可以看到浏览器这个http://www.hi-pda.com/forum/logging.php?action=login&loginsubmit=yes&inajax=1网址发了一个POST请求 看一下它POST的参数是什么: 可以看到一共有7个参数: 第一个cookietime=259200,这个是固定的,直接传这个值过去就

详解discuz源码

打开代码: 敲击:admin.php define('IN_ADMINCP', TRUE); //定义常量IN_ADMINCP为true 这样在后面的每个页面都会判断 if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {  exit('Access Denied'); } //防止外面直接访问后台文件,必须通过admin.php包含才可以访问其他文件,IN_DISCUZ在/sorce/class/class_core.php里定义的常量,后面

Xamarin.Form 实例: Discuz BBS 客户端 源码分享

感谢台风, 这个十一长假让我好好的休息了一回, 睡觉到腰酸背疼, 看电影看到眼发红. 今天最后一天, 不敢出去逛, 不知道哪会还会下暴雨... 嗯嗯..这个项目其实在十一之前就开始了, 工作无聊,没有新任务, 我就搞起它. 至于为什么选 Discuz 的 BBS , 因为我常上的几个网站, 都有一堆的 APP , 官方的, 第三方的 . BBS 虽然已经没落了, 但是官方的 APP 居然用不了! 写这个东西之前, 本来想拿来看 1024 的, 但是 1024 要么不是最新版本, 要么禁用了 AP

在基于Jetty Fast CGI Proxy和php-fpm下配置Discuz

终于把Discuz装上了,但是安装完以后发现问题一大堆..这个图片不显示,那个不能用的. 问题的根源在于因为我不是直接的php访问,而是通过php-fpm中转了一下,而discuz的代码里面很多直接引用了$_SERVER[HTTP_HOST]这样的变量,使得很多地方都是localhost:9000 (即代理的地址) 要解决这个问题要花好几步 1. upload/source/class/discuz_application下面,搜索siteurl,在初始化siteurl的地方,填写你的域名 2.

discuz全局数组变量 后台各项设置 完整版

$_G 保存了 Discuz! 中所有的预处理数据缓存能够很好的提高程序的性能,一些配置数据没必要每次都查询数据库,只要在修改了的时候更新下缓存即可.Discuz! 中所有的缓存保存在 $_G[cache] 中$_G[member] 会员信息数据$_G[uid] 用户 uid$_G[username] 用户名$_G[adminid] 用户管理组 id$_G[groupid] 用户用户组 id$_G[settting] 设置数据$_G[cache] 系统缓存$_G[cache][plugin] 插

最近遇到的DISCUZ一些问题解决方法

“抱歉,您的请求来路不正确或表单验证串不符,无法提交” 打开“source\class\helper\helper_form.php”, 然后把“$_GET[‘formhash’] == formhash() ”修改为“$_G[‘formhash’] == formhash() ” 您当前的访问请求当中含有非法字符,已经被系统拒绝 找到 \source\class\discuz的discuz_application.php 替换 private function _xss_check() { s

跨discuz站获取

1.在需要取得formhash的页面加入下面js代码,还需要jquery库. <script lanuage="javascript"> $(function(){ $.getJSON("http://bbs.jiaoxuecs.com/search.php?hash=yes&jsoncallback=?",function(data){alert(data);}); });</script> 2.在search.php修改最后面部分

LR实战之Discuz开源论坛——登录脚本

脚本业务流:访问Discuz论坛首页--登录论坛--退出论坛.本次使用LoadRunner11版本. 一.录制脚本注意 1.确保Discuz论坛能在服务器运行正常. 2.录制前先试访问Discuz论坛注册一个测试用户. 3.选择录制协议,Discuz论坛是一个B/S架构的web论坛,使用常用协议"web(HTTP/HTML)"录制. 4.录制选项的设置,特别注意录制时的HTTP/HTML级别的选择是"基于HTML的脚本"还是"基于URL的脚本",