В моем старом проекте пост-переменные используются как $ var_name вместо $ _post ["var_name"]. Поэтому мне нужно изменить код во всех файлах. Поэтому я хочу что-то изменить ((опция автоматического извлечения)) в php.ini, чтобы справиться с этим без изменения кодирования. Благодарю.
Вам нужно включить register_globals
в файле php.ini. Посмотрите на эту страницу для получения более подробной информации – http://php.net/manual/en/ini.core.php .
Ваш старый проект использовал теперь устаревший (начиная с 5.3) и удалил (начиная с версии 5.4) функцию, называемую «регистровыми глобалами». Пожалуйста, прочитайте, почему эта функция была удалена: http://php.net/manual/en/security.globals.php
Короче говоря, нет, вы не хотите изменять php.ini, чтобы ваше старое приложение могло работать. Вместо этого вы, скорее всего, захотите восстановить свое старое приложение для работы без регистровых глобальных переменных.
Тем не менее, если это не общедоступное приложение или безопасность не является проблемой, вы можете настроить php.ini даже для PHP 5.4, чтобы ваше приложение работало.
ПРЕДУПРЕЖДЕНИЕ: это связано с изменением вашего файла php.ini, чтобы эмулировать эффекты глобалов регистров. Это означает, что все скрипты PHP будут подвергаться воздействию глобальных регистров регистров, а не только тех, которые вы хотите.
Как уже упоминалось, extract($_REQUEST);
будет по существу выполнять то, к чему привыкли регистровые глобальные переменные. Теперь, используя директиву auto_prepend_file
, вы можете запустить эту строку кода перед каждым скриптом.
То есть, сохраните этот файл где-нибудь (желательно на вашем пути включения PHP) и, скажем, назовите его register_globals.php
.
<?php extract($_POST);
Теперь в php.ini
добавьте эту строку (путь может быть относительно вашего пути включения PHP).
auto_prepend_file = "register_globals.php" ; emulates register_globals
Эффект этого изменения заключается в том, что require("register_globals.php");
происходит до запуска любого скрипта.
Я понимаю ваше нежелание менять много кода, но плохой дизайн следует исправлять, независимо от того, что он подразумевает. Измените свои глобальные переменные на правильные пост-переменные, или вы позже пожалеете об этом. Вероятность 99% вы, в конце концов, достигнете этого вывода, также можете сделать это сейчас.
register_globals был старым способом получения представленных значений с именем name как переменной, а не post, get, request variables. Но это устарело в новой версии. Вам нужно, чтобы ваш код принимал $ _post ['email'] вместо $ email.