我的一個網站上有一個舊計算器,最近注意到它不再加載(代碼很古老)。它只顯示一個沒有錯誤的白色空白頁。我能找到的唯一錯誤是在服務器錯誤日志中說:
PHP Warning: Illegal string offset 'action' in /home/o8ap61wv26c5/public_html/calculator.php on line 13
這是它所指的代碼:
$param = get_request_var('param');
if($param['action'] == 'calculate'){
$param['principal'] = preg_replace('/[^0-9\.]/', '', $param['principal']);
if($param['principal'] < $config['min_principal'] || $param['principal'] > $config['max_principal']) $err['principal'] = true;
if($param['interest_rate'] < $config['min_interest_rate'] || $param['interest_rate'] > $config['max_interest_rate']) $err['interest_rate'] = true;
if($param['start_year'] < $config['min_start_year'] || $param['start_year'] > $config['max_start_year']) $err['start_year'] = true;
if($param['start_month'] < 1 || $param['start_month'] > 12) $err['start_month'] = true;
if($param['term'] < $config['min_term'] || $param['term'] > $config['max_term']) $err['term'] = true;
}
這是功能代碼
function get_request_var($varname = '', $defaultval = '') {
global $smarty;
if($varname){
if(isset($_POST[$varname])){
$var = $_POST[$varname];
} elseif(isset($_GET[$varname])) {
$var = $_GET[$varname];
}
} elseif(count($_POST)) {
$var = $_POST;
} elseif(count($_GET)) {
$var = $_GET;
}
$smarty->load_filter('output', 'correctoutput');
if(isset($var)){
/* assign variable to Smarty */
if(isset($smarty)){
if(get_magic_quotes_gpc()){
$smarty->assign($varname, array_stripslashes($var));
} else {
$smarty->assign($varname, $var);
}
}
/* adding slashes if magic quotes feature is turned off */
if(!get_magic_quotes_gpc()) $var = array_addslashes($var);
return $var;
} else {
$smarty->assign($varname, $defaultval);
return $defaultval;
}
}
知道為什么頁面會出現這個錯誤嗎?另外值得一提的是我最近搬家服務php 5.6
uj5u.com熱心網友回復:
您必須檢查引數中是否存在操作
if ( isset ( $param['action'])) {}
列印索引的好方法:
echo "<pre>".print_r($param, true)."</pre>";
至于為什么它不再作業了,也許你的服務器改變了它的錯誤報告版本沒有比以前高?
uj5u.com熱心網友回復:
我不得不通過 php.ini 檔案修改 php 配置。默認情況下,此設定在我的新服務器上已關閉。
zlib.output_compression = On
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/401155.html
