存档

2014年11月 的存档

【已解决】discuz中如何自定义获取fromhash()的值

2014年11月29日 没有评论

往往我们需要在非discuz的内部页面中加入退出功能,比如链接:/bbs/member.php?mod=logging&action=logout&formhash=899b6270

最后一个参数fromhash是动态改变的,那么如何获取呢?请参考以下代码:

function myget_formhash($uid,$username,$authkey,$cookiepre,$cookiedomain,$cookiepath) {
/*
//$cookiepre\$cookiedomain\$cookiepath参数说明(bbs/config/config_global.php)
$authkey=$_config[‘security’][‘authkey’];
$cookiepre=$_config[‘cookie’][‘cookiepre’];
$cookiedomain=$_config[‘cookie’][‘cookiedomain’];
$cookiepath=$_config[‘cookie’][‘cookiepath’];
*/
$authkey=md5($authkey.$_COOKIE[$cookiepre.substr(md5($cookiepath.’|’.$cookiedomain),0,4).’_saltkey’]);
return substr(md5(substr($_SERVER[‘REQUEST_TIME’],0,-7).$username.$uid.$authkey),8,8);
}
require(‘bbs/config/config_global.php’);
$fromhash=myget_formhash(
$_SESSION[‘loginUser’][‘uid’],
$_SESSION[‘loginUser’][‘username’],
$_config[‘security’][‘authkey’],
$_config[‘cookie’][‘cookiepre’],
$_config[‘cookie’][‘cookiedomain’],
$_config[‘cookie’][‘cookiepath’]
);

这个时候$fromhash就是最终我们所要获取的值,最后的链接可以改为:

/bbs/member.php?mod=logging&action=logout&formhash=<?php echo $fromhash;?>

 

本文请结合:http://www.zhanghongliang.com/article/561

分类: php学习 标签: ,

jQuery.dotdotdot.js单行/多行文本溢出省略号(替代css)

2014年11月28日 没有评论

使用方法:$(“#div”).dotdotdot();

 

//jQuery.dotdotdot.js
//https://github.com/BeSite/jQuery.dotdotdot
!function(t,e){function n(t,e,n){var r=t.children(),o=!1;t.empty();for(var i=0,d=r.length;d>i;i++){var l=r.eq(i);if(t.append(l),n&&t.append(n),a(t,e)){l.remove(),o=!0;break}n&&n.detach()}return o}function r(e,n,i,d,l){var s=!1,c=”table, thead, tbody, tfoot, tr, col, colgroup, object, embed, param, ol, ul, dl, blockquote, select, optgroup, option, textarea, script, style”,u=”script, .dotdotdot-keep”;return e.contents().detach().each(function(){var f=this,h=t(f);if(“undefined”==typeof f||3==f.nodeType&&0==t.trim(f.data).length)return!0;if(h.is(u))e.append(h);else{if(s)return!0;e.append(h),l&&e[e.is(c)?”after”:”append”](l),a(i,d)&&(s=3==f.nodeType?o(h,n,i,d,l):r(h,n,i,d,l),s||(h.detach(),s=!0)),s||l&&l.detach()}}),s}function o(e,n,r,o,d){var c=e[0];if(!c)return!1;var f=s(c),h=-1!==f.indexOf(” “)?” “:” ”,p=”letter”==o.wrap?””:h,g=f.split(p),v=-1,w=-1,b=0,y=g.length-1;for(o.fallbackToLetter&&0==b&&0==y&&(p=””,g=f.split(p),y=g.length-1);y>=b&&(0!=b||0!=y);){var m=Math.floor((b+y)/2);if(m==w)break;w=m,l(c,g.slice(0,w+1).join(p)+o.ellipsis),a(r,o)?(y=w,o.fallbackToLetter&&0==b&&0==y&&(p=””,g=g[0].split(p),v=-1,w=-1,b=0,y=g.length-1)):(v=w,b=w)}if(-1==v||1==g.length&&0==g[0].length){var x=e.parent();e.detach();var T=d&&d.closest(x).length?d.length:0;x.contents().length>T?c=u(x.contents().eq(-1-T),n):(c=u(x,n,!0),T||x.detach()),c&&(f=i(s(c),o),l(c,f),T&&d&&t(c).parent().append(d))}else f=i(g.slice(0,v+1).join(p),o),l(c,f);return!0}function a(t,e){return t.innerHeight()>e.maxHeight}function i(e,n){for(;t.inArray(e.slice(-1),n.lastCharacter.remove)>-1;)e=e.slice(0,-1);return t.inArray(e.slice(-1),n.lastCharacter.noEllipsis)<0&&(e+=n.ellipsis),e}function d(t){return{width:t.innerWidth(),height:t.innerHeight()}}function l(t,e){t.innerText?t.innerText=e:t.nodeValue?t.nodeValue=e:t.textContent&&(t.textContent=e)}function s(t){return t.innerText?t.innerText:t.nodeValue?t.nodeValue:t.textContent?t.textContent:””}function c(t){do t=t.previousSibling;while(t&&1!==t.nodeType&&3!==t.nodeType);return t}function u(e,n,r){var o,a=e&&e[0];if(a){if(!r){if(3===a.nodeType)return a;if(t.trim(e.text()))return u(e.contents().last(),n)}for(o=c(a);!o;){if(e=e.parent(),e.is(n)||!e.length)return!1;o=c(e[0])}if(o)return u(t(o),n)}return!1}function f(e,n){return e?”string”==typeof e?(e=t(e,n),e.length?e:!1):e.jquery?e:!1:!1}function h(t){for(var e=t.innerHeight(),n=[“paddingTop”,”paddingBottom”],r=0,o=n.length;o>r;r++){var a=parseInt(t.css(n[r]),10);isNaN(a)&&(a=0),e-=a}return e}if(!t.fn.dotdotdot){t.fn.dotdotdot=function(e){if(0==this.length)return t.fn.dotdotdot.debug(‘No element found for “‘+this.selector+'”.’),this;if(this.length>1)return this.each(function(){t(this).dotdotdot(e)});var o=this;o.data(“dotdotdot”)&&o.trigger(“destroy.dot”),o.data(“dotdotdot-style”,o.attr(“style”)||””),o.css(“word-wrap”,”break-word”),”nowrap”===o.css(“white-space”)&&o.css(“white-space”,”normal”),o.bind_events=function(){return o.bind(“update.dot”,function(e,d){e.preventDefault(),e.stopPropagation(),l.maxHeight=”number”==typeof l.height?l.height:h(o),l.maxHeight+=l.tolerance,”undefined”!=typeof d&&((“string”==typeof d||d instanceof HTMLElement)&&(d=t(“<div />”).append(d).contents()),d instanceof t&&(i=d)),g=o.wrapInner(‘<div class=”dotdotdot” />’).children(),g.contents().detach().end().append(i.clone(!0)).find(“br”).replaceWith(” <br /> “).end().css({height:”auto”,width:”auto”,border:”none”,padding:0,margin:0});var c=!1,u=!1;return s.afterElement&&(c=s.afterElement.clone(!0),c.show(),s.afterElement.detach()),a(g,l)&&(u=”children”==l.wrap?n(g,l,c):r(g,o,g,l,c)),g.replaceWith(g.contents()),g=null,t.isFunction(l.callback)&&l.callback.call(o[0],u,i),s.isTruncated=u,u}).bind(“isTruncated.dot”,function(t,e){return t.preventDefault(),t.stopPropagation(),”function”==typeof e&&e.call(o[0],s.isTruncated),s.isTruncated}).bind(“originalContent.dot”,function(t,e){return t.preventDefault(),t.stopPropagation(),”function”==typeof e&&e.call(o[0],i),i}).bind(“destroy.dot”,function(t){t.preventDefault(),t.stopPropagation(),o.unwatch().unbind_events().contents().detach().end().append(i).attr(“style”,o.data(“dotdotdot-style”)||””).data(“dotdotdot”,!1)}),o},o.unbind_events=function(){return o.unbind(“.dot”),o},o.watch=function(){if(o.unwatch(),”window”==l.watch){var e=t(window),n=e.width(),r=e.height();e.bind(“resize.dot”+s.dotId,function(){n==e.width()&&r==e.height()&&l.windowResizeFix||(n=e.width(),r=e.height(),u&&clearInterval(u),u=setTimeout(function(){o.trigger(“update.dot”)},100))})}else c=d(o),u=setInterval(function(){if(o.is(“:visible”)){var t=d(o);(c.width!=t.width||c.height!=t.height)&&(o.trigger(“update.dot”),c=t)}},500);return o},o.unwatch=function(){return t(window).unbind(“resize.dot”+s.dotId),u&&clearInterval(u),o};var i=o.contents(),l=t.extend(!0,{},t.fn.dotdotdot.defaults,e),s={},c={},u=null,g=null;return l.lastCharacter.remove instanceof Array||(l.lastCharacter.remove=t.fn.dotdotdot.defaultArrays.lastCharacter.remove),l.lastCharacter.noEllipsis instanceof Array||(l.lastCharacter.noEllipsis=t.fn.dotdotdot.defaultArrays.lastCharacter.noEllipsis),s.afterElement=f(l.after,o),s.isTruncated=!1,s.dotId=p++,o.data(“dotdotdot”,!0).bind_events().trigger(“update.dot”),l.watch&&o.watch(),o},t.fn.dotdotdot.defaults={ellipsis:”… “,wrap:”word”,fallbackToLetter:!0,lastCharacter:{},tolerance:0,callback:null,after:null,height:null,watch:!1,windowResizeFix:!0},t.fn.dotdotdot.defaultArrays={lastCharacter:{remove:[” “,” ”,”,”,”;”,”.”,”!”,”?”],noEllipsis:[]}},t.fn.dotdotdot.debug=function(){};var p=1,g=t.fn.html;t.fn.html=function(n){return n!=e&&!t.isFunction(n)&&this.data(“dotdotdot”)?this.trigger(“update”,[n]):g.apply(this,arguments)};var v=t.fn.text;t.fn.text=function(n){return n!=e&&!t.isFunction(n)&&this.data(“dotdotdot”)?(n=t(“<div />”).text(n).html(),this.trigger(“update”,[n])):v.apply(this,arguments)}}}(jQuery);

discuz手动增加登录成功或退出成功的执行代码

2014年11月26日 没有评论

往往有的时候,我们需要根据discuz登录成功或者退出成功后加入自己的代码,今天稍微看了下,具体如下:

登录成功:

打开source/class/class_member.php

找到:if($result[‘status’] > 0) {

在此处加入:my_loginfunction(),自己定义下my_loginfunction()就可以了

 

退出成功:

打开source/class/class_member.php

找到function on_logout(){

再找到clearcookies(),加入:my_loginout(),自定义下my_loginout()就可以了。

 

注册成功:

注册成功的时候也是需要直接登录成功的,那么找到:

$uid = uc_user_register(addslashes($username), $password, $email, $questionid, $answer, $_G[‘clientip’]);

在if($uid <= 0) {后面加上:

else {
session_start();
$_SESSION[‘loginUser’]=array(‘uid’=>intval($uid),’username’=>$username);
}

如图:

1

discuz手动增加登录成功或退出成功的执行代码就结束并搞定了

分类: php学习 标签: , ,

discuz用户新消息表是哪个

2014年11月26日 没有评论

discuz用户新消息表是哪个?在下面2个表中

pre_common_member_grouppm
pre_common_grouppm

其中pre_common_grouppm是消息内容

而pre_common_member_grouppm是具体的消息状态

 

分类: php学习 标签: ,

更新 Facebook 条款和政策,并推出“隐私基本信息”版块

2014年11月25日 没有评论

我们在此通知您,Facebook 将于 2015 年 1 月 1 日更新条款和政策,并推出“隐私基本信息”版块。您可以在下方或访问 Facebook 了解详情。

在过去一年里,我们推出了新功能与控件,帮助您更好地享受 Facebook 的服务,此外,我们还聆听了一些用户的意见,向用户更加详细地解释 Facebook 如何获取和使用用户的信息。

现在,隐私基本信息 版块将提示和指导您掌控自己的 Facebook 体验。我们还针对潜心开发的一些新功能更新了 Facebook 条款、数据政策和 Cookie 政策,并使这些内容更易于理解。此外,我们一直努力改进基于您在 Facebook 之外的应用与网站使用状况投放的广告,以及增强您对最终看到的广告的控制。

我们真诚地希望这些更新有助于提升您的体验。Facebook 始终致力于保护用户信息并提供有实际意义的隐私控件。我们相信今天的公告是意义重大的一步。

谢谢!
Erin Egan
全球首席隐私官

Facebook 条款和政策更新:帮助您更好地了解 Facebook 的运作方式以及如何更好地控制个人信息

隐私基本信息
“隐私基本信息”将提供互动式指导,为用户解答关于如何在 Facebook 有效管理个人信息的一些常见问题。例如,您可以了解如何取消圈人、删除好友、拉黑,以及如何为每个帖子选择分享对象。这些信息有 36 个语言版本。

与隐私设置检查、用户公开发帖提醒和简化版分享对象选择器一样,“隐私基本信息”是为了确保您顺利与理想分享对象分享内容的最新举措。

助您更好地享受 Facebook 服务
每天,Facebook 用户都在使用我们的应用和服务与其他用户、地点及其关注的事物互动。这些政策的更新内容不仅涉及我们为改进 Facebook 用户体验而潜心开发的一些新产品,而且还以更加易懂的方式阐明了 Facebook 服务的运作方式。以下为重点摘要:

获悉周围动态:我们正在更新相关政策,以便阐明 Facebook 如何根据您决定使用的功能获取位置信息。数百万用户在喜爱的位置签到并使用诸如周边好友(目前只在某些地区可用)等可选功能。我们正努力寻找能根据您的位置和好友当前动态向您展示最相关信息的方式。例如,在将来,如果您分享所在位置,就可能看到附近餐馆的菜单,或者当前区域内好友的动态消息。

增加购物便捷性:在一些地区,我们正在测试“购买”按钮,这个按钮可以让用户不离开 Facebook 就能发现和购买商品。此外,我们正在努力寻求更为便利的新交易方式。

随时查阅有关 Facebook 隐私的信息:为了更方便用户获取这些信息,我们将提示和建议迁移到隐私基本信息版块。我们精简了数据政策,让它更易于阅读。

了解我们如何使用收到的信息:例如,我们使用设备信息帮助您优化移动应用体验,比如获取电池和信号强度方面的信息有助于确保 Facebook 应用在您的设备上正常运行。我们会请求您允许 Facebook 使用您手机当前的位置,从而提供诸如“签到”等可选功能,或者将您的位置添加到帖子中。

了解 Facebook 旗下公司和应用如何相互配合:在过去几年间,Facebook 不断发展壮大,我们希望您了解 Facebook 大家庭及其应用和服务。我们利用收集到的信息改进用户体验。例如,如果您的 Instagram 帐户被锁,可使用 Facebook 信息找回密码。在此更新中,Instagram、WhatsApp 和其他 Facebook 子公司对保护用户信息及隐私的承诺均不会改变。

用户信息与广告:有时,用户会问 Facebook 如何与广告主分享用户信息。此更新并不会对此进行更改,我们仍然会在不透露受众身份的前提下,帮助广告主向用户展示广告。详细了解 Facebook 广告以及如何控制最终看到的广告。

帮助您更好地控制广告
有些用户反映,如果使用多种设备与浏览器,就很难控制看到的广告类型。以前,如果您在笔记本电脑上选择阻止某类广告,该选择在手机上对这类广告无效。我们清楚,许多用户并非只用一个手机、平板电脑或浏览器访问 Facebook,所以,如果设置一次便对所有设备生效,会更方便用户。

这就是为什么 Facebook 要努力确保您对看到的广告做出的选择对所有设备都通用。您可以通过数字广告联盟选择阻止基于您所用应用与网站投放的 Facebook 广告。在 iOS 和 Android 系统,您还可以使用控件选择阻止广告。如果您告诉我们不希望看到某类广告,您用于访问 Facebook 的所有设备都会自动应用您的选择。同时,我们准备在更多国家/地区提供广告首选项工具,首批国家/地区是澳大利亚、加拿大、法国、德国、爱尔兰和英国。

这些更新内容于 2015 年 1 月 1 日生效。同样,欢迎您对 Facebook 政策提供反馈意见。

css.php