所以这个脚本在服务器更新后停止工作,我不明白为什么。(更新到php 5)
我实际上无法找到它的错误,我得到的线索表明这是第62行的问题。
它是一个计算biorythm的脚本。
<?php
$now = gmdate('D, d M Y H:i:s') . ' GMT';
header('Expires: ' . $now);
header('Last-Modified: ' . $now);
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");
error_reporting(0);
$copyright = "By www.magnaromagna.it";
$name = $_POST["name"];
$day = $_POST["day"];
$month = $_POST["month"];
$year = $_POST["year"];
$cycle = $_POST["cycle"];
$chartsize = $_POST["chartsize"];
$name = strip_tags($name);
if($chartsize == "small")
{
$chartwidth = 450;
$chartheight = 252;
$tablewidth = 500;
}
elseif($chartsize == "medium")
{
$chartwidth = 625;
$chartheight = 350;
$tablewidth = 655;
}
else
{
$chartwidth = 800;
$chartheight = 448;
$tablewidth = 820;
}
$date = date("m/d/y");
function drawRhythm($daysalive, $period, $color)
{
//$period = $period * 2;
global $cycle, $image, $chartwidth, $chartheight;
$centerday = $daysalive - ($cycle / 2);
$plotscale = ($chartheight - 25) / 2;
$plotcenter = ($chartheight - 25) / 2;
// draw the curve
for($count = 0; $count <= $cycle; $count )
{
echo $date ;
$phase = ((($centerday) $count) % $period) / $period * 2 * pi();
$y = 1 - sin($phase) * (float)$plotscale (float)$plotcenter;
if($count > 0)
{
imageLine($image, $oldx, $oldy, $count * $chartwidth / $cycle, $y, $color);
}
$oldx = $count * $chartwidth / $cycle;
$oldy = $y;
}
}
$data1 = gregorianToJD($month, $day, $year) ;
$data2 = gregorianToJD(date( "m"), date( "d"), date( "Y")) ;
$pastdays = abs($data1 - $data2);
// $pastdays = abs(gregorianToJD($month, $day, $year) - gregorianToJD(date( "m"), date( "d"), date( "Y"))); //
$image = imageCreate($chartwidth, $chartheight);
$colorbackground = imageColorAllocate($image, 0, 0, 0);
$colorforeground = imageColorAllocate($image, 255, 255, 255);
$colorgrid = imageColorAllocate($image, 255, 255, 255);
$colorborder = imageColorAllocate($image, 175, 175, 175);
$colorcross = imageColorAllocate($image, 255, 255, 255);
$colorphysical = imageColorAllocate($image, 0, 0, 255);
$coloremotional = imageColorAllocate($image, 255, 0, 0);
$colorintellectual = imageColorAllocate($image, 0, 255, 0);
$colorintuitive = imageColorAllocate($image, 255, 0, 255);
$colorawareness = imageColorAllocate($image, 255, 125, 0);
$colorspiritual = imageColorAllocate($image, 0, 255, 255);
$coloraesthetic = imageColorAllocate($image, 255, 255, 0);
imageFilledRectangle($image, 0, 0, $width - 1, $height - 1, $colorbackground);
$nrsecondsperday = 60 * 60 * 24;
$diagramdate = time() - ($cycle / 2 * $nrsecondsperday)
$nrsecondsperday;
$flagcount = 1;
for ($index = 1; $index < $cycle; $index )
{
$thisdate = getDate($diagramdate);
$countCoord = ($chartwidth / $cycle) * $index;
imageLine($image, $countCoord, $chartheight - 25, $countCoord,
$chartheight - 20, $colorgrid);
$flag = $flagcount%2;
if($cycle == 60 && $flag == 0)
{
imageString($image, 3, $countCoord - 2, $chartheight - 16,
$thisdate[ "mday"], $colorgrid);
}
elseif($cycle != 60)
{
imageString($image, 3, $countCoord - 5, $chartheight - 16,
$thisdate[ "mday"], $colorgrid);
}
$flagcount ;
$diagramdate = $nrsecondsperday;
}
imageRectangle($image, 0, 0, $chartwidth - 1, $chartheight - 20,
$colorborder);
imageLine($image, 0, ($chartheight - 20) / 2, $chartwidth,
($chartheight - 20) / 2, $colorcross);
imageLine($image, $chartwidth / 2, 0, $chartwidth / 2, $chartheight - 20,
$colorcross);
drawRhythm($pastdays, 23, $colorphysical);
drawRhythm($pastdays, 28, $coloremotional);
drawRhythm($pastdays, 33, $colorintellectual);
drawRhythm($pastdays, 38, $colorintuitive);
drawRhythm($pastdays, 43, $coloraesthetic);
drawRhythm($pastdays, 48, $colorawareness);
drawRhythm($pastdays, 53, $colorspiritual);
$subnum = rand(0, 999999);
$subnum = "images/dummies/".$subnum.".gif";
imageGIF($image,$subnum);
imagedestroy($image);
?>
<html>
<head>
<title>Risultato Bioritmo</title>
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<meta name="robots" content="index,follow" />
<link rel="stylesheet" type="text/css" href="biostyle.css">
</head>
<body>
<div align="center"><center>
<table border="0" cellpadding="3" cellspacing="0" width="<?echo"$tablewidth";?>">
<TR><TD align = "right"><a href="http://www.magnaromagna.it/bioritmo/" target="_blank" class="pagelinks">Calcola altro bioritmo</a>
</TD></TR></TABLE>
</div>
<div align="center"><center>
<table border="1" cellpadding="7" cellspacing="0" width="<?echo"$tablewidth";?>" class="outertable">
<tr>
<td align="center" class="genericstyle"><p class="bluesubheader">
<?
if($name != "")
{
echo"Bioritmo per $name<br>";
}
else
{
echo"Mappa dei tuoi bioritmi<br>";
}
?>
<?
echo"Nascita: $month/$day/$year<br>
Data di oggi: $date";
?>
</p>
<p align="center"><img src="<?echo"$subnum";?>">
Rosso: Ciclo Emozionale |
Blu: Ciclo Fisico |
Verde: Ciclo Intelligenza <br>
Viola: Intuito |
Acqua: Ciclo Spirituale |
Giallo: Ciclo Estetico |
Arancione:Ciclo Consapevolezza</p>
<p align="left"><span class="bluesubheader"><br>
Capire il tuo bioritmo</span></p>
</td>
</tr>
</table>
</center></div>
<div align="center"><center>
<table border="0" cellpadding="3" cellspacing="0" width="<?echo"$tablewidth";?>">
<TR><TD align = "right"><a href="http://www.magnaromagna.it/bioritmo/" class="pagelinks" target="_blank">Calcola altro bioritmo</a>
</TD></TR></TABLE>
</div>
<div align="center"><center>
<table border="0" cellpadding="7" cellspacing="0" width="300">
<tr>
<td align="center" class="copyright">Copyright Magnaromagna</td>
</tr>
</table>
</center></div>
</body>
</html>
<?include("images/dummies/cleanup.php");
?>
非常感谢任何帮助!
答案 0 :(得分:0)
正如我所见,你的代码发现你的for循环在这里:
for($count = 0; $count <= $cycle; $count )
这是一个无限循环,所以要明智:
for($count = 0; $count <= $cycle; $count++ ) //use increment or decrements
另外一点是使用了PHP的排序标签,即<?
这会导致问题而你不会留下空格。许多服务器不支持。因此,请始终使用PHP完整标记,即
<?php
//在每个地方使用它可能是你的排序标签不在
总是应该在标签后面留一个空格。
您的代码:
<?echo"$tablewidth";?>
应该是:
<?php echo "$tablewidth"; ?>
检查所有内容,您的脚本将有效。
答案 1 :(得分:0)
早上,不确定它是否是一个拼写错误但是在绘制曲线部分你有两个变量旁边的每一个只是由()分隔..当我在本地快速运行脚本时它给了我以下2行的T_variable错误..
$phase = ((($centerday) $count) % $period) / $period * 2 * pi();
应该是
$phase = ((($centerday) * $count) % $period) / $period * 2 * pi();
因为它会引发意外的t_variable错误。
下面一行
$y = 1 - sin($phase) * (float)$plotscale (float)$plotcenter;
需要(float)$plotscale
和(float)$plotcenter
之间的隔离...
否则也会引发T_Variable错误...