2012-06-04 24 views
0

這是我的代碼。我知道500個錯誤通常是編碼錯誤,但我找不到它。謝謝你的時間。PHP爆炸日期的值和使用if語句拋出500錯誤

$today = "1234"; 
$appt = "1235"; 
$date = explode("/", $data[1]); // EXAMPLE DATE IS 06/01/2012 
$m = date("m",mktime(0, 0, 0, $date["0"], $date["1"], $date["2"])); 
$d = date("d",mktime(0, 0, 0, $date["0"], $date["1"], $date["2"])); 
$y = date("Y",mktime(0, 0, 0, $date["0"], $date["1"], $date["2"])); 
$appt = date(mktime(0, 0, 0, "$m", "$d", "$y")); 
$today = strtotime("today"); 

if ($today > $appt) { 

} else { 
$appt[] = array($data[8],$data[1],$data[2],$data[4],$data[3],$data[7],$data[9],$data[5],$data[15],$data[6],$data[10],$data[12],$data[13],$data[14]); 
} 
+2

,我不認爲這個代碼可以拋出一個500 HTTP錯誤,大部分時間就意味着有一些錯誤與您的服務器配置(httpd.conf,php.ini,.htaccess ....) – Jeroen

+0

但是,當我刪除這部分的編碼,文件工作正常。 – user1424232

+0

我知道某些服務器在代碼中出現錯誤時會拋出500錯誤,而不是以正常方式拋出錯誤。也許它打破了附近的東西? –

回答

-1

首先,你的代碼看起來有點過於複雜。試試這個:

$today=strtotime(date("m/d/Y")); 
$appt=strtotime($data[1]); 
if($today > $appt) { 

} else { 
    $appt[] = array($data[8],$data[1],$data[2],$data[4],$data[3],$data[7],$data[9],$data[5],$data[15],$data[6],$data[10],$data[12],$data[13],$data[14]); 
} 

那麼做,如果你仍然得到一個500錯誤的一些錯誤檢查:

print_r($data); 

希望這將至少讓你在正確的方向。

0

你的錯誤來自於你的$date參考:

$m = date("m",mktime(0, 0, 0, $date["0"], $date["1"], $date["2"])); 
$d = date("d",mktime(0, 0, 0, $date["0"], $date["1"], $date["2"])); 
$y = date("Y",mktime(0, 0, 0, $date["0"], $date["1"], $date["2"])); 

您使用"0""1""2"explode(...)返回一個基於整數的數組,而不是字符串。您應該使用

$m = date("m",mktime(0, 0, 0, $date[0], $date[1], $date[2])); 
$d = date("d",mktime(0, 0, 0, $date[0], $date[1], $date[2])); 
$y = date("Y",mktime(0, 0, 0, $date[0], $date[1], $date[2])); 

一個建議,我想提出的是救什麼mktime(...)返回到加快處理速度:

$mktime = mktime(0, 0, 0, $date[0], $date[1], $date[2]); 
$m = date("m", $mktime); 
$d = date("d", $mktime); 
$y = date("Y", $mktime); 
unset($mktime); // http://php.net/manual/en/function.unset.php 


無關原來的問題,但爲什麼你使用:

$appt = date(mktime(0, 0, 0, "$m", "$d", "$y")); 

時,你應該使用:

在代碼在過去的兩個街區
$appt = date(mktime(0, 0, 0, $m, $d, $y)); 


大廈,您可以使用此:

$mktime = mktime(0, 0, 0, $date[0], $date[1], $date[2]); 
$appt = date(mktime(
    0, // $hour 
    0, // $minute 
    0, // $second 
    date("m", $mktime), // $month 
    date("d", $mktime), // $day 
    date("Y", $mktime))); // $year 
unset($mktime); // http://php.net/manual/en/function.unset.php