Есть ли в РНР команда передачи управления другому скрипту?

Статус
В этой теме нельзя размещать новые ответы.

Zimo

Новичок
Есть ли в РНР команда передачи управления другому скрипту?

Есть ли в РНР команда передачи управления другому скрипту?
Т.е. допустим существует Скрипт.рнр и в нем оператор switch, который в зависимости от условия передает управление другим скриптам так, чтобы Скрипт.рнр заканчивал свою работу и управление на него БОЛЬШЕ НЕ ВОЗВРАЩАЛОСЬ (т.е. не получалось так, как при вызове процедуры).

Срипт.рнр :
...
switch (условие)
{
case значение1 : Переход(Скрипт1.рнр);
case значение2 : Переход(Скрипт2.рнр);
case значение3 : Переход(Скрипт3.рнр);
...
case значениеN : Переход(СкриптN.рнр);
}


Здесь Переход() и есть искомая команда, существует ли она в РНР?
Если да, как она называется на самом деле?
 

jonjonson

Охренеть
PHP:
include "Script1.php";
exit();  // Приказать Скрипт.рнр заканчивал свою работу ибо не фиг
:)

Или...

PHP:
$controllers = array(
"q1" => "z1.php",
"q2" => "z2.php",
"q3" => "z3.php",
"q4" => "z4.php",
"q5" => "z5.php");

if (array_key_exists("параметр", $controllers)) {
    include $controllers["параметр"];
} else {
    die("Вах! Вах! Вах!");
}
 

Zimo

Новичок
Автор оригинала: jonjonson
PHP:
include "Script1.php";
exit();  // Приказать Скрипт.рнр заканчивал свою работу ибо не фиг
:)

Или...

PHP:
$controllers = array(
"q1" => "z1.php",
"q2" => "z2.php",
"q3" => "z3.php",
"q4" => "z4.php",
"q5" => "z5.php");

if (array_key_exists("параметр", $controllers)) {
    include $controllers["параметр"];
} else {
    die("Вах! Вах! Вах!");
}
Не то. У Вас управление всё равно возвращается в начальный скрипт. Т.е. в браузере будет стоять страница Script.php, а не Script1.php... ScriptN.php

-~{}~ 29.06.07 12:18:

Автор оригинала: *****
а что будет, если управление ВОЗВРАТИТСЯ?
Нужно ли понимать этот ответ уважаемого гуру так, что подобной команды в РНР нет?
 

DeadLy

Новичок
Location, только в том случае если ничего не выводилось до этого.
 

Фанат

oncle terrible
Команда форума
Zimo
Уважаемому гуру надо ответить на его вопрос.
быстро, четко и без постороннего словоблудия.

-~{}~ 29.06.07 12:34:

Т.е. в браузере будет стоять
понятно.
слово НТТР клиенту неизвестно.
вы проиграли и отправляетесь на 10 клеток назад, читать phpfaq.ru/na_tanke
 

Zimo

Новичок
Автор оригинала: *****
Zimo
Уважаемому гуру надо ответить на его вопрос.
быстро, четко и без постороннего словоблудия.

-~{}~ 29.06.07 12:34:


понятно.
слово НТТР клиенту неизвестно.
вы проиграли и отправляетесь на 10 клеток назад, читать phpfaq.ru/na_tanke
Уважаемый гуру похоже раньше долго служил в армии. В хорошем смысле этого слова :)

Произойти - ничего не произойдет, но можно найти много применений такой возможности, если бы она существовала.
Пока не понял, в чем принципиальное препятствие для этого, ведь при любом нажатии пользователем на ссылку именно такой переход и происходит, почему нельзя сделать примерно то же программно?
 

Фанат

oncle terrible
Команда форума
в пхп программе НЕТ никаких ссылок и переходов по ним.
читаем phpfaq.ru/na_tanke
все вопросы - только после этого
 

Zimo

Новичок
Автор оригинала: *****
в пхп программе НЕТ никаких ссылок и переходов по ним.
читаем phpfaq.ru/na_tanke
все вопросы - только после этого
Читал я про Ваши танки :)
Не надо придираться к словам. Понятно, что в пхп нет ссылок. Есть скрипты, которые генерируют хтмл-страницы с этими ссылками, кликая на которые пользователь в свою очередь запускает другие пхп-скрипты, получая результат их работы в виде новых хтмл-страниц.
Могу перефразировать вопрос: можно ли сделать так, чтобы пользователь кликнув по ссылке, запускающей Script.php в ответ получил страницу не www.site.ru/Script.php, а www.site.ru/Script1.php или www.site.ru/Script222.php? То есть может ли Script.php "на лету" подменить страницу, запустив другой скрипт, чтобы пользователь получил ответ не от Script.php, а от Script1.php ... ScriptN.php?
 

Gorynych

Посетитель PHP-Клуба
плохо читали Вы наши танки

1. Адрес, который набирает или по которому переходит по ссылке пользователь определяет (грубо говоря) какой скрипт будет запускаться.

2. Если Вам по каким-то соображениям в процессе выполнения (разбора параметров) скрипта надо выбрать другой скрипт, который должен выполнить всю дальнейшую работу, то Вам надо осознать два факта:

а) команда include() или require() грубо говоря сделает подстановку некоторого скрипта в то место, где вы используете эту команду. После того, как подстановка закончится, выполнение перейдет к следующим командам основного скрипта.

б) если Вы твердо убеждены в том, что возвращаться для дальнейшего выполнения программы Вам не надо, то используйте exit в конце вызываемого скрипта.

Если я правильно понимаю, то Вы изобретаете нечто на подобии phpfusion: главный скрипт (сценарий) анализирует входные условия и перебрасывает выполнение на какой-то другой.

по большому счету Вам бы (наверное) сгодилось и:
PHP:
switch (условие) {
  case значение1:
    include('script1.php');
    exit;
...
}
 

Zimo

Новичок
Автор оригинала: Gorynych

Если я правильно понимаю, то Вы изобретаете нечто на подобии phpfusion: главный скрипт (сценарий) анализирует входные условия и перебрасывает выполнение на какой-то другой.
Вы меня правильно понимаете.
Счастье - это когда тебя понимают! :)

Автор оригинала: Gorynych
по большому счету Вам бы (наверное) сгодилось и:
PHP:
switch (условие) {
  case значение1:
    include('script1.php');
    exit;
...
}
Неужели Вы думаете, что я не знаю, что делают include и exit? Все так стремятся научить меня пользоваться ими :)
Вы же поняли условия задачи, скажите сами: include и exit им отвечают?
 

Zimo

Новичок
Автор оригинала: Gorynych
плохо читали Вы наши танки

1. Адрес, который набирает или по которому переходит по ссылке пользователь определяет (грубо говоря) какой скрипт будет запускаться.
Это не оспоримо и ёжику понятно. :)
Если щелкнуть по ссылке www.site.ru/Script.php, то запустится Script.php. Это не вопрос.
Вопрос: а дальше-то, Script.php, запустившись, может ли передать управление на Script1.php ... ScriptN.php, чтобы пользователь получил в ответ страницу www.site.ru/Script1.php ... www.site.ru/ScriptN.php, вместо ожидаемой www.site.ru/Script.php ?
 

Zimo

Новичок
Автор оригинала: Андрейка
Zimo
отвечают. а с какой целью интересуетесь?
Не отвечают, Андрейка. В ответ пользователю придёт всё та же страница www.site.ru/Script.php, а нужно то чтобы пришла www.site.ru/Script1.php ... www.site.ru/ScriptN.php

А интересуюсь с целью внутреннего самосовершенствования, перехода на качественно иной уровень просветления и нравственного роста :)

-~{}~ 29.06.07 14:06:

Автор оригинала: Slavicos
.....
(извиняюсь, уже было)
Ну ничего, ничего... :)
 

Андрейка

Senior pomidor developer
Zimo
ну если ему нужна www.site.ru/ScriptN.php пусть и тыкает на ссылку с www.site.ru/ScriptN.php.. фчем проблема?
 

Gorynych

Посетитель PHP-Клуба
Zimo

не понимаю.

1. если Вам нужно по условиям выполнить некий другой скрипт и закончить выполнение программы, то include и exit решают эту задачу. Одной, специальной команды подключи_скрипт_и_закончи_работу насколько мне известно нет (и я не понимаю, зачем нужен лишний синоним к совокупности двух других команд).

2. если Вам при обращении к странице www.site.ru/script.php надо ПЕРЕНАПРАВИТЬ пользователя на другую страницу, то Вам надо использовать вывод HTTP-заголовка Location - http://ru2.php.net/header или механизм перенаправления веб-сервера.

но я до последнего момента думал, что Вас интересует передача управления скрипту, а не перенаправление на другой адрес.
 

Zimo

Новичок
Автор оригинала: Андрейка
Zimo
ну если ему нужна www.site.ru/ScriptN.php пусть и тыкает на ссылку с www.site.ru/ScriptN.php.. фчем проблема?
Я ж говорю, Андрейка, только Горыныч меня понял.
Проблемы нет. Просто программа, а не пользователь будет решать на какую ему страницу нужно, по определенным параметрам, которые этот пользователь введет. Разве ж можно на этих людей положиться? :)
Ну типа - искусственный интеллехт!!! :)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху