0 レビュー
2 回答
関数-PHPの不正な文字列オフセット'アクション'
私のウェブサイトの1つに古い計算機があり、最近ロードされなくなったことに気づきました(コードはかなり古いです)。エラーのない白い空白ページが表示されるだけです。私が見つけた唯一のエラーは、次のようなサーバーエラーログにありました。
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
も言及する価値があります。
わからない
0
レビュー
答え :
解決策:
パラメータにアクションが存在するかどうかを確認する必要があります
if ( isset ( $param['action'])) {}
インデックスを印刷する良い方法:
echo "<pre>".print_r($param, true)."</pre>";
なぜ機能しなくなった場合、サーバーがバージョンを変更した可能性があります。エラー報告は以前よりも高くありませんか?
わからない
0
レビュー
答え :
解決策:
php.iniファイルを使用してphp構成を変更する必要がありました。デフォルトでは、この設定は新しいサーバーではオフになっています。
zlib.output_compression = On
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。