0

所以这个脚本在服务器更新后停止工作,我不知道为什么。(更新到 php 5)

我实际上找不到它有什么问题,我得到的线索表明这是第 62 行附近的问题。

这是一个计算生物节律的脚本。

    <?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&nbsp;|&nbsp;
        Blu: Ciclo Fisico&nbsp;|&nbsp;
        Verde: Ciclo Intelligenza <br>
        Viola: Intuito&nbsp;|&nbsp;
        Acqua: Ciclo Spirituale&nbsp;|&nbsp;
        Giallo: Ciclo Estetico&nbsp;|&nbsp;
        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");

    ?>

任何帮助将不胜感激!

4

2 回答 2

0

早上,不确定它是否是一个错字,但在绘制曲线部分你有 2 个变量,每个变量旁边都用 () 分隔.. 当我在本地快速运行脚本时,它在以下 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 错误...

希望这可能会有所帮助。

于 2013-07-23T06:16:32.630 回答
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"; ?>

检查所有这些,您的脚本将起作用。

于 2013-07-23T06:05:06.743 回答