есть скрипт, принимает параметр (get/post), мурыжит его, по окончании нужно определить, какой скрипт должен работать дальше - index.php или same.php. Редирект нельзя делать. Получается лучше следать include('index.php')? А как удалить все переменные из начального скрипта, удалить, если был, вывод в браузер, в общем сделать так, чтобы при отрабоке index.php все было для него так же, как при прямом вызове?
Что это означает? нельзя Header() или нельзя echo '<script type="text/javascript">window.location=...</script> ? что-то на тему body.innerHTML= и смотреть что там с заголовками и т.п.
означает, что скрипт лежит в папке, защимщенной htaccess с "дени фром алл" меня интересовало, чтобы именно убить все переменные скрипта, который определяет, какой инклудить - задалбает перебирать все и писать для них unset();
PHP: <?php $sui = get_defined_vars(); foreach($sui as $key=>$val) unset($$key); ?> А вообще, ошибка гораздо раньше, в планировании...
Переписать скрипт. 1) Юзать в нём все переменные через некий массив (не $a, $b, $c, а скажем $_AR['a'], $_AR['b'], $_AR['c']) - потом unset массива 2) Извращенство конечно... но засунуть весь код первого скрипта в функцию, по выходу выдавать имя скрипта, который надо инклюдить Убить вывод? А зачем его делать раньше времени? Пиши весь вывод в переменную, а в конце echo Но ИМХО ты извращенец, и движок, который ты пытаешся мутить - извращенство Так жить нельзя Ты можешь по-человечески объяснить в чём твоя гениальная задумка, что тебе нужно именно такую ужасную схему использовать??
PHP: <?php foreach(get_defined_vars() as $key=>$val) unset($$key); print_r($_SERVER); Отгадай результат
launch.php: PHP: <?php unset($_POST); unset($_GET); include('includes/greatprotectedscript.php'); ?> ... greatprotectedscript.php: PHP: ... echo '<script type="text/javascript">window.location="launch.php"</script> '; ?>
прикольно ) короче, сказали сделать поддомены. С интеграцией в основной сайт, и без его модификаций (не смейтесь ) ничего более умного, чем реализацию через htaccess я не придумал Только дилема, либо делать в нем обращение к sub.php в корне сайта, передавать через get/post имя поддомена и имя скрипта, и после кучи перепроверок инклудить "поддоменные" скрипты из папки поддомена. (ну а если, например, нужна регистрация - выдавать форму логина основного сайта - вот почему нужно убивать переменные, мало ли, что там в той форме они сделают, если и там такие же имена). либо я делаю в htaccess обращение к скрипту в папке /поддомены/поддомен без каких либо лишних проверок из первого варианта, но тогда я не могу инклудить скрипты из основного сайта - она там настроены так, что сработают если запущен index.php из корня, т.е. если "текущая директория php" - корень основного. В первом способе косяк в том, что картинки и прочую дребедень придется тоже скриптом отдавать, и мне это чет не нравится ) Во втором - я не знаю, как сменить "текущий каталог php"... Если подскажите как, вопрос из нулевого поста сам собой аннигилируется
PHP: <?php // Твой первый скрипт $var = 1; $str = '123'; clear_globals(); // Новый скрипт function clear_globals() { foreach ($GLOBALS as $k => $v) { if ($k[0] == '_' || $k == 'GLOBALS') continue; unset($GLOBALS[$k]); } } Я как-нибудь бы так сделал.
Sergey89 да, сделал примерно так, только с префиксом подлинее в начале имен переменных люблю нижний прочерк, поэтому у меня он тоже понапихан тупурь у меня вопросец потрудней, но вынесу в другую ветку
Я бы инклюдил файл в функции, так как в функции не видны внешние переменные (кроме глобальных, разумеется).