もう一つの奇妙な質問がここにあります。私は最近、PHP 5からPHP 7.1への大幅なアップグレードと、CentOSのアップグレードも行っています。PHP 7.1 Register_Globals
コード内にレジスタのグローバルショートカットを使用したページがたくさんあります(ほとんどすべてが実際に使用されています)。
$_SESSION['username'] = $data['username'];
$_SESSION['password'] = $data['password'];
$_SESSION['accountid'] = $data['accountid'];
$_SESSION['role'] = $data['role'];
$getCompany = mysqli_query($mysqli_con,"SELECT * FROM companies WHERE companyid='$data[accountid]'");
$dataCompany = mysqli_fetch_array($getCompany);
$delinquent = $dataCompany['delinquency'];
// Here I fixed it
$item = $_GET['item'];
// But generally variables are just referenced by $whatevergetparameter
if($delinquent == 0){
switch($item)
{
// Settings
case "cannedresponses":
include("/master/inc/settings/list-cannedresponse.inc");
break;
case "serviceboard":
include("/master/inc/settings/list-serviceboard.inc");
break;
case "pending-direct":
include("/master/inc/direct/pending.inc");
break;
これは当然、多くの問題を引き起こしています。特にそれはどこにでもあるので。
作業中に書き直す予定はありますが、その間に誰かがregister_globalsを真似て「有効」にする回避策を知っているかどうかは分かりませんでした。
私が見て、解決策を試してみた: http://php.net/manual/en/security.globals.php をしかし残念ながら、彼らは3年前に書かれたので、驚くべきことではないとする動作しません。
私のGoogleの-Fuがここでも私を助けていません:/
すべてのヘルプは高く評価され、感謝を事前に!
foreach (['_GET', '_POST', '_COOKIE'] as $source) {
foreach ($$source as $key => $value) {
$GLOBALS[$key] = $value;
}
}
免責事項:これまでに実際にこれをしないでください
私はあなたがレジスタのグローバルを再びオンにすることはできないと思います。 PHP 7.1の唯一の選択肢は、書き換えを続けることです。率直に言って、私は、登録グローバルに依存していた生産ではアプリケーションを実行しません。 – mkaatman
コード内に登録グローバル問題がありませんか? – hassan
@mkaatmanここでの問題は、GETを追加して解決しました。私はそれをここで働かせるために追加しました。しかし、コードの多くは単に$ itemまたは$ serviceによって参照されます(register_globalsではget変数であると仮定する)。 –