0

どこを見ればいいのかわからないので、誰かがこれを手伝ってくれるのではないかと思います。

私はほとんど制御できない共有サーバー上で実行されている古いサイトを持っています。他のサイトでうまく動作するスクリプトがあり、この古いサイトに追加したいのですが、時刻が正しく表示されません。私の他のすべてのサイトは PHP 5+ で実行されていますが、これは古いサイトで初めて PHP 4.4.8 を実行していることを発見した PHP スクリプトです。

そのため、問題をより大きなスクリプト内の関数に絞り込み、これが非互換性がある場所だと考えています。コードは基本的に、提供されたデータを取得し、それを日、時間、分、および秒に変換します。

    function time_left ($e_time) {
  $e_time = strtotime($e_time);
  $e_time = substr($e_time, 0, 10);
  $time_stamp = explode("-", date('n-d-Y-H-i-s', $e_time));
  $e_time = mktime($time_stamp[3], $time_stamp[4], $time_stamp[5], $time_stamp[0], $time_stamp[1], $time_stamp[2]);
  $server_time = time();
  $diff_time = ($e_time - $server_time);
  if ($diff_time < 0) $diff_time = 0;
  unset($time_stamp);

  # get days remaining
  $time_stamp[1] = floor($diff_time/60/60/24);
  if($time_stamp[1] <= 0){$time_stamp[1] = "";} else {$time_stamp[1] .= "d ";}

  # get hours remaining
  $time_stamp[3] = floor(($diff_time - $time_stamp[1]*60*60*24)/60/60);
  if($time_stamp[3] <= 0){$time_stamp[3] = "";} else {$time_stamp[3] .= "h ";}

  # get minutes remaining
  $time_stamp[4] = floor(($diff_time - $time_stamp[1]*60*60*24 - $time_stamp[3]*60*60)/60);
  if($time_stamp[4] <= 0){$time_stamp[4] = "";} else {$time_stamp[4] .= "m ";}

  return $time_stamp[1] . $time_stamp[3] . $time_stamp[4];

}

上記のコードで、PHP 4.4 と互換性がないと思われるものを見つけられる人はいますか?

現在、生の時間データ変数をエコーすると生の形式で表示されますが、上記の関数を使用しても何も表示されません。私が言うように、PHP 5 以降を実行しているサーバーでは、このコーディングに問題はありません。

助けてくれてありがとう!

*追加

問題が何であるかを特定したと思います。それは strtotime です

strtotime が取得する生の入力は次のとおりです: 2013-03-18T21:38:58.000Z

現時点では、このビットをエコーすると、スクリプトは PHP 4.4 で実行されているためです。

$e_time = strtotime($e_time);

常に -124 の値を返しますが、理由がわかりません??

4

1 に答える 1

2

削除する

unset($time_stamp);

この行。

すぐに操作を実行したいときに、なぜ設定を解除するのかわかりません。それが役立つことを願っています

于 2013-03-18T20:32:06.367 に答える