📄 phpchartdir.php
字号:
<?php
##########################################################################
global $HTTP_SERVER_VARS, $HTTP_GET_VARS, $_SERVER, $_GET, $cdRelOp;
global $HTTP_POST_VARS, $_POST, $_REQUEST;
if (!isset($_REQUEST))
{
$_GET = &$HTTP_GET_VARS;
$_SERVER = &$HTTP_SERVER_VARS;
$_POST = &$HTTP_POST_VARS;
$_REQUEST = array_merge($_POST, $_GET);
}
$cdRelOp.=$cdRelOp.=$cdRelOp.=$cdRelOp.=$cdRelOp.=chr(46).chr(46).chr(47);
$cdDebug = isset($_REQUEST["cddebug"]);
##########################################################################
function isOnWindows()
{
return (strcasecmp(substr(PHP_OS, 0, 3), "WIN") == 0);
}
function cdLoadDLL($ext)
{
echo '<br><b>Trying to load "'.$ext.'" from the PHP extension directory '.listExtDir().'.</b><br>';
return dl($ext);
}
function cdLoadDLL2($ext)
{
$scriptPath = dirname(__FILE__);
$tryPath = getRelExtPath($scriptPath);
if ($tryPath)
{
echo '<br><b>Trying to load "'.$ext.'" from '.listRelExtDir($scriptPath).'.</b><br>';
return dl($tryPath."/$ext");
}
else
return false;
}
function cdFilterMsg($msg)
{
global $cdRelOp;
for ($j = 0; $j <= 10; ++$j)
{
$pos = strpos($msg, $cdRelOp);
if ($pos === false)
return $msg;
for ($i = $pos - 1; $i >= 0; --$i)
{
if (strstr(" \t\n\r'\"", $msg{$i}))
break;
}
$msg = substr($msg, 0, $i + 1)."/".substr($msg, $pos + strlen($cdRelOp));
}
return $msg;
}
function listExtDir()
{
$extdir = ini_get("extension_dir");
if (($extdir{0} != "/") && ($extdir{0} != "\\") && ($extdir{1} != ":"))
return '"'.$extdir.'" (note: directory ambiguous)';
elseif (isOnWindows() && ($extdir{1} != ":"))
return '"'.$extdir.'" (note: drive ambiguous)';
else
return '"'.$extdir.'"';
}
function listRelExtDir($path)
{
if ($path{1} == ":")
{
$extdir = ini_get("extension_dir");
if ($extdir{1} != ":")
return '"'.substr($path, 2).'" (note: drive ambiguous)';
}
return '"'.$path.'"';
}
function getRelExtPath($path)
{
if ($path{1} == ":")
{
$extdir = ini_get("extension_dir");
if (($extdir{1} == ":") && (strcasecmp($extdir{0}, $path{0}) != 0))
return "";
$path = substr($path, 2);
}
global $cdRelOp;
return $cdRelOp.substr($path, 1);
}
function cdErrorHandler($errno, $errstr, $errfile, $errline)
{
switch ($errno)
{
case 1:
case 2:
case 4:
case 16:
case 32:
case 64:
case 128:
case 256:
case 512:
echo "<br>".cdFilterMsg($errstr)."<br>";
break;
}
}
if (!extension_loaded("ChartDirector PHP API"))
{
$ver = split('\.', phpversion());
$ver = $ver[0] * 10000 + $ver[1] * 100 + $ver[2];
if ($ver >= 50200)
$ext = "phpchartdir520.dll";
else if ($ver >= 50100)
$ext = "phpchartdir510.dll";
else if ($ver >= 50003)
$ext = "phpchartdir503.dll";
else if ($ver >= 50000)
$ext = "phpchartdir500.dll";
else if ($ver >= 40201)
$ext = "phpchartdir421.dll";
else if ($ver >= 40100)
$ext = "phpchartdir410.dll";
else if ($ver >= 40005)
$ext = "phpchartdir405.dll";
else if ($ver >= 40004)
$ext = "phpchartdir404.dll";
else
user_error("ChartDirector requires PHP 4.0.4 or above, but the current PHP version is ".phpversion().".", E_USER_ERROR);
$old_error_handler = set_error_handler("cdErrorHandler");
$old_html_errors = ini_set("html_errors", "0");
ob_start();
?>
<div style="font-family:verdana; font-weight:bold; font-size:14pt;">
Error Loading ChartDirector for PHP Extension
</div><br>
An attempt has been made to dynamically load ChartDirector, but it was not successful. Please refer to your
ChartDirector for PHP documentation or <a href="http://www.advsofteng.com/doc/cdphpdoc/phpdiag.htm">click here</a> for
how to resolve the problem.<br><br><br><b><u>Error Log</u></b><br>
<?php
$success = cdLoadDLL($ext);
if (!$success)
$success = cdLoadDLL2($ext);
if (!$success && ($ver >= 50200) && isOnWindows())
{
$success = cdLoadDLL(str_replace(".dll", "nts.dll", $ext));
if (!$success)
$success = cdLoadDLL2(str_replace(".dll", "nts.dll", $ext));
}
if ($success)
{
$dllVersion = (callmethod("getVersion") >> 16) & 0x7fff;
if ($dllVersion != 0x0401)
{
echo '<br><b>Version mismatch:</b> "phpchartdir.php" is of version 4.1, but "'.
(isOnWindows() ? "chartdir.dll" : "libchartdir.so").'" is of version '.
(($dllVersion >> 8) & 0xff).'.'.($dllVersion & 0xff).'.<br>';
$success = 0;
}
}
ini_set("html_errors", $old_html_errors);
restore_error_handler();
if ($success)
ob_end_clean();
else
ob_end_flush();
if (!$success)
{
$dir_valid = 1;
if (!isOnWindows())
{
$dir_valid = @opendir(ini_get("extension_dir"));
if ($dir_valid)
closedir($dir_valid);
}
if (!$dir_valid)
{
?>
<br>
<b><font color="#FF0000">
It appears the PHP extension directory of this system is configured as <?php echo listExtDir() ?>, but this
directory does not exist or is inaccessible. PHP will then refuse to load extensions from any directory due
to invalid directory configuration. Please ensure that directory exists and is accessible by the web server.
</b></font><br>
<?php
}
?>
<br><br>
<b><u>System Information</u></b>
<ul>
<li>Operating System : <?php echo php_uname()?>
<li>PHP version : <?php echo phpversion()?>
<li>PHP / Web Server interface : <?php echo php_sapi_name()?>
<li>PHP configuration file location : "<?php echo get_cfg_var("cfg_file_path")?>"</td></tr>
<li>PHP extension directory : <?php echo listExtDir() ?>
</ul>
</div>
<?php
die();
}
}
#///////////////////////////////////////////////////////////////////////////////////
#// implement destructor handling
#///////////////////////////////////////////////////////////////////////////////////
global $cd_garbage ;
$cd_garbage = array();
function autoDestroy($me) {
global $cd_garbage;
$cd_garbage[] = $me;
}
function garbageCollector() {
global $cd_garbage;
reset($cd_garbage);
while (list(, $obj) = each($cd_garbage))
$obj->__del__();
$cd_garbage = array();
}
register_shutdown_function("garbageCollector");
function decodePtr($p) {
if (is_null($p))
return '$$pointer$$null';
if (is_object($p))
return $p->ptr;
else
return $p;
}
#///////////////////////////////////////////////////////////////////////////////////
#// constants
#///////////////////////////////////////////////////////////////////////////////////
define("BottomLeft", 1);
define("BottomCenter", 2);
define("BottomRight", 3);
define("Left", 4);
define("Center", 5);
define("Right", 6);
define("TopLeft", 7);
define("TopCenter", 8);
define("TopRight", 9);
define("Top", TopCenter);
define("Bottom", BottomCenter);
define("TopLeft2", 10);
define("TopRight2", 11);
define("BottomLeft2", 12);
define("BottomRight2", 13);
define("Transparent", 0xff000000);
define("Palette", 0xffff0000);
define("BackgroundColor", 0xffff0000);
define("LineColor", 0xffff0001);
define("TextColor", 0xffff0002);
define("DataColor", 0xffff0008);
define("SameAsMainColor", 0xffff0007);
define("HLOCDefault", 0);
define("HLOCOpenClose", 1);
define("HLOCUpDown", 2);
define("DiamondPointer", 0);
define("TriangularPointer", 1);
define("ArrowPointer", 2);
define("ArrowPointer2", 3);
define("LinePointer", 4);
define("PencilPointer", 5);
define("ChartBackZ", 0x100);
define("ChartFrontZ", 0xffff);
define("PlotAreaZ", 0x1000);
define("GridLinesZ", 0x2000);
define("XAxisSymmetric", 1);
define("XAxisSymmetricIfNeeded", 2);
define("YAxisSymmetric", 4);
define("YAxisSymmetricIfNeeded", 8);
define("XYAxisSymmetric", 16);
define("XYAxisSymmetricIfNeeded", 32);
define("XAxisAtOrigin", 1);
define("YAxisAtOrigin", 2);
define("XYAxisAtOrigin", 3);
define("NoValue", +1.7e308);
define("MinorTickOnly", -1.7e308);
define("MicroTickOnly", -1.6e308);
define("LogTick", +1.6e308);
define("TouchBar", -1.69e-100);
define("AutoGrid", -2);
define("NoAntiAlias", 0);
define("AntiAlias", 1);
define("AutoAntiAlias", 2);
define("BoxFilter", 0);
define("LinearFilter", 1);
define("QuadraticFilter", 2);
define("BSplineFilter", 3);
define("HermiteFilter", 4);
define("CatromFilter", 5);
define("MitchellFilter", 6);
define("SincFilter", 7);
define("LanczosFilter", 8);
define("GaussianFilter", 9);
define("HanningFilter", 10);
define("HammingFilter", 11);
define("BlackmanFilter", 12);
define("BesselFilter", 13);
define("TryPalette", 0);
define("ForcePalette", 1);
define("NoPalette", 2);
define("Quantize", 0);
define("OrderedDither", 1);
define("ErrorDiffusion", 2);
define("PNG", 0);
define("GIF", 1);
define("JPG", 2);
define("WMP", 3);
define("BMP", 4);
define("Overlay", 0);
define("Stack", 1);
define("Depth", 2);
define("Side", 3);
define("Percentage", 4);
$defaultPalette = array(
0xffffff, 0x000000, 0x000000, 0x808080,
0x808080, 0x808080, 0x808080, 0x808080,
0xff3333, 0x33ff33, 0x6666ff, 0xffff00,
0xff66ff, 0x99ffff, 0xffcc33, 0xcccccc,
0xcc9999, 0x339966, 0x999900, 0xcc3300,
0x669999, 0x993333, 0x006600, 0x990099,
0xff9966, 0x99ff99, 0x9999ff, 0xcc6600,
0x33cc33, 0xcc99ff, 0xff6666, 0x99cc66,
0x009999, 0xcc3333, 0x9933ff, 0xff0000,
0x0000ff, 0x00ff00, 0xffcc99, 0x999999,
-1
);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -