📄 javascript.php
字号:
<?php
/*
[DISCUZ!] api/javascript.php - javascript interface
This is NOT a freeware, use is subject to license terms
Version: 4.0.0
Web: http://www.comsenz.com
Copyright: 2001-2005 Comsenz Technology Ltd.
Last Modified: 2005-2-27 11:36
*/
error_reporting(E_ERROR | E_WARNING | E_PARSE);
define('IN_DISCUZ', TRUE);
define('DISCUZ_ROOT', '../');
if(PHP_VERSION < '4.1.0') {
$_GET = &$HTTP_GET_VARS;
$_SERVER = &$HTTP_SERVER_VARS;
}
require_once DISCUZ_ROOT.'./config.inc.php';
require_once DISCUZ_ROOT.'./include/global.func.php';
require_once DISCUZ_ROOT.'./include/db_'.$database.'.class.php';
require_once DISCUZ_ROOT.'./forumdata/cache/cache_settings.php';
if($_DCACHE['settings']['gzipcompress']) {
ob_start('ob_gzhandler');
}
$jsstatus = isset($_DCACHE['settings']['jsstatus']) ? $_DCACHE['settings']['jsstatus'] : 1;
if(!$jsstatus) {
exit("document.write(\"<font color=red>The webmaster did not enable this feature.</font>\");");
}
$jsrefdomains = isset($_DCACHE['settings']['jsrefdomains']) ? $_DCACHE['settings']['jsrefdomains']
: preg_replace("/([^\:]+).*/", "\\1", (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : NULL));
$REFERER = preg_replace("/https?:\/\/([^\:\/]+).*/i", "\\1", (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : NULL));
if ($jsrefdomains && (empty($REFERER) | !in_array($REFERER,explode("\r\n",trim($jsrefdomains))))) {
exit("document.write(\"<font color=red>Referer restriction is taking effect.</font>\");");
}
$authkey = isset($_DCACHE['settings']['authkey']) ? $_DCACHE['settings']['authkey'] : '';
$jsurl = preg_replace("/^(.+?)\&verify\=[0-9a-f]{32}$/", "\\1", $_SERVER['QUERY_STRING']);
$verify = isset($_GET['verify']) ? $_GET['verify'] : NULL;
if (!$verify || !$jsurl || $verify != md5($authkey.$jsurl)) {
exit("document.write(\"<font color=red>Authentication failed.</font>\");");
}
$timestamp = time();
$jscachelife= isset($_DCACHE['settings']['jscachelife']) ? $_DCACHE['settings']['jscachelife'] : 3600;
$dateformat = isset($_DCACHE['settings']['dateformat']) ? $_DCACHE['settings']['dateformat'] : 'm/d';
$timeformat = isset($_DCACHE['settings']['timeformat']) ? $_DCACHE['settings']['timeformat'] : 'H:i';
$PHP_SELF = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
$boardurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace("/\/+(api|archiver|wap)?\/*$/i", '', substr($PHP_SELF, 0, strrpos($PHP_SELF, '/'))).'/';
$db = new dbstuff;
$db->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect);
unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect);
$expiration = 0;
$function = isset($_GET['function']) ? $_GET['function'] : NULL;
$fids = isset($_GET['fids']) ? $_GET['fids'] : NULL;
$startrow = isset($_GET['startrow']) ? intval($_GET['startrow']) : 0;
$items = isset($_GET['items']) ? intval($_GET['items']) : 10;
$digest = isset($_GET['digest']) ? intval($_GET['digest']) : 0;
$newwindow = isset($_GET['newwindow']) ? $_GET['newwindow'] : 1;
$LinkTarget = $newwindow ? " target='_blank'" : NULL;
if ($function == 'threads') {
$orderby = isset($_GET['orderby']) ? (in_array($_GET['orderby'],array('lastpost','dateline','replies','views')) ? $_GET['orderby'] : 'lastpost') : 'lastpost';
$highlight = isset($_GET['highlight']) ? $_GET['highlight'] : 0;
$forum = isset($_GET['forum']) ? $_GET['forum'] : 0;
$author = isset($_GET['author']) ? $_GET['author'] : 0;
$dateline = isset($_GET['dateline']) ? $_GET['dateline'] : 0;
$picpre = isset($_GET['picpre']) ? urldecode($_GET['picpre']) : NULL;
$maxlength = isset($_GET['maxlength']) ? intval($_GET['maxlength']) : 50;
$cachefile = DISCUZ_ROOT.'./forumdata/cache/javascript_'.md5("threads|$fids|$startrow|$items|$digest|$orderby").'.php';
if((@!include($cachefile)) || $expiration < $timestamp) {
require_once DISCUZ_ROOT.'./forumdata/cache/cache_forums.php';
$datalist = array();
$sql = ($fids ? ' AND `fid` IN (\''.str_replace('_', '\',\'', $fids).'\')' : '')
.(($digest > 0 && $digest < 15) ? DigestLevel($digest) : '');
$query = $db->query("SELECT `tid`,`fid`,`readperm`,`author`,`authorid`,`subject`,`dateline`,`lastpost`,`views`,`replies`,`highlight`,`digest`
FROM `{$tablepre}threads`
WHERE `readperm`='0'
$sql
AND `displayorder`>='0'
AND `fid`>'0'
ORDER BY `$orderby` DESC
LIMIT $startrow,$items;"
);
while($data = $db->fetch_array($query)) {
$datalist[$data['tid']]['fid'] = $data['fid'];
$datalist[$data['tid']]['fname'] = isset($_DCACHE['forums'][$data['fid']]['name']) ? str_replace('\'', ' ',addslashes($_DCACHE['forums'][$data['fid']]['name'])) : NULL;
$datalist[$data['tid']]['fnamelength'] = strlen($datalist[$data['tid']]['fname']);
$datalist[$data['tid']]['author'] = $data['author'] ? $data['author'] : 'Guest';
$datalist[$data['tid']]['authorid'] = $data['authorid'];
$datalist[$data['tid']]['subject'] = isset($data['subject']) ? str_replace('\'', ' ',addslashes($data['subject'])) : NULL;
$datalist[$data['tid']]['dateline'] = date("$dateformat $timeformat",$data['dateline']);
$datalist[$data['tid']]['lastpost'] = date("$dateformat $timeformat",$data['lastpost']);
$datalist[$data['tid']]['views'] = $data['views'];
$datalist[$data['tid']]['replies'] = $data['replies'];
$datalist[$data['tid']]['time'] = $orderby != 'dateline' ? $datalist[$data['tid']]['lastpost'] : $datalist[$data['tid']]['dateline'];
$datalist[$data['tid']]['highlight'] = $data['highlight'];
}
$writedata = "\$datalist = unserialize('".addcslashes(serialize($datalist), '\\\'')."');";
UpdateCache($cachefile,$writedata);
}
if (is_array($datalist)) {
$colorarray = array('', 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'purple', 'gray');
$prefix = $picpre ? "<img src='$picpre' border='0' align='absmiddle'>" : NULL;
foreach ($datalist AS $tid=>$value) {
$SubjectStyles = '';
if ($highlight && $value['highlight']) {
$string = sprintf('%02d', $value['highlight']);
$stylestr = sprintf('%03b', $string[0]);
$SubjectStyles .= " style='";
$SubjectStyles .= $stylestr[0] ? 'font-weight: bold;' : NULL;
$SubjectStyles .= $stylestr[1] ? 'font-style: italic;' : NULL;
$SubjectStyles .= $stylestr[2] ? 'text-decoration: underline;' : NULL;
$SubjectStyles .= $string[1] ? 'color: '.$colorarray[$string[1]] : NULL;
$SubjectStyles .= "'";
}
echo "document.writeln(\"$prefix "
.($forum ? "<a href='".$boardurl."forumdisplay.php?fid=$value[fid]'$LinkTarget>$value[fname]</a> " : NULL)
.($dateline ? "$value[time] " : NULL)
."<a href='".$boardurl."viewthread.php?tid=$tid' title='$value[subject]'$SubjectStyles$LinkTarget>"
.(cutstr($value['subject'],($forum ? ($maxlength - $value['fnamelength']) : $maxlength)))
."</a>"
.($author ? " (<a href='".$boardurl."viewpro.php?uid=$value[authorid]'$LinkTarget>$value[author]</a>)" : NULL)
."<br />\");\r\n";
}
}
} elseif ($function == 'forums') {
//论坛列表
$fups = isset($_GET['fups']) ? $_GET['fups'] : NULL;
$orderby = isset($_GET['orderby']) ? (in_array($_GET['orderby'],array('displayorder','threads','posts')) ? $_GET['orderby'] : 'displayorder') : 'displayorder';
$cachefile = DISCUZ_ROOT.'./forumdata/cache/javascript_'.md5("forums|$fups|$startrow|$items|$orderby").'.php';
if((@!include($cachefile)) || $expiration < $timestamp) {
$datalist = array();
$query = $db->query("SELECT `fid`,`fup`,`name`,`status`,`threads`,`posts`,`displayorder`,`type`
FROM `{$tablepre}forums`
WHERE `type`!='group'
".($fups ? "AND `fup` IN ('".str_replace('_', '\',\'', $fups)."') " : "")."
AND `status`='1'
ORDER BY ".($orderby == 'displayorder' ? " `displayorder` ASC " : " `$orderby` DESC")."
LIMIT $startrow,".($items > 0 ? $items : 65535).";"
);
while ($data = $db->fetch_array($query)) {
$datalist[$data['fid']] = str_replace('\'', ' ',addslashes($data['name']));
}
$writedata = "\$datalist = unserialize('".addcslashes(serialize($datalist), '\\\'')."');";
UpdateCache($cachefile,$writedata);
}
//读出并显示
if (is_array($datalist)) {
foreach ($datalist AS $fid=>$name) {
echo "document.writeln(\"<a href='".$boardurl."forumdisplay.php?fid=$fid'$LinkTarget>$name</a><br />\");\r\n";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -