138 |
139 |
';
182 | }
183 | }
184 | }
185 | } else {
186 | header('Location:login.php');
187 | }
188 | ?>
189 |
190 |
191 |
192 |
193 |
贴吧云
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
- TiebaCloud
- Index
203 |
204 |
©2014 侠盗小飞机,sources on Github
205 |
206 |
207 |
208 |
209 |
213 |
214 |
215 |
216 |
217 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
231 |
232 |
235 |
236 |
239 |
240 |
241 |
242 |
243 |
262 |
263 |
264 |
265 |
266 |
281 |
282 |
283 |
284 |
285 |
--------------------------------------------------------------------------------
/install/index.php:
--------------------------------------------------------------------------------
1 | 5)
3 | {
4 | header('location:../index.php');
5 | }
6 | ?>
7 |
8 |
9 |
10 |
Tieba Cloud - Install
11 |
12 |
13 |
14 |
15 |
16 |
52 |
53 |
54 |
55 |
56 |
60 |
61 |
#应该怎么填写它
62 |
数据库服务器地址 这意味着你需要填写你的mysql服务器地址,通常它是一段IP字符如
138.135.12.10
或者
mysql.jae.jd.com
之类的地址
另外如果你的数据库端口如果不是默认3306端口那么你还需要在你的地址后面输入冒号和你的端口地址,例如京东云的mysql服务器使用4066端口,你就需要输入
mysql.jae.jd.com:4066
63 |
数据库用户名账号 即你的mysql用户名
64 |
数据库用户名账号 你的mysql用户名密码
65 |
数据库名称 填写存储贴吧云数据库的库名.如果你选择已存在的库,那么它将会在库内生成表.
66 |
管理员账号 这个账号用来管理贴吧云系统,它拥有前台最高权限.
67 |
管理员密码 管理员账号密码,请谨慎填写.
68 |
#我还有其他问题
69 | 请访问
racalinux.cn提出你的问题.
70 |
71 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/javascripts/bootstrap.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.0.3 (http://getbootstrap.com)
3 | * Copyright 2013 Twitter, Inc.
4 | * Licensed under http://www.apache.org/licenses/LICENSE-2.0
5 | */
6 |
7 | if("undefined"==typeof jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]'),b=!0;if(a.length){var c=this.$element.find("input");"radio"===c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?b=!1:a.find(".active").removeClass("active")),b&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}b&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('
').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i
').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h
'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery);
--------------------------------------------------------------------------------
/lib/account.php:
--------------------------------------------------------------------------------
1 | 注册成功!';}
22 | } else {
23 | die("select database name error,check your config.inc.php.");
24 | }
25 | }
26 | }
27 | } else if (isset($_POST['log'])) {
28 | $con = mysqli_connect(DB_IP, DB_USERNAME, DB_PASSWORD);
29 | if (!$con) {
30 | error_tpl('数据库连接错误', '未能正确连接数据库,请检查config.inc.php文件是否存在.', '../index.php');
31 | } else {
32 | if (mysqli_select_db($con, DB_NAME)) {
33 | $ret = mysqli_query($con, 'SELECT * FROM tc_user WHERE username ="' . $_POST['log_username'] . '"AND password ="' . md5($_POST['log_password']) . '"');
34 | if ($res = mysqli_fetch_array($ret)) {
35 | session_start();
36 | $_SESSION["u"] = $_POST['log_username'];
37 | header('Location:../index.php');
38 | } else {
39 | error_tpl('登录错误', '你输入的用户名或者密码错误 :(', '../login.php');
40 | }
41 | } else {
42 | error_tpl('数据库选择错误', '未能正确选择数据库,请检查config.inc.php文件是否存在或者数据库是否存在.', '../index.php');
43 | }
44 | }
45 | } else {
46 | header('Location:../login.php');
47 | }
48 | ?>
49 |
--------------------------------------------------------------------------------
/lib/admin.php:
--------------------------------------------------------------------------------
1 | 关闭贴吧云注册成功';
18 | } else {
19 | mysqli_query($con, 'UPDATE tc_tmp SET count=0 WHERE uid=2');
20 | mysqli_close($con);
21 | echo '
关闭贴吧云注册成功
';
23 | }
24 | }
25 | }
26 | } else if (isset($_POST['signon'])) {
27 | $con = mysqli_connect(DB_IP, DB_USERNAME, DB_PASSWORD);
28 | if (!$con) {
29 | error_tpl('数据库连接错误', '未能正确连接数据库,请检查config.inc.php文件是否存在.', '../index.php');
30 | } else {
31 | if (mysqli_select_db($con, DB_NAME)) {
32 | mysqli_query($con, 'UPDATE tc_tmp SET count=1 WHERE uid=2');
33 | mysqli_close($con);
34 | echo '
开启贴吧云注册成功
';
36 | }
37 | }
38 | }
39 | } else {
40 | error_tpl('访问错误', '禁止直接访问admin.php文件.', '../index.php');
41 | }
42 |
43 | ?>
--------------------------------------------------------------------------------
/lib/api.php:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/lib/bind.php:
--------------------------------------------------------------------------------
1 | get_passport_info();
14 | $con = mysqli_connect(DB_IP, DB_USERNAME, DB_PASSWORD);
15 | if (!$con) {
16 | die('account bind error.');
17 | } else {
18 | if (mysqli_select_db($con, DB_NAME)) {
19 | $list = get_list($_GET['bindback']);
20 | mysqli_query($con, 'set names utf8');
21 | mysqli_query($con, 'UPDATE tc_baiduinfo SET baidu_id="' . $result['baiduid'] . '", avastar="' . $result['avatar'] . '" WHERE tc_id="' . $_SESSION['u'] . '"');
22 | mysqli_query($con, 'UPDATE tc_user SET cookie= "' . base64_encode($_GET['bindback']) . '" WHERE username="' . $_SESSION['u'] . '"');
23 | for ($i = 0; $i < count($list); $i++) {
24 | for ($k = 0; $k < count($list[$i]['url']); $k++) {
25 | mysqli_query($con, 'INSERT INTO tc_tieba(username,fid,url) VALUES("' . $_SESSION['u'] . '","' . $list[$i]['balvid'][$k] . '","' . $list[$i]['url'][$k] . '")');
26 | }
27 | }
28 | echo '
account bind success!
';
30 | }
31 | }
32 | }
33 | } else if (isset($_POST['manual_bind'])) {
34 | $bp = new baidu_passport($_POST['user_cookie']);
35 | $result = $bp->get_passport_info();
36 | $con = mysqli_connect(DB_IP, DB_USERNAME, DB_PASSWORD);
37 | if (!$con) {
38 | error_tpl('数据库连接错误', '未能成功连接数据库,请检查config.inc.php文件是否存在', '../index.php');
39 | } else {
40 | if (mysqli_select_db($con, DB_NAME)) {
41 | $list = get_list($_POST['user_cookie']);
42 | mysqli_query($con, 'set names utf8');
43 | mysqli_query($con, 'UPDATE tc_baiduinfo SET baidu_id="' . $result['baiduid'] . '", avastar="' . $result['avatar'] . '" WHERE tc_id="' . $_SESSION['u'] . '"');
44 | mysqli_query($con, 'UPDATE tc_user SET cookie= "' . base64_encode($_POST['user_cookie']) . '" WHERE username="' . $_SESSION['u'] . '"');
45 | for ($i = 0; $i < count($list); $i++) {
46 | for ($k = 0; $k < count($list[$i]['url']); $k++) {
47 | mysqli_query($con, 'INSERT INTO tc_tieba(username,fid,url) VALUES("' . $_SESSION['u'] . '","' . $list[$i]['balvid'][$k] . '","' . $list[$i]['url'][$k] . '")');
48 | }
49 | }
50 | echo '
account bind success!
';
52 | }
53 | }
54 | }
55 | ?>
--------------------------------------------------------------------------------
/lib/class.passport.php:
--------------------------------------------------------------------------------
1 | cookie = $cookie_;
8 | }
9 | /**
10 | * 获取passport信息[数组];
11 | * @return $return_array['avatar'] 用户头像
12 | * @return $return_array['baiduid'] 用户名称
13 | * @return $return_array['login_histroy'] 用户登录历史
14 | *
15 | */
16 | public function get_passport_info() {
17 | $passport_info = array();
18 | $tbs_url = 'http://passport.baidu.com/center';
19 | $ch = curl_init($tbs_url);
20 | curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; MB526 Build/JZO54K) AppleWebKit/530.17 (KHTML, like Gecko) FlyFlow/2.4 Version/4.0 Mobile Safari/530.17 baidubrowser/042_1.8.4.2_diordna_458_084/alorotoM_61_2.1.4_625BM/1200a/39668C8F77034455D4DED02169F3F7C7%7C132773740707453/1', 'Referer: http://tieba.baidu.com/'));
21 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
22 | curl_setopt($ch, CURLOPT_COOKIE, $this->cookie);
23 | $passport_html = curl_exec($ch);
24 | curl_close($ch);
25 | $regex = '/class=account-avatar-show src="(.*?)\?/';
26 | $regex1 = '/id=displayUsername\stitle="(.*?)"/';
27 | preg_match($regex, $passport_html, $baidu_avatar);
28 | preg_match($regex1, $passport_html, $baidu_name);
29 | $regex3 = '/
(.*)
/';
30 | preg_match_all($regex3, $passport_html, $tmp);
31 | $regex4 = '/(.*?)\s/';
32 | preg_match_all($regex4, @$tmp[1][0], $test);
33 | $passport_info['avatar'] = @$baidu_avatar[1];
34 | $passport_info['baiduid'] = @$baidu_name[1];
35 | $passport_info['login_histroy'] = @$test[1];
36 | return $passport_info;
37 | }
38 | //返回用户绑定的账号平台[数组]
39 | public function get_accountbind_platform() {
40 | $tbs_url = 'http://passport.baidu.com/accountbind';
41 | $ch = curl_init($tbs_url);
42 | curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; MB526 Build/JZO54K) AppleWebKit/530.17 (KHTML, like Gecko) FlyFlow/2.4 Version/4.0 Mobile Safari/530.17 baidubrowser/042_1.8.4.2_diordna_458_084/alorotoM_61_2.1.4_625BM/1200a/39668C8F77034455D4DED02169F3F7C7%7C132773740707453/1', 'Referer: http://tieba.baidu.com/'));
43 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
44 | curl_setopt($ch, CURLOPT_COOKIE, $this->cookie);
45 | $passport_html = curl_exec($ch);
46 | curl_close($ch);
47 | $regex = '/class=icon-name>(.*?)';
48 | preg_match_all($regex, $passport_html, $platform);
49 | return $platform[1];
50 | }
51 | //返回百度头像链接[字符串]
52 | public static function get_user_avatar($cookie) {
53 | $tbs_url = 'http://passport.baidu.com/center';
54 | $ch = curl_init($tbs_url);
55 | curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; MB526 Build/JZO54K) AppleWebKit/530.17 (KHTML, like Gecko) FlyFlow/2.4 Version/4.0 Mobile Safari/530.17 baidubrowser/042_1.8.4.2_diordna_458_084/alorotoM_61_2.1.4_625BM/1200a/39668C8F77034455D4DED02169F3F7C7%7C132773740707453/1', 'Referer: http://tieba.baidu.com/'));
56 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
57 | curl_setopt($ch, CURLOPT_COOKIE, $cookie);
58 | $passport_html = curl_exec($ch);
59 | curl_close($ch);
60 | $regex = '/class=account-avatar-show src="(.*?)\?/';
61 | preg_match($regex, $passport_html, $baidu_avatar);
62 | return $baidu_avatar;
63 | }
64 | //返回百度用户名称[字符串]
65 | public static function get_user_name($cookie) {
66 | $tbs_url = 'http://passport.baidu.com/center';
67 | $ch = curl_init($tbs_url);
68 | curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; MB526 Build/JZO54K) AppleWebKit/530.17 (KHTML, like Gecko) FlyFlow/2.4 Version/4.0 Mobile Safari/530.17 baidubrowser/042_1.8.4.2_diordna_458_084/alorotoM_61_2.1.4_625BM/1200a/39668C8F77034455D4DED02169F3F7C7%7C132773740707453/1', 'Referer: http://tieba.baidu.com/'));
69 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
70 | curl_setopt($ch, CURLOPT_COOKIE, $cookie);
71 | $passport_html = curl_exec($ch);
72 | curl_close($ch);
73 | $regex = '/id=displayUsername\stitle="(.*?)"/';
74 | preg_match($regex, $passport_html, $baidu_name);
75 | return $baidu_name[1];
76 | }
77 | /*
78 | 返回用户登录历史[数组]
79 | 格式如下:
80 | [0]=时间[1]=地点;[2]=IP;[3]=浏览器[4]=登录方式[5]=设备
81 | [6]=时间[7]=地点;...;
82 | */
83 | public static function get_login_histroy($cookie) {
84 | $tbs_url = 'http://passport.baidu.com/center';
85 | $ch = curl_init($tbs_url);
86 | curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; MB526 Build/JZO54K) AppleWebKit/530.17 (KHTML, like Gecko) FlyFlow/2.4 Version/4.0 Mobile Safari/530.17 baidubrowser/042_1.8.4.2_diordna_458_084/alorotoM_61_2.1.4_625BM/1200a/39668C8F77034455D4DED02169F3F7C7%7C132773740707453/1', 'Referer: http://tieba.baidu.com/'));
87 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
88 | curl_setopt($ch, CURLOPT_COOKIE, $cookie);
89 | $passport_html = curl_exec($ch);
90 | curl_close($ch);
91 | $regex = '/ |
(.*)
/';
92 | preg_match_all($regex, $passport_html, $tmp);
93 | $regex2 = '/(.*?)\s/';
94 | preg_match_all($regex2, $tmp[1][0], $test);
95 | return $test[1];
96 | }
97 |
98 | var $cookie;
99 | }
100 |
101 | //author:iicx
102 | //source on https://github.com/iicx/BaiduUtil,thx;
103 | class BaiduUtil {
104 |
105 | public $useZlib = FALSE;
106 | public $returnThis = FALSE;
107 | public $lastFetch = array();
108 | public $lastReturn = array();
109 | public $lastformData = array();
110 |
111 | protected $un = '';
112 | protected $uid = '';
113 | protected $tbs = '';
114 | protected $bduss = '';
115 | protected $cookie = '';
116 | protected $client = array();
117 | protected $formData = array();
118 | protected $forumPages = array();
119 |
120 | public function __construct($cookie = NULL, $userinfo = array(), $client = NULL) {
121 | if (!is_null($cookie)) {
122 | $cookie = trim($cookie);
123 | $temCookieHasBduss = stripos($cookie, 'bduss=');
124 | $temCookieHasSemicolon = stripos($cookie, ';');
125 | if ($temCookieHasBduss === FALSE && $temCookieHasSemicolon === FALSE) {
126 | $this->bduss = $cookie;
127 | } elseif ($temCookieHasBduss !== FALSE && $temCookieHasSemicolon === FALSE) {
128 | $this->bduss = substr($cookie, 6);
129 | } elseif (preg_match('/bduss\s?=\s?([^ ;]*)/i', $cookie, $matches)) {
130 | $this->bduss = $matches[1];
131 | } else {
132 | throw new Exception('请输入合法的cookie', -99);
133 | }
134 | $this->cookie = $this->buildFullCookie();
135 | }
136 | if (is_null($client)) {
137 | $this->client = self::getClient();
138 | } else {
139 | $this->client = $client;
140 | }
141 | if (isset($userinfo['un'])) {
142 | $this->un = $userinfo['un'];
143 | }
144 |
145 | if (isset($userinfo['uid'])) {
146 | $this->uid = $userinfo['uid'];
147 | }
148 |
149 | }
150 |
151 | protected function fetch($url, $mobile = TRUE, $usecookie = TRUE) {
152 | $ch = curl_init($url);
153 | if ($mobile === TRUE) {
154 | $common_data = array(
155 | 'from' => 'baidu_appstore',
156 | 'stErrorNums' => '0',
157 | 'stMethod' => '1',
158 | 'stMode' => '1',
159 | 'stSize' => rand(50, 2000),
160 | 'stTime' => rand(50, 500),
161 | 'stTimesNum' => '0',
162 | 'timestamp' => time() . self::random(3, TRUE),
163 | );
164 | $predata = $this->client + $this->formData + $common_data;
165 | ksort($predata);
166 | $this->formData = array();
167 | if ($usecookie === TRUE) {
168 | $this->formData['BDUSS'] = $this->bduss;
169 | }
170 | $this->formData += $predata;
171 | $sign_str = '';
172 | foreach ($this->formData as $key => $value) {
173 | $sign_str .= $key . '=' . $value;
174 | }
175 |
176 | $sign = strtoupper(md5($sign_str . 'tiebaclient!!!'));
177 | $this->formData['sign'] = $sign;
178 | $http_header = array(
179 | 'User-Agent: BaiduTieba for Android 6.0.1',
180 | 'Content-Type: application/x-www-form-urlencoded',
181 | 'Host: c.tieba.baidu.com',
182 | 'Connection: Keep-Alive',
183 | );
184 | if ($this->useZlib === TRUE) {
185 | $http_header[] = 'Accept-Encoding: gzip';
186 | }
187 |
188 | } else {
189 | $http_header = array(
190 | 'User-Agent: Mozilla/5.0 (Windows NT 6.3; rv:29.0) Gecko/20100101 Firefox/29.0',
191 | 'Connection: Keep-Alive',
192 | );
193 | curl_setopt($ch, CURLOPT_COOKIE, $this->cookie);
194 | }
195 | curl_setopt($ch, CURLOPT_HTTPHEADER, $http_header);
196 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
197 | curl_setopt($ch, CURLOPT_POST, TRUE);
198 | curl_setopt($ch, CURLOPT_TIMEOUT, 10);
199 | curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($this->formData));
200 | $res_json = curl_exec($ch);
201 | curl_close($ch);
202 | if (empty($res_json)) {
203 | throw new Exception('网络连接失败', -10);
204 | }
205 |
206 | if ($this->useZlib === TRUE) {
207 | $res_json = gzdecode($res_json);
208 | }
209 |
210 | $result = @json_decode($res_json, TRUE);
211 | if ($mobile === TRUE) {
212 | if (!array_key_exists('error_code', $result)) {
213 | throw new Exception('未收到正确数据', -11);
214 | }
215 |
216 | if (!empty($result['anti']['tbs'])) {
217 | $this->tbs = $result['anti']['tbs'];
218 | }
219 |
220 | if (!empty($result['user']['id'])) {
221 | $this->uid = $result['user']['id'];
222 | }
223 |
224 | if (!empty($result['user']['name'])) {
225 | $this->un = $result['user']['name'];
226 | }
227 |
228 | }
229 | $this->last_formData = $this->formData;
230 | $this->formData = array();
231 | $this->lastFetch = $result;
232 | return $result;
233 | }
234 |
235 | public function returnThis() {
236 | $this->returnThis = TRUE;
237 | return $this;
238 | }
239 |
240 | public static function simpleFetch($url) {
241 | $ch = curl_init($url);
242 | curl_setopt($ch, CURLOPT_HTTPHEADER, array(
243 | 'User-Agent: Mozilla/5.0 (Windows NT 6.3; rv:29.0) Gecko/20100101 Firefox/29.0',
244 | 'Connection: Keep-Alive',
245 | ));
246 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
247 | $content = curl_exec($ch);
248 | curl_close($ch);
249 | $content = json_decode($content, true);
250 | return $content;
251 | }
252 |
253 | protected function commonReturn($data) {
254 | $result = array();
255 | if (isset($data['no']) && !isset($data['errorcode'])) {
256 | $data['error_code'] = $data['no'];
257 | }
258 |
259 | if (isset($data['error']) && !isset($data['error_msg'])) {
260 | $data['error_msg'] = $data['error'];
261 | }
262 |
263 | if ($data['error_code'] == 0 && !is_null($data['error_code'])) {
264 | $data['error_msg'] = "执行成功";
265 | } elseif (!isset($data['error_msg'])) {
266 | $data['error_msg'] = "未知错误,错误代码" . $data['error_code'];
267 | } else {
268 | $data['error_msg'] .= " return=" . $data['error_code'];
269 | }
270 | $result['status'] = $data['error_code'];
271 | $result['msg'] = $data['error_msg'];
272 | if (isset($data['i']) && is_array($data['i'])) {
273 | foreach ($data['i'] as $key => $value) {
274 | $result['data'][$key] = $value;
275 | }
276 | }
277 | $this->lastReturn = $result;
278 | return $result;
279 | }
280 |
281 | public static function random($length, $numeric = FALSE) {
282 | $seed = base_convert(md5(microtime() . $_SERVER['DOCUMENT_ROOT']), 16, $numeric ? 10 : 35);
283 | $seed = $numeric ? (str_replace('0', '', $seed) . '012340567890') : ($seed . 'zZ' . strtoupper($seed));
284 | $hash = '';
285 | $max = strlen($seed) - 1;
286 | for ($i = 0; $i < $length; $i++) {
287 | $hash .= $seed{mt_rand(0, $max)};
288 | }
289 | return $hash;
290 | }
291 |
292 | protected function clientRelogin() {
293 | $this->formData = array(
294 | 'bdusstoken' => $this->bduss,
295 | );
296 | $result = $this->fetch('http://c.tieba.baidu.com/c/s/login');
297 | if ($result['error_code'] != 0) {
298 | switch ($result['error_code']) {
299 | case 1:
300 | case 1990006:
301 | throw new Exception('用户未登录或登录失败,请更换账号或重试', -19);
302 | break;
303 | default:
304 | throw new Exception('Relogin失败,status:' . $result['error_code'] . ',msg' . $result['error_msg'], -15);
305 | break;
306 | }
307 | }
308 | }
309 |
310 | public function un() {
311 | if (empty($this->un)) {
312 | $this->clientRelogin();
313 | }
314 |
315 | if (empty($this->un)) {
316 | $result = $this->fetchWebUserPrivateInfo();
317 | $this->un = $result['data']['un'];
318 | }
319 | return $this->un;
320 | }
321 |
322 | public function uid() {
323 | if (empty($this->uid)) {
324 | $this->clientRelogin();
325 | }
326 |
327 | return $this->uid;
328 | }
329 |
330 | public function tbs() {
331 | if (empty($this->tbs)) {
332 | $this->clientRelogin();
333 | }
334 |
335 | return $this->tbs;
336 | }
337 |
338 | public function fetchWebTbs() {
339 | if (!empty($this->tbs)) {
340 | return $this->tbs;
341 | }
342 |
343 | $result = $this->fetch('http://tieba.baidu.com/dc/common/tbs', FALSE);
344 | if (array_key_exists('is_login', $result) === TRUE && $result['is_login'] === 0) {
345 | throw new Exception('获取webtbs失败', -14);
346 | }
347 |
348 | return $result['tbs'];
349 | }
350 |
351 | public function fetchWebUserPrivateInfo() {
352 | $result = $this->fetch('http://tieba.baidu.com/f/user/json_userinfo', FALSE);
353 | $temData = $result['data'];
354 | $result['i'] = array(
355 | 'un' => $temData['user_name_show'],
356 | 'email' => $temData['email'],
357 | 'mobile' => $temData['mobilephone'],
358 | 'head_photo' => 'http://tb.himg.baidu.com/sys/portrait/item/' . $temData['user_portrait'],
359 | );
360 | return $this->commonReturn($result);
361 | }
362 |
363 | public static function fetchWebUserInfo($un) {
364 | $result = self::simpleFetch('http://tieba.baidu.com/home/get/panel?ie=utf-8&un=' . urlencode($un));
365 | switch ($result['data']['sex']) {
366 | case 'female':
367 | $result['data']['sex'] = 2;
368 | break;
369 | default:
370 | $result['data']['sex'] = 1;
371 | break;
372 | }
373 | $temData = $result['data'];
374 | $data['data'] = array(
375 | 'uid' => $temData['id'],
376 | 'sex' => $temData['sex'],
377 | 'tb_age' => $temData['tb_age'],
378 | 'post_num' => $temData['post_num'], /*显示不完全,如【1万】*/
379 | 'head_photo' => 'http://tb.himg.baidu.com/sys/portrait/item/' . $temData['portrait'],
380 | 'head_photo_h' => 'http://tb.himg.baidu.com/sys/portrait/item/' . $temData['portrait_h'],
381 | );
382 | $data['status'] = $result['no'];
383 | $data['msg'] = $result['error'];
384 | return $data;
385 | }
386 |
387 | public static function fetchUid($un) {
388 | $result = self::fetchWebUserInfo($un);
389 | return $result['data']['uid'];
390 | }
391 |
392 | public static function fetchHeadPhoto($un) {
393 | $result = self::fetchWebUserInfo($un);
394 | return $result['data']['head_photo'];
395 | }
396 |
397 | public function fetchWebMeizhiPanel($uid, $un = NULL) {
398 | if (!is_null($un) && is_null($uid)) {
399 | $temUserInfo = self::fetchWebUserInfo($un);
400 | $uid = $temUserInfo['data']['uid'];
401 | }
402 | $this->formData = array(
403 | 'user_id' => $uid,
404 | 'type' => '1',
405 | );
406 | $result = $this->fetch('http://tieba.baidu.com/encourage/get/meizhi/panel', FALSE);
407 | $result['i'] = $this->buildMeizhiResultArray($result);
408 | $result['i']['kw'] = $result['data']['forum_name']; // 认证贴吧的吧名
409 | return $this->commonReturn($result);
410 | }
411 |
412 | public function fetchClientUserInfo($uid = NULL) {
413 | if (is_null($uid)) {
414 | $temIsOwner = '1';
415 | $temUid = $this->uid();
416 | } else {
417 | $temIsOwner = '0';
418 | $temUid = $uid;
419 | }
420 | $this->formData = array(
421 | 'has_plist' => '1',
422 | 'is_owner' => $temIsOwner,
423 | 'need_post_count' => '1',
424 | 'pn' => '1',
425 | 'rn' => '20',
426 | 'uid' => $temUid,
427 | );
428 | $result = $this->fetch("http://c.tieba.baidu.com/c/u/user/profile");
429 | $result['i'] = array(
430 | 'id' => $result['user']['id'],
431 | 'un' => $result['user']['name'],
432 | 'sex' => $result['user']['sex'],
433 | 'tb_age' => $result['user']['tb_age'],
434 | 'fans_num' => $result['user']['fans_num'],
435 | 'concern_num' => $result['user']['concern_num'], /*关注数*/
436 | 'like_forum_num' => $result['user']['like_forum_num'], /*关注贴吧数*/
437 | 'post_num' => $result['user']['post_num'], /*总发帖数*/
438 | 'repost_num' => $result['user']['repost_num'], /*回复数*/
439 | 'thread_num' => $result['user']['thread_num'], /*主题数*/
440 | 'intro' => $result['user']['intro'],
441 | 'head_photo' => 'http://tb.himg.baidu.com/sys/portrait/item/' . $result['user']['portrait'],
442 | 'head_photo_h' => 'http://tb.himg.baidu.com/sys/portrait/item/' . $result['user']['portraith'],
443 | );
444 | return $this->commonReturn($result);
445 | }
446 |
447 | public function fetchForumPage($kw) {
448 | $this->formData = array(
449 | 'kw' => $kw,
450 | 'pn' => '1',
451 | 'q_type' => '2',
452 | 'rn' => '35',
453 | 'scr_dip' => '1.5',
454 | 'scr_h' => '800',
455 | 'scr_w' => '480',
456 | 'st_type' => 'tb_forumlist',
457 | 'with_group' => '1',
458 | );
459 | $result_raw = $this->fetch('http://c.tieba.baidu.com/c/f/frs/page');
460 | $forum = &$this->forumPages[$kw];
461 | $forum['fid'] = $result_raw['forum']['id'];
462 | $forum['name'] = $result_raw['forum']['name'];
463 | $forum['user_level'] = $result_raw['forum']['user_level'];
464 | $forum['tlist'] = array();
465 | $tlist_len = count($result_raw['thread_list']);
466 | for ($i = 0; $i < $tlist_len; $i++) {
467 | $thread = $result_raw['thread_list'][$i];
468 | $tlist = &$forum['tlist'][$i];
469 | $tlist['tid'] = $thread['id'];
470 | @$tlist['is_top'] = $thread['is_top'];
471 | $tlist['is_posted'] = 0;
472 | if (!empty($thread['first_post_id'])) {
473 | $tlist['pid'] = $thread['first_post_id'];
474 | $tlist['is_zaned'] = $thread['zan']['is_liked'];
475 | }
476 | }
477 | }
478 |
479 | public function fetchThreadPage($tid) {
480 | $this->formData = array(
481 | 'back' => '0',
482 | 'kz' => $tid,
483 | 'pn' => '1',
484 | 'q_type' => '2',
485 | 'rn' => '30',
486 | 'scr_dip' => '1.5',
487 | 'scr_h' => '800',
488 | 'scr_w' => '480',
489 | 'with_floor' => '1',
490 | );
491 | $result = $this->fetch('http://c.tieba.baidu.com/c/f/pb/page');
492 | return array(
493 | 'zan_pid' => $result['thread']['post_id'], /*一楼的postid*/
494 | 'is_zaned' => $result['thread']['zan']['is_liked'],
495 | );
496 | }
497 |
498 | public function fetchFansList($num = NULL) {
499 | $result = $this->fetchFollowAndFansList('fans', $num);
500 | return $result;
501 | }
502 |
503 | public function fetchFollowList($num = NULL) {
504 | $result = $this->fetchFollowAndFansList('follow', $num);
505 | return $result;
506 | }
507 |
508 | protected function fetchFollowAndFansList($type, $num) {
509 | if ($type == 'fans') {
510 | $result = $this->fetch('http://c.tieba.baidu.com/c/u/fans/page');
511 | } else {
512 | $result = $this->fetch('http://c.tieba.baidu.com/c/u/follow/page');
513 | }
514 | $temHeadPhoto = array();
515 | foreach ($result['user_list'] as &$temFans) {
516 | $temFans['head_photo'] = 'http://tb.himg.baidu.com/sys/portrait/item/' . $temFans['portrait'];
517 | $temHeadPhoto[] = $temFans['head_photo'];
518 | }
519 | unset($temFans);
520 | $result['i']['user_list'] = $result['user_list']; //id intro is_followed name portrait
521 | $result['i']['head_photo_list'] = $temHeadPhoto;
522 | if ((!is_null($num)) && ($num < count($temHeadPhoto))) {
523 | $result['i']['user_list'] = array_slice($result['user_list'], 0, $num);
524 | $result['i']['head_photo_list'] = array_slice($temHeadPhoto, 0, $num);
525 | }
526 | return $this->commonReturn($result);
527 | }
528 |
529 | public function fetchClientLikedForumList() {
530 | $this->formData = array(
531 | 'like_forum' => '1',
532 | 'recommend' => '0',
533 | 'topic' => '0',
534 | );
535 | $result = $this->fetch('http://c.tieba.baidu.com/c/f/forum/forumrecommend');
536 | $result['i'] = $result['like_forum']; //avatar贴吧头像 forum_id forum_name is_sign level_id
537 | return $this->commonReturn($result);
538 | }
539 |
540 | public function fetchClientMultisignForumList() {
541 | $this->formData = array(
542 | 'user_id' => $this->uid(),
543 | );
544 | $result = $this->fetch('http://c.tieba.baidu.com/c/f/forum/getforumlist');
545 | $result['i'] = $result['forum_info'];
546 | return $this->commonReturn($result);
547 | }
548 |
549 | public static function getClient($type = NULL, $model = NULL, $version = NULL) {
550 | $client = array(
551 | '_client_id' => 'wappc_138' . self::random(10, TRUE) . '_' . self::random(3, TRUE),
552 | '_client_type' => is_null($type) ? rand(1, 4) : $type,
553 | '_client_version' => is_null($version) ? '6.0.1' : $version,
554 | '_phone_imei' => md5(self::random(16, TRUE)),
555 | 'cuid' => strtoupper(md5(self::random(16))) . '|' . self::random(15, TRUE),
556 | 'model' => is_null($model) ? 'M1' : $model,
557 | );
558 | return $client;
559 | }
560 |
561 | public static function getRandomContent() {
562 | $text = <<forumPages)) {
576 | $this->fetchForumPage($kw);
577 | }
578 |
579 | $forum = &$this->forumPages[$kw];
580 | switch ($type) {
581 | case 'post':
582 | $post_threads = array();
583 | foreach ($forum['tlist'] as $thread) {
584 | if ($thread['is_top'] == 0 && $thread['is_posted'] == 0) {
585 | $post_threads[] = $thread;
586 | }
587 |
588 | }
589 | $post_thread = $post_threads[array_rand($post_threads)];
590 | $info = $post_thread['tid'];
591 | break;
592 | case 'zan':
593 | $zan_threads = array();
594 | foreach ($forum['tlist'] as $thread) {
595 | if (!isset($thread['is_zaned'])) {
596 | throw new Exception("没有点赞信息", -18);
597 | }
598 |
599 | if ($thread['is_top'] == 0 && $thread['is_zaned'] == 0) {
600 | $zan_threads[] = $thread;
601 | }
602 |
603 | }
604 | if (!count($zan_threads)) {
605 | throw new Exception('无可赞的帖子', -12);
606 | }
607 |
608 | $zan_thread = $zan_threads[array_rand($zan_threads)];
609 | $info['tid'] = $zan_thread['tid'];
610 | $info['pid'] = $zan_thread['pid'];
611 | break;
612 | case 'forum':
613 | $info['fid'] = $forum['fid'];
614 | $info['name'] = $forum['name'];
615 | $info['user_level'] = $forum['user_level'];
616 | break;
617 | case 'fid':
618 | $info = $forum['fid'];
619 | }
620 | return $info;
621 | }
622 |
623 | public function buildFullCookie() {
624 | return 'BAIDUID=' . strtoupper(self::random(32)) . ':FG=1;BDUSS=' . $this->bduss . ';';
625 | }
626 |
627 | protected function buildMeizhiResultArray($data) {
628 | $result = array(
629 | 'meizhi' => $data['data']['vote_count']['meizhi'],
630 | 'weiniang' => $data['data']['vote_count']['weiniang'],
631 | 'renyao' => $data['data']['vote_count']['renyao'],
632 | 'level' => $data['data']['level'], // 当前认证等级
633 | 'exp_value' => $data['data']['exp_value'], // 还需经验数
634 | 'levelup_left' => $data['data']['levelup_left'], /*升级还需票数*/
635 | );
636 | $resultstr = '当前的妹纸票:' . $result['meizhi'] . ',伪娘票:' . $result['weiniang'] . ',人妖票:' . $result['renyao'] .
637 | '。 认证等级为' . $result['level'] . '级,再获得' . $result['exp_value'] .
638 | '点经验和' . $result['levelup_left'] . '张妹纸票后升级。';
639 | $result['str'] = $resultstr;
640 | return $result;
641 | }
642 |
643 | public function login($un, $passwd, $vcode = NULL, $vcode_md5 = NULL) {
644 | try {
645 | $this->formData = array(
646 | 'isphone' => '0',
647 | 'passwd' => base64_encode($passwd),
648 | 'un' => $un,
649 | );
650 | if (!is_null($vcode) && !is_null($vcode_md5)) {
651 | $vcode_data = array(
652 | 'vcode' => $vcode,
653 | 'vcode_md5' => $vcode_md5,
654 | );
655 | $this->formData += $vcode_data;
656 | }
657 | $result = $this->fetch('http://c.tieba.baidu.com/c/s/login', TRUE, FALSE);
658 | if ($result['error_code'] == 0) {
659 | $temRawBduss = $result['user']['BDUSS'];
660 | preg_match('/(.*)\|/', $temRawBduss, $matches);
661 | $this->bduss = $matches[1];
662 | $this->cookie = $this->buildFullCookie();
663 | $result['i'] = array(
664 | "uid" => $result['user']['id'],
665 | "un" => $result['user']['name'],
666 | "bduss" => $this->bduss,
667 | "cookie" => $this->cookie,
668 | );
669 | } elseif ($result['error_code'] == 5) {
670 | $result['i'] = array(
671 | 'un' => $un,
672 | 'passwd' => base64_encode($passwd),
673 | "need_vcode" => $result['anti']['need_vcode'],
674 | "vcode_md5" => $result['anti']['vcode_md5'],
675 | "vcode_pic_url" => $result['anti']['vcode_pic_url'],
676 | );
677 | }
678 | } catch (Exception $e) {
679 | $result['error_code'] = $e->getCode();
680 | $result['error_msg'] = $e->getMessage();
681 | }
682 | return $this->commonReturn($result);
683 | }
684 |
685 | public function sign($kw, $fid = NULL) {
686 | try {
687 | if (is_null($fid)) {
688 | $fid = $this->getForumInfo($kw, 'fid');
689 | }
690 |
691 | $this->formData = array(
692 | 'fid' => $fid,
693 | 'kw' => $kw,
694 | 'tbs' => $this->tbs(),
695 | );
696 | $result = $this->fetch('http://c.tieba.baidu.com/c/c/forum/sign');
697 | $result['i'] = array(
698 | 'fid' => $fid,
699 | 'kw' => $kw,
700 | );
701 | } catch (Exception $e) {
702 | $result['error_code'] = $e->getCode();
703 | $result['error_msg'] = $e->getMessage();
704 | }
705 | return $this->commonReturn($result);
706 | }
707 |
708 | public function multiSign() {
709 | try {
710 | $forums = $this->fetchClientMultisignForumList();
711 | $forum_ids = '';
712 | if (!@count($forums)) {
713 | throw new Exception("没有可以一键签到的贴吧", -17);
714 | }
715 |
716 | foreach ($forums['data'] as $forum) {
717 | $forum_ids .= $forum['forum_id'] . ',';
718 | }
719 | $forum_ids = substr($forum_ids, 0, -1);
720 | $this->formData = array(
721 | 'forum_ids' => $forum_ids,
722 | 'tbs' => $this->tbs(),
723 | 'user_id' => $this->uid(),
724 | );
725 | $result = $this->fetch('http://c.tieba.baidu.com/c/c/forum/msign');
726 | $result['i'] = $result['info'];
727 | } catch (Exception $e) {
728 | $result['error_code'] = $e->getCode();
729 | $result['error_msg'] = $e->getMessage();
730 | }
731 | return $this->commonReturn($result);
732 | }
733 |
734 | public function post($kw, $fid = NULL, $tid = NULL, $content = NULL) {
735 | try {
736 | if (is_null($fid)) {
737 | $fid = $this->getForumInfo($kw, 'fid');
738 | }
739 |
740 | if (is_null($tid)) {
741 | $tid = $this->getForumInfo($kw, 'post');
742 | }
743 |
744 | if (is_null($content)) {
745 | $content = self::getRandomContent();
746 | }
747 |
748 | $this->formData = array(
749 | 'fid' => $fid,
750 | 'tid' => $tid,
751 | 'kw' => $kw,
752 | 'content' => $content,
753 | 'tbs' => $this->tbs(),
754 | 'is_ad' => '0',
755 | 'new_vcode' => '1',
756 | 'anonymous' => '1',
757 | 'vcode_tag' => '11',
758 | );
759 | $result = $this->fetch('http://c.tieba.baidu.com/c/c/post/add');
760 | $result['i'] = array(
761 | "need_vcode" => $result['info']['need_vcode'],
762 | "vcode_md5" => $result['info']['vcode_md5'],
763 | "vcode_type" => $result['info']['vcode_type'],
764 | );
765 | } catch (Exception $e) {
766 | $result['error_code'] = $e->getCode();
767 | $result['error_msg'] = $e->getMessage();
768 | }
769 | return $this->commonReturn($result);
770 | // (5=>"需要输入验证码"),(7=>"您的操作太频繁了!"),(8=>"您已经被封禁")
771 | }
772 |
773 | public function zan($kw) {
774 | try {
775 | $data = $this->getForumInfo($kw, 'zan');
776 | $forum = &$this->forumPages[$kw];
777 | $this->formData = array(
778 | 'action' => 'like',
779 | 'post_id' => $data['pid'],
780 | 'st_param' => 'pb',
781 | 'st_type' => 'like',
782 | 'thread_id' => $data['tid'],
783 | );
784 | $result = $this->fetch('http://c.tieba.baidu.com/c/c/zan/like');
785 | if ($result['error_code'] == 0) {
786 | foreach ($forum['tlist'] as &$threads) {
787 | if ($threads['tid'] == $data['tid']) {
788 | $threads['is_zaned'] = 1;
789 | }
790 |
791 | }
792 | }
793 | $result['i'] = array(
794 | 'tid' => $data['tid'],
795 | );
796 | } catch (Exception $e) {
797 | $result['error_code'] = $e->getCode();
798 | $result['error_msg'] = $e->getMessage();
799 | }
800 | return $this->commonReturn($result);
801 | }
802 |
803 | public function meizhi($meizhi_uid = NULL, $votetype = 0, $meizhi_kw = NULL, $meizhi_fid = NULL) {
804 | try {
805 | $votetypeList = array(
806 | 'meizhi',
807 | 'meizhi',
808 | 'weiniang',
809 | 'renyao',
810 | );
811 | if (is_null($meizhi_uid)) {
812 | $temResult = self::fetchWebUserInfo($meizhi_un);
813 | $meizhi_uid = $temResult['data']['uid'];
814 | }
815 | $this->formData = array(
816 | 'content' => '',
817 | 'tbs' => $this->tbs(),
818 | 'fid' => $meizhi_fid ? $meizhi_fid : '2689814',
819 | 'kw' => $meizhi_kw ? $meizhi_kw : '妹纸',
820 | 'uid' => $meizhi_uid,
821 | 'scid' => $this->uid(),
822 | 'vtype' => $votetypeList[$votetype],
823 | 'ie' => 'utf-8',
824 | 'vcode' => '',
825 | 'new_vcode' => '1',
826 | 'tag' => '11',
827 | );
828 | $result = $this->fetch('http://tieba.baidu.com/encourage/post/meizhi/vote', FALSE);
829 | if ($result['no'] == 0) {
830 | $result['data']['level'] = $result['data']['next_level'] - 1;
831 | $result['i'] = $this->buildMeizhiResultArray($result);
832 | }
833 | } catch (Exception $e) {
834 | $result['error_code'] = $e->getCode();
835 | $result['error_msg'] = $e->getMessage();
836 | }
837 | return $this->commonReturn($result);
838 | // 230308 错误原因不明,解决方法不明
839 | // 2130008 您已经投过了,请过四小时再来投
840 | }
841 |
842 | public function tdou() {
843 | try {
844 | $got_tdou = FALSE;
845 | $total_score = 0;
846 | $this->formData = array(
847 | 'ie' => 'utf-8',
848 | 'tbs' => $this->tbs(),
849 | 'fr' => 'frs',
850 | );
851 | $result = $this->fetch('http://tieba.baidu.com/tbscore/timebeat', FALSE); // 查看状态,是否时间已到
852 | $retime = $result['data']['time_stat'];
853 | $temNextFetchTime = $retime['interval_begin_time'] + $retime['time_len'] < $retime['now_time'];
854 | if ($temNextFetchTime <= 0 && $retime['time_has_score'] === true) {
855 | // 如果可以获取时间奖励,就fetch之
856 | $this->formData = array(
857 | 'ie' => 'utf-8',
858 | 'tbs' => $this->tbs(),
859 | 'fr' => 'frs',
860 | );
861 | $result = $this->fetch('http://tieba.baidu.com/tbscore/fetchtg', FALSE); // fetchtg=fetch time gift
862 | }
863 | $score_info = array(); // 用来存储获取T豆的记录
864 | if (count($result['data']['gift_info'])) {
865 | foreach ($result['data']['gift_info'] as $gift) {
866 | // 取每个gift
867 | if ($gift['gift_type'] == 1) {
868 | $type = 'time';
869 | } else {
870 | $type = 'rand';
871 | }
872 |
873 | $this->formData = array(
874 | 'ie' => 'utf-8',
875 | 'type' => $type,
876 | 'tbs' => $this->tbs(),
877 | 'gift_key' => $gift['gift_key'],
878 | );
879 | $result = $this->fetch('http://tieba.baidu.com/tbscore/opengift', FALSE);
880 | $score_info[] = array(
881 | 'gift_type' => $gift['gift_type'],
882 | 'score' => $result['data']['gift_got']['gift_score'],
883 | );
884 | }
885 | }
886 | if (count($score_info)) {
887 | $got_tdou = TRUE;
888 | foreach ($score_info as $score) {
889 | $total_score += $score['score'];
890 | }
891 | }
892 | $retime = $result['data']['time_stat'];
893 | $result['i'] = array(
894 | 'time_has_score' => $result['data']['time_stat']['time_has_score'], /* bull 时间奖励是否已经领完 */
895 | 'next_fetch_time' => $retime['interval_begin_time'] + $retime['time_len'] - $retime['now_time'],
896 | 'got_tdou' => $got_tdou, /* 是否获取到豆票 */
897 | 'total_score' => $total_score, /* 获取的数目 */
898 | 'score_info' => $score_info, /* 详细信息 */
899 | );
900 | } catch (Exception $e) {
901 | $result['error_code'] = $e->getCode();
902 | $result['error_msg'] = $e->getMessage();
903 | }
904 | return $this->commonReturn($result);
905 | }
906 |
907 | public function tdouLottery($free = FALSE) {
908 | try {
909 | if ($free === FALSE) {
910 | $this->formData = array(
911 | 'kw' => '',
912 | 'tbs' => $this->tbs(),
913 | );
914 | $result = $this->fetch("http://tieba.baidu.com/tbmall/lottery/tableinfo", FALSE);
915 | if ($result['data']['new_price'] != 0) {
916 | throw new Exception('免费抽奖机会已经用完', -16);
917 | }
918 |
919 | }
920 | $this->formData = array(
921 | 'kw' => '',
922 | 'tbs' => $this->tbs(),
923 | );
924 | $result = $this->fetch("http://tieba.baidu.com/tbmall/lottery/draw", FALSE);
925 | $result['i'] = array(
926 | 'new_price' => $result['data']['new_price'], // 下一次抽奖所需的T豆
927 | 'win_type' => $result['data']['award']['win_type'], // 获奖的类型
928 | 'win_id' => $result['data']['award']['win_id'],
929 | 'win_tips' => $result['data']['award']['win_tips'], /*奖品信息*/
930 | );
931 | } catch (Exception $e) {
932 | $result['error_code'] = $e->getCode();
933 | $result['error_msg'] = $e->getMessage();
934 | }
935 | return $this->commonReturn($result);
936 | }
937 |
938 | }
939 | ?>
--------------------------------------------------------------------------------
/lib/config.inc.php:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/y1yang0/TiebaCloud/37ec2b64dbbc4a390055c9383a0016cca399b3c3/lib/config.inc.php
--------------------------------------------------------------------------------
/lib/delete.php:
--------------------------------------------------------------------------------
1 | delete user success!';
19 | }
20 | }
21 | }
22 | } else {
23 | error_tpl('试图直接访问delete.php', '不允许直接访问,请登录管理面板以进行用户删除操作', '../index.php');
24 | }
25 | ?>
--------------------------------------------------------------------------------
/lib/func.sign.php:
--------------------------------------------------------------------------------
1 | $list[1], 'balvid' => $balvid[1]);
38 | }
39 | return $tieba;
40 | }
41 |
42 | function client_sign($cookie, $tieba) {
43 | preg_match('/BDUSS=([^ ;]+)/i', $cookie, $matches);
44 | $BDUSS = $matches[1];
45 | $ch = curl_init('http://c.tieba.baidu.com/c/c/forum/sign');
46 | $tbs = confirmation($cookie);
47 | curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded', 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE72-1/021.021; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.1.16352'));
48 | curl_setopt($ch, CURLOPT_COOKIE, $cookie);
49 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
50 | curl_setopt($ch, CURLOPT_POST, 1);
51 | $array = array(
52 | 'BDUSS' => $BDUSS,
53 | '_client_id' => '03-00-DA-59-05-00-72-96-06-00-01-00-04-00-4C-43-01-00-34-F4-02-00-BC-25-09-00-4E-36',
54 | '_client_type' => '4',
55 | '_client_version' => '1.2.1.17',
56 | '_phone_imei' => '540b43b59d21b7a4824e1fd31b08e9a6',
57 | 'fid' => $tieba['fid'],
58 | 'kw' => urldecode($tieba['url']),
59 | 'net_type' => '3',
60 | 'tbs' => $tbs['tbs'],
61 | );
62 | $sign_str = '';
63 | foreach ($array as $k => $v) {
64 | $sign_str .= $k . '=' . $v;
65 | }
66 |
67 | $sign = strtoupper(md5($sign_str . 'tiebaclient!!!'));
68 | $array['sign'] = $sign;
69 | curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($array));
70 | $sign_json = curl_exec($ch);
71 | curl_close($ch);
72 | @json_decode($sign_json, true);
73 | }
74 |
75 | function confirmation($cookie) {
76 | $tbs_url = 'http://tieba.baidu.com/dc/common/tbs';
77 | $ch = curl_init($tbs_url);
78 | curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; MB526 Build/JZO54K) AppleWebKit/530.17 (KHTML, like Gecko) FlyFlow/2.4 Version/4.0 Mobile Safari/530.17 baidubrowser/042_1.8.4.2_diordna_458_084/alorotoM_61_2.1.4_625BM/1200a/39668C8F77034455D4DED02169F3F7C7%7C132773740707453/1', 'Referer: http://tieba.baidu.com/'));
79 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
80 | curl_setopt($ch, CURLOPT_COOKIE, $cookie);
81 | $tbs_json = curl_exec($ch);
82 | curl_close($ch);
83 | $tbs = json_decode($tbs_json, 1);
84 | return $tbs;
85 | }
86 |
87 | function get_list($cookie) {
88 | $list = html_analysis(get_liked_tieba($cookie));
89 | return $list;
90 | }
91 | function lets_do_it($cookie, $fid, $url) {
92 | client_sign($cookie, array('fid' => $fid, 'url' => $url));
93 | }
94 | ?>
--------------------------------------------------------------------------------
/lib/install.php:
--------------------------------------------------------------------------------
1 | ';
16 | fwrite($fp, $content);
17 | fclose($fp);
18 | }
19 |
20 | $con = mysqli_connect($_POST['db_ip'], $_POST['db_username'], $_POST['db_password']);
21 | if (!$con) {
22 | error_tpl('连接数据库失败', '贴吧云安装时无法正确连接数据库,请检查你的账号密码数据库地址是否正确', '../index.php');
23 | } else {
24 | if (mysqli_select_db($con, $_POST['db_name'])) {
25 | mysqli_query($con, 'CREATE TABLE tc_tmp(uid int NOT NULL AUTO_INCREMENT PRIMARY KEY,count int )');
26 | mysqli_query($con, 'CREATE TABLE tc_user(uid int NOT NULL AUTO_INCREMENT PRIMARY KEY,username varchar(15),password varchar(50),cookie varchar(300))');
27 | mysqli_query($con, 'CREATE TABLE tc_baiduinfo(uid int NOT NULL AUTO_INCREMENT PRIMARY KEY,tc_id varchar(15),baidu_id varchar(15),avastar varchar(200))');
28 | mysqli_query($con, 'CREATE TABLE tc_tieba(uid int NOT NULL AUTO_INCREMENT PRIMARY KEY,username varchar(15),fid varchar(15),url varchar(190))');
29 | mysqli_query($con, 'CREATE TABLE tc_conf(uid int NOT NULL AUTO_INCREMENT PRIMARY KEY,setting varchar(15))');
30 | mysqli_query($con, 'set names utf8');
31 | mysqli_query($con, 'INSERT INTO tc_user(uid,username,password) VALUES( 0 ,"' . $_POST['admin_name'] . '","' . md5($_POST['admin_password']) . '")');
32 | mysqli_query($con, 'INSERT INTO tc_baiduinfo(tc_id) VALUES("' . $_POST['admin_name'] . '")');
33 | mysqli_query($con, 'INSERT INTO tc_tmp(count) VALUES(0)');
34 | mysqli_query($con, 'INSERT INTO tc_conf(setting) VALUES("1.5")');
35 | echo 'install succeed,enjoy!
36 | ';
39 | } else {
40 | //if the database not exist,create the database and then create table;
41 | mysqli_query($con, 'CREATE DATABASE ' . $_POST['db_name'] . ' default charset utf8');
42 | if (mysqli_select_db($con, $_POST['db_name'])) {
43 | mysqli_query($con, 'CREATE TABLE tc_tmp(uid int NOT NULL AUTO_INCREMENT PRIMARY KEY,count int )');
44 | mysqli_query($con, 'CREATE TABLE tc_user(uid int NOT NULL AUTO_INCREMENT PRIMARY KEY,username varchar(15),password varchar(50),cookie varchar(300))');
45 | mysqli_query($con, 'CREATE TABLE tc_baiduinfo(uid int NOT NULL AUTO_INCREMENT PRIMARY KEY,tc_id varchar(15),baidu_id varchar(15),avastar varchar(200))');
46 | mysqli_query($con, 'CREATE TABLE tc_tieba(uid int NOT NULL AUTO_INCREMENT PRIMARY KEY,username varchar(15),fid varchar(15),url varchar(190))');
47 | mysqli_query($con, 'CREATE TABLE tc_conf(uid int NOT NULL AUTO_INCREMENT PRIMARY KEY,setting varchar(15))');
48 | mysqli_query($con, 'set names utf8');
49 | mysqli_query($con, 'INSERT INTO tc_user(uid,username,password) VALUES( 0 ,"' . $_POST['admin_name'] . '","' . md5($_POST['admin_password']) . '")');
50 | mysqli_query($con, 'INSERT INTO tc_baiduinfo(tc_id) VALUES("' . $_POST['admin_name'] . '")');
51 | mysqli_query($con, 'INSERT INTO tc_tmp(count) VALUES(0)');
52 | mysqli_query($con, 'INSERT INTO tc_conf(setting) VALUES("1.5")');
53 | echo 'you have succeed to install TiebaCloud,enjoy!
54 | ';
57 | } else {
58 | error_tpl('创建数据表出错', '未能创建数据表,请检查你是否拥有create权限或者安装配置是否填写正确', '../index.php');
59 | }
60 | }
61 | }
62 | ?>
63 |
--------------------------------------------------------------------------------
/lib/operator.php:
--------------------------------------------------------------------------------
1 | ' . mb_convert_encoding(urldecode($ret[3]), "UTF-8", "GB2312") . ' ';
20 | }
21 | $content[0] = $count;
22 |
23 | }
24 | echo '目前贴吧云为你的' . $content[0] . '个贴吧进行签到,详细情况如下: ' . $content[1] . '
';
25 | }
26 |
27 | break;
28 | default:
29 | error_tpl('访问错误', '禁止非post方式直接访问operator.php文件', '../index.php');
30 | break;
31 | }
32 | ?>
--------------------------------------------------------------------------------
/lib/updater.php:
--------------------------------------------------------------------------------
1 | ';
23 | fwrite($fp_v, $content);
24 | fclose($fp_v);
25 | }
26 | header('location:../index.php');
27 | }
28 | }
29 | }
30 | ?>
31 |
32 | Tieba Cloud - Update
33 |
34 |
35 |
36 |
37 |
38 | Just enjoy it!';
41 | } else {
42 | echo ' 更新列表:';
43 | for ($i = 0; $i < count($file_list); $i++) {
44 | echo "-" . $file_list[$i] . " ";
45 | }
46 | echo ' ';
47 | }
48 | ?>
49 |
50 |
54 |
--------------------------------------------------------------------------------
/login.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Tieba Cloud - Login
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/public/error.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Tieba Cloud :(
5 |
6 |
7 |
8 |
9 |
12 |
13 |
14 |
24 |
25 |
26 |
27 |
28 |
29 | {title}
30 | {description}
31 |
32 |
33 | Choose an option below
34 |
35 |
36 |
40 |
41 |
42 |
43 |
44 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/public/manual_bind.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Tieba Cloud - Manual Bind
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/public/tutorial.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/y1yang0/TiebaCloud/37ec2b64dbbc4a390055c9383a0016cca399b3c3/public/tutorial.png
--------------------------------------------------------------------------------
/register.php:
--------------------------------------------------------------------------------
1 |
12 |
13 |
14 |
15 | Tieba Cloud - Register
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | - TiebaCloud
27 | - Register
28 |
29 |
30 |
34 | 注意: 在使用贴吧云前你需要注册一个账号,这有别与百度账号
35 |
36 |
48 |
49 | ©2014 侠盗小飞机,sources on Github
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/stylesheets/font-awesome.min.css:
--------------------------------------------------------------------------------
1 | @font-face{font-family:'FontAwesome';src:url('../font/fontawesome-webfont.eot?v=3.2.1');src:url('../font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'),url('../font/fontawesome-webfont.woff?v=3.2.1') format('woff'),url('../font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'),url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg');font-weight:normal;font-style:normal;}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;}
2 | [class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none;}
3 | .icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em;}
4 | a [class^="icon-"],a [class*=" icon-"]{display:inline;}
5 | [class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.1428571428571428em;text-align:right;padding-right:0.2857142857142857em;}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.4285714285714286em;}
6 | .icons-ul{margin-left:2.142857142857143em;list-style-type:none;}.icons-ul>li{position:relative;}
7 | .icons-ul .icon-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;text-align:center;line-height:inherit;}
8 | [class^="icon-"].hide,[class*=" icon-"].hide{display:none;}
9 | .icon-muted{color:#eeeeee;}
10 | .icon-light{color:#ffffff;}
11 | .icon-dark{color:#333333;}
12 | .icon-border{border:solid 1px #eeeeee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
13 | .icon-2x{font-size:2em;}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
14 | .icon-3x{font-size:3em;}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
15 | .icon-4x{font-size:4em;}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
16 | .icon-5x{font-size:5em;}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;}
17 | .pull-right{float:right;}
18 | .pull-left{float:left;}
19 | [class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em;}
20 | [class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em;}
21 | [class^="icon-"],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0% 0%;background-repeat:repeat;margin-top:0;}
22 | .icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none;}
23 | .btn [class^="icon-"].icon-large,.nav [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em;}
24 | .btn [class^="icon-"].icon-spin,.nav [class^="icon-"].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block;}
25 | .nav-tabs [class^="icon-"],.nav-pills [class^="icon-"],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^="icon-"].icon-large,.nav-pills [class^="icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em;}
26 | .btn [class^="icon-"].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^="icon-"].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em;}
27 | .btn [class^="icon-"].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em;}
28 | .btn.btn-small [class^="icon-"].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^="icon-"].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em;}
29 | .btn.btn-large [class^="icon-"],.btn.btn-large [class*=" icon-"]{margin-top:0;}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em;}
30 | .btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em;}
31 | .btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em;}
32 | .nav-list [class^="icon-"],.nav-list [class*=" icon-"]{line-height:inherit;}
33 | .icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%;}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em;}
34 | .icon-stack .icon-stack-base{font-size:2em;*line-height:1em;}
35 | .icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;}
36 | a .icon-stack,a .icon-spin{display:inline-block;text-decoration:none;}
37 | @-moz-keyframes spin{0%{-moz-transform:rotate(0deg);} 100%{-moz-transform:rotate(359deg);}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);} 100%{-webkit-transform:rotate(359deg);}}@-o-keyframes spin{0%{-o-transform:rotate(0deg);} 100%{-o-transform:rotate(359deg);}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg);} 100%{-ms-transform:rotate(359deg);}}@keyframes spin{0%{transform:rotate(0deg);} 100%{transform:rotate(359deg);}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);}
38 | .icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);}
39 | .icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);}
40 | .icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1);}
41 | .icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1);}
42 | a .icon-rotate-90:before,a .icon-rotate-180:before,a .icon-rotate-270:before,a .icon-flip-horizontal:before,a .icon-flip-vertical:before{display:inline-block;}
43 | .icon-glass:before{content:"\f000";}
44 | .icon-music:before{content:"\f001";}
45 | .icon-search:before{content:"\f002";}
46 | .icon-envelope-alt:before{content:"\f003";}
47 | .icon-heart:before{content:"\f004";}
48 | .icon-star:before{content:"\f005";}
49 | .icon-star-empty:before{content:"\f006";}
50 | .icon-user:before{content:"\f007";}
51 | .icon-film:before{content:"\f008";}
52 | .icon-th-large:before{content:"\f009";}
53 | .icon-th:before{content:"\f00a";}
54 | .icon-th-list:before{content:"\f00b";}
55 | .icon-ok:before{content:"\f00c";}
56 | .icon-remove:before{content:"\f00d";}
57 | .icon-zoom-in:before{content:"\f00e";}
58 | .icon-zoom-out:before{content:"\f010";}
59 | .icon-power-off:before,.icon-off:before{content:"\f011";}
60 | .icon-signal:before{content:"\f012";}
61 | .icon-gear:before,.icon-cog:before{content:"\f013";}
62 | .icon-trash:before{content:"\f014";}
63 | .icon-home:before{content:"\f015";}
64 | .icon-file-alt:before{content:"\f016";}
65 | .icon-time:before{content:"\f017";}
66 | .icon-road:before{content:"\f018";}
67 | .icon-download-alt:before{content:"\f019";}
68 | .icon-download:before{content:"\f01a";}
69 | .icon-upload:before{content:"\f01b";}
70 | .icon-inbox:before{content:"\f01c";}
71 | .icon-play-circle:before{content:"\f01d";}
72 | .icon-rotate-right:before,.icon-repeat:before{content:"\f01e";}
73 | .icon-refresh:before{content:"\f021";}
74 | .icon-list-alt:before{content:"\f022";}
75 | .icon-lock:before{content:"\f023";}
76 | .icon-flag:before{content:"\f024";}
77 | .icon-headphones:before{content:"\f025";}
78 | .icon-volume-off:before{content:"\f026";}
79 | .icon-volume-down:before{content:"\f027";}
80 | .icon-volume-up:before{content:"\f028";}
81 | .icon-qrcode:before{content:"\f029";}
82 | .icon-barcode:before{content:"\f02a";}
83 | .icon-tag:before{content:"\f02b";}
84 | .icon-tags:before{content:"\f02c";}
85 | .icon-book:before{content:"\f02d";}
86 | .icon-bookmark:before{content:"\f02e";}
87 | .icon-print:before{content:"\f02f";}
88 | .icon-camera:before{content:"\f030";}
89 | .icon-font:before{content:"\f031";}
90 | .icon-bold:before{content:"\f032";}
91 | .icon-italic:before{content:"\f033";}
92 | .icon-text-height:before{content:"\f034";}
93 | .icon-text-width:before{content:"\f035";}
94 | .icon-align-left:before{content:"\f036";}
95 | .icon-align-center:before{content:"\f037";}
96 | .icon-align-right:before{content:"\f038";}
97 | .icon-align-justify:before{content:"\f039";}
98 | .icon-list:before{content:"\f03a";}
99 | .icon-indent-left:before{content:"\f03b";}
100 | .icon-indent-right:before{content:"\f03c";}
101 | .icon-facetime-video:before{content:"\f03d";}
102 | .icon-picture:before{content:"\f03e";}
103 | .icon-pencil:before{content:"\f040";}
104 | .icon-map-marker:before{content:"\f041";}
105 | .icon-adjust:before{content:"\f042";}
106 | .icon-tint:before{content:"\f043";}
107 | .icon-edit:before{content:"\f044";}
108 | .icon-share:before{content:"\f045";}
109 | .icon-check:before{content:"\f046";}
110 | .icon-move:before{content:"\f047";}
111 | .icon-step-backward:before{content:"\f048";}
112 | .icon-fast-backward:before{content:"\f049";}
113 | .icon-backward:before{content:"\f04a";}
114 | .icon-play:before{content:"\f04b";}
115 | .icon-pause:before{content:"\f04c";}
116 | .icon-stop:before{content:"\f04d";}
117 | .icon-forward:before{content:"\f04e";}
118 | .icon-fast-forward:before{content:"\f050";}
119 | .icon-step-forward:before{content:"\f051";}
120 | .icon-eject:before{content:"\f052";}
121 | .icon-chevron-left:before{content:"\f053";}
122 | .icon-chevron-right:before{content:"\f054";}
123 | .icon-plus-sign:before{content:"\f055";}
124 | .icon-minus-sign:before{content:"\f056";}
125 | .icon-remove-sign:before{content:"\f057";}
126 | .icon-ok-sign:before{content:"\f058";}
127 | .icon-question-sign:before{content:"\f059";}
128 | .icon-info-sign:before{content:"\f05a";}
129 | .icon-screenshot:before{content:"\f05b";}
130 | .icon-remove-circle:before{content:"\f05c";}
131 | .icon-ok-circle:before{content:"\f05d";}
132 | .icon-ban-circle:before{content:"\f05e";}
133 | .icon-arrow-left:before{content:"\f060";}
134 | .icon-arrow-right:before{content:"\f061";}
135 | .icon-arrow-up:before{content:"\f062";}
136 | .icon-arrow-down:before{content:"\f063";}
137 | .icon-mail-forward:before,.icon-share-alt:before{content:"\f064";}
138 | .icon-resize-full:before{content:"\f065";}
139 | .icon-resize-small:before{content:"\f066";}
140 | .icon-plus:before{content:"\f067";}
141 | .icon-minus:before{content:"\f068";}
142 | .icon-asterisk:before{content:"\f069";}
143 | .icon-exclamation-sign:before{content:"\f06a";}
144 | .icon-gift:before{content:"\f06b";}
145 | .icon-leaf:before{content:"\f06c";}
146 | .icon-fire:before{content:"\f06d";}
147 | .icon-eye-open:before{content:"\f06e";}
148 | .icon-eye-close:before{content:"\f070";}
149 | .icon-warning-sign:before{content:"\f071";}
150 | .icon-plane:before{content:"\f072";}
151 | .icon-calendar:before{content:"\f073";}
152 | .icon-random:before{content:"\f074";}
153 | .icon-comment:before{content:"\f075";}
154 | .icon-magnet:before{content:"\f076";}
155 | .icon-chevron-up:before{content:"\f077";}
156 | .icon-chevron-down:before{content:"\f078";}
157 | .icon-retweet:before{content:"\f079";}
158 | .icon-shopping-cart:before{content:"\f07a";}
159 | .icon-folder-close:before{content:"\f07b";}
160 | .icon-folder-open:before{content:"\f07c";}
161 | .icon-resize-vertical:before{content:"\f07d";}
162 | .icon-resize-horizontal:before{content:"\f07e";}
163 | .icon-bar-chart:before{content:"\f080";}
164 | .icon-twitter-sign:before{content:"\f081";}
165 | .icon-facebook-sign:before{content:"\f082";}
166 | .icon-camera-retro:before{content:"\f083";}
167 | .icon-key:before{content:"\f084";}
168 | .icon-gears:before,.icon-cogs:before{content:"\f085";}
169 | .icon-comments:before{content:"\f086";}
170 | .icon-thumbs-up-alt:before{content:"\f087";}
171 | .icon-thumbs-down-alt:before{content:"\f088";}
172 | .icon-star-half:before{content:"\f089";}
173 | .icon-heart-empty:before{content:"\f08a";}
174 | .icon-signout:before{content:"\f08b";}
175 | .icon-linkedin-sign:before{content:"\f08c";}
176 | .icon-pushpin:before{content:"\f08d";}
177 | .icon-external-link:before{content:"\f08e";}
178 | .icon-signin:before{content:"\f090";}
179 | .icon-trophy:before{content:"\f091";}
180 | .icon-github-sign:before{content:"\f092";}
181 | .icon-upload-alt:before{content:"\f093";}
182 | .icon-lemon:before{content:"\f094";}
183 | .icon-phone:before{content:"\f095";}
184 | .icon-unchecked:before,.icon-check-empty:before{content:"\f096";}
185 | .icon-bookmark-empty:before{content:"\f097";}
186 | .icon-phone-sign:before{content:"\f098";}
187 | .icon-twitter:before{content:"\f099";}
188 | .icon-facebook:before{content:"\f09a";}
189 | .icon-github:before{content:"\f09b";}
190 | .icon-unlock:before{content:"\f09c";}
191 | .icon-credit-card:before{content:"\f09d";}
192 | .icon-rss:before{content:"\f09e";}
193 | .icon-hdd:before{content:"\f0a0";}
194 | .icon-bullhorn:before{content:"\f0a1";}
195 | .icon-bell:before{content:"\f0a2";}
196 | .icon-certificate:before{content:"\f0a3";}
197 | .icon-hand-right:before{content:"\f0a4";}
198 | .icon-hand-left:before{content:"\f0a5";}
199 | .icon-hand-up:before{content:"\f0a6";}
200 | .icon-hand-down:before{content:"\f0a7";}
201 | .icon-circle-arrow-left:before{content:"\f0a8";}
202 | .icon-circle-arrow-right:before{content:"\f0a9";}
203 | .icon-circle-arrow-up:before{content:"\f0aa";}
204 | .icon-circle-arrow-down:before{content:"\f0ab";}
205 | .icon-globe:before{content:"\f0ac";}
206 | .icon-wrench:before{content:"\f0ad";}
207 | .icon-tasks:before{content:"\f0ae";}
208 | .icon-filter:before{content:"\f0b0";}
209 | .icon-briefcase:before{content:"\f0b1";}
210 | .icon-fullscreen:before{content:"\f0b2";}
211 | .icon-group:before{content:"\f0c0";}
212 | .icon-link:before{content:"\f0c1";}
213 | .icon-cloud:before{content:"\f0c2";}
214 | .icon-beaker:before{content:"\f0c3";}
215 | .icon-cut:before{content:"\f0c4";}
216 | .icon-copy:before{content:"\f0c5";}
217 | .icon-paperclip:before,.icon-paper-clip:before{content:"\f0c6";}
218 | .icon-save:before{content:"\f0c7";}
219 | .icon-sign-blank:before{content:"\f0c8";}
220 | .icon-reorder:before{content:"\f0c9";}
221 | .icon-list-ul:before{content:"\f0ca";}
222 | .icon-list-ol:before{content:"\f0cb";}
223 | .icon-strikethrough:before{content:"\f0cc";}
224 | .icon-underline:before{content:"\f0cd";}
225 | .icon-table:before{content:"\f0ce";}
226 | .icon-magic:before{content:"\f0d0";}
227 | .icon-truck:before{content:"\f0d1";}
228 | .icon-pinterest:before{content:"\f0d2";}
229 | .icon-pinterest-sign:before{content:"\f0d3";}
230 | .icon-google-plus-sign:before{content:"\f0d4";}
231 | .icon-google-plus:before{content:"\f0d5";}
232 | .icon-money:before{content:"\f0d6";}
233 | .icon-caret-down:before{content:"\f0d7";}
234 | .icon-caret-up:before{content:"\f0d8";}
235 | .icon-caret-left:before{content:"\f0d9";}
236 | .icon-caret-right:before{content:"\f0da";}
237 | .icon-columns:before{content:"\f0db";}
238 | .icon-sort:before{content:"\f0dc";}
239 | .icon-sort-down:before{content:"\f0dd";}
240 | .icon-sort-up:before{content:"\f0de";}
241 | .icon-envelope:before{content:"\f0e0";}
242 | .icon-linkedin:before{content:"\f0e1";}
243 | .icon-rotate-left:before,.icon-undo:before{content:"\f0e2";}
244 | .icon-legal:before{content:"\f0e3";}
245 | .icon-dashboard:before{content:"\f0e4";}
246 | .icon-comment-alt:before{content:"\f0e5";}
247 | .icon-comments-alt:before{content:"\f0e6";}
248 | .icon-bolt:before{content:"\f0e7";}
249 | .icon-sitemap:before{content:"\f0e8";}
250 | .icon-umbrella:before{content:"\f0e9";}
251 | .icon-paste:before{content:"\f0ea";}
252 | .icon-lightbulb:before{content:"\f0eb";}
253 | .icon-exchange:before{content:"\f0ec";}
254 | .icon-cloud-download:before{content:"\f0ed";}
255 | .icon-cloud-upload:before{content:"\f0ee";}
256 | .icon-user-md:before{content:"\f0f0";}
257 | .icon-stethoscope:before{content:"\f0f1";}
258 | .icon-suitcase:before{content:"\f0f2";}
259 | .icon-bell-alt:before{content:"\f0f3";}
260 | .icon-coffee:before{content:"\f0f4";}
261 | .icon-food:before{content:"\f0f5";}
262 | .icon-file-text-alt:before{content:"\f0f6";}
263 | .icon-building:before{content:"\f0f7";}
264 | .icon-hospital:before{content:"\f0f8";}
265 | .icon-ambulance:before{content:"\f0f9";}
266 | .icon-medkit:before{content:"\f0fa";}
267 | .icon-fighter-jet:before{content:"\f0fb";}
268 | .icon-beer:before{content:"\f0fc";}
269 | .icon-h-sign:before{content:"\f0fd";}
270 | .icon-plus-sign-alt:before{content:"\f0fe";}
271 | .icon-double-angle-left:before{content:"\f100";}
272 | .icon-double-angle-right:before{content:"\f101";}
273 | .icon-double-angle-up:before{content:"\f102";}
274 | .icon-double-angle-down:before{content:"\f103";}
275 | .icon-angle-left:before{content:"\f104";}
276 | .icon-angle-right:before{content:"\f105";}
277 | .icon-angle-up:before{content:"\f106";}
278 | .icon-angle-down:before{content:"\f107";}
279 | .icon-desktop:before{content:"\f108";}
280 | .icon-laptop:before{content:"\f109";}
281 | .icon-tablet:before{content:"\f10a";}
282 | .icon-mobile-phone:before{content:"\f10b";}
283 | .icon-circle-blank:before{content:"\f10c";}
284 | .icon-quote-left:before{content:"\f10d";}
285 | .icon-quote-right:before{content:"\f10e";}
286 | .icon-spinner:before{content:"\f110";}
287 | .icon-circle:before{content:"\f111";}
288 | .icon-mail-reply:before,.icon-reply:before{content:"\f112";}
289 | .icon-github-alt:before{content:"\f113";}
290 | .icon-folder-close-alt:before{content:"\f114";}
291 | .icon-folder-open-alt:before{content:"\f115";}
292 | .icon-expand-alt:before{content:"\f116";}
293 | .icon-collapse-alt:before{content:"\f117";}
294 | .icon-smile:before{content:"\f118";}
295 | .icon-frown:before{content:"\f119";}
296 | .icon-meh:before{content:"\f11a";}
297 | .icon-gamepad:before{content:"\f11b";}
298 | .icon-keyboard:before{content:"\f11c";}
299 | .icon-flag-alt:before{content:"\f11d";}
300 | .icon-flag-checkered:before{content:"\f11e";}
301 | .icon-terminal:before{content:"\f120";}
302 | .icon-code:before{content:"\f121";}
303 | .icon-reply-all:before{content:"\f122";}
304 | .icon-mail-reply-all:before{content:"\f122";}
305 | .icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123";}
306 | .icon-location-arrow:before{content:"\f124";}
307 | .icon-crop:before{content:"\f125";}
308 | .icon-code-fork:before{content:"\f126";}
309 | .icon-unlink:before{content:"\f127";}
310 | .icon-question:before{content:"\f128";}
311 | .icon-info:before{content:"\f129";}
312 | .icon-exclamation:before{content:"\f12a";}
313 | .icon-superscript:before{content:"\f12b";}
314 | .icon-subscript:before{content:"\f12c";}
315 | .icon-eraser:before{content:"\f12d";}
316 | .icon-puzzle-piece:before{content:"\f12e";}
317 | .icon-microphone:before{content:"\f130";}
318 | .icon-microphone-off:before{content:"\f131";}
319 | .icon-shield:before{content:"\f132";}
320 | .icon-calendar-empty:before{content:"\f133";}
321 | .icon-fire-extinguisher:before{content:"\f134";}
322 | .icon-rocket:before{content:"\f135";}
323 | .icon-maxcdn:before{content:"\f136";}
324 | .icon-chevron-sign-left:before{content:"\f137";}
325 | .icon-chevron-sign-right:before{content:"\f138";}
326 | .icon-chevron-sign-up:before{content:"\f139";}
327 | .icon-chevron-sign-down:before{content:"\f13a";}
328 | .icon-html5:before{content:"\f13b";}
329 | .icon-css3:before{content:"\f13c";}
330 | .icon-anchor:before{content:"\f13d";}
331 | .icon-unlock-alt:before{content:"\f13e";}
332 | .icon-bullseye:before{content:"\f140";}
333 | .icon-ellipsis-horizontal:before{content:"\f141";}
334 | .icon-ellipsis-vertical:before{content:"\f142";}
335 | .icon-rss-sign:before{content:"\f143";}
336 | .icon-play-sign:before{content:"\f144";}
337 | .icon-ticket:before{content:"\f145";}
338 | .icon-minus-sign-alt:before{content:"\f146";}
339 | .icon-check-minus:before{content:"\f147";}
340 | .icon-level-up:before{content:"\f148";}
341 | .icon-level-down:before{content:"\f149";}
342 | .icon-check-sign:before{content:"\f14a";}
343 | .icon-edit-sign:before{content:"\f14b";}
344 | .icon-external-link-sign:before{content:"\f14c";}
345 | .icon-share-sign:before{content:"\f14d";}
346 | .icon-compass:before{content:"\f14e";}
347 | .icon-collapse:before{content:"\f150";}
348 | .icon-collapse-top:before{content:"\f151";}
349 | .icon-expand:before{content:"\f152";}
350 | .icon-euro:before,.icon-eur:before{content:"\f153";}
351 | .icon-gbp:before{content:"\f154";}
352 | .icon-dollar:before,.icon-usd:before{content:"\f155";}
353 | .icon-rupee:before,.icon-inr:before{content:"\f156";}
354 | .icon-yen:before,.icon-jpy:before{content:"\f157";}
355 | .icon-renminbi:before,.icon-cny:before{content:"\f158";}
356 | .icon-won:before,.icon-krw:before{content:"\f159";}
357 | .icon-bitcoin:before,.icon-btc:before{content:"\f15a";}
358 | .icon-file:before{content:"\f15b";}
359 | .icon-file-text:before{content:"\f15c";}
360 | .icon-sort-by-alphabet:before{content:"\f15d";}
361 | .icon-sort-by-alphabet-alt:before{content:"\f15e";}
362 | .icon-sort-by-attributes:before{content:"\f160";}
363 | .icon-sort-by-attributes-alt:before{content:"\f161";}
364 | .icon-sort-by-order:before{content:"\f162";}
365 | .icon-sort-by-order-alt:before{content:"\f163";}
366 | .icon-thumbs-up:before{content:"\f164";}
367 | .icon-thumbs-down:before{content:"\f165";}
368 | .icon-youtube-sign:before{content:"\f166";}
369 | .icon-youtube:before{content:"\f167";}
370 | .icon-xing:before{content:"\f168";}
371 | .icon-xing-sign:before{content:"\f169";}
372 | .icon-youtube-play:before{content:"\f16a";}
373 | .icon-dropbox:before{content:"\f16b";}
374 | .icon-stackexchange:before{content:"\f16c";}
375 | .icon-instagram:before{content:"\f16d";}
376 | .icon-flickr:before{content:"\f16e";}
377 | .icon-adn:before{content:"\f170";}
378 | .icon-bitbucket:before{content:"\f171";}
379 | .icon-bitbucket-sign:before{content:"\f172";}
380 | .icon-tumblr:before{content:"\f173";}
381 | .icon-tumblr-sign:before{content:"\f174";}
382 | .icon-long-arrow-down:before{content:"\f175";}
383 | .icon-long-arrow-up:before{content:"\f176";}
384 | .icon-long-arrow-left:before{content:"\f177";}
385 | .icon-long-arrow-right:before{content:"\f178";}
386 | .icon-apple:before{content:"\f179";}
387 | .icon-windows:before{content:"\f17a";}
388 | .icon-android:before{content:"\f17b";}
389 | .icon-linux:before{content:"\f17c";}
390 | .icon-dribbble:before{content:"\f17d";}
391 | .icon-skype:before{content:"\f17e";}
392 | .icon-foursquare:before{content:"\f180";}
393 | .icon-trello:before{content:"\f181";}
394 | .icon-female:before{content:"\f182";}
395 | .icon-male:before{content:"\f183";}
396 | .icon-gittip:before{content:"\f184";}
397 | .icon-sun:before{content:"\f185";}
398 | .icon-moon:before{content:"\f186";}
399 | .icon-archive:before{content:"\f187";}
400 | .icon-bug:before{content:"\f188";}
401 | .icon-vk:before{content:"\f189";}
402 | .icon-weibo:before{content:"\f18a";}
403 | .icon-renren:before{content:"\f18b";}
404 | .modal-footer { border-top: 0px; }
--------------------------------------------------------------------------------
|