Forum Webscript.Ru

Программирование => PHP => Тема начата: Shocker от 08 Февраля 2005, 15:11:21

Название: Как из сценария запустить другой?
Отправлено: Shocker от 08 Февраля 2005, 15:11:21
Блин, никак понять не могу...:confused:
Ситуация следующая: при вводе данных в форму, запускается сценарий на РНР, который их обрабатывает, и в зависимости от результата запускает тот или иной ДРУГОЙ сценарий. При этом нужно завершить выполнение исходного.
if ()  {запуск first.php}
else  {запуск second.php}
?>
Как блин это сделать??? Не exec\'ом же...
Название: Как из сценария запустить другой?
Отправлено: Меняздесьдавнонет от 08 Февраля 2005, 15:17:39
вообще-то, в пхп есть такая замечательная инструкция, как [p]include[/p]
только вот термин "запуск" к ней неприменим.
Другое дело, что "завершить выполнение исходного" по-другому не получится.

Впрочем, если ты скажешь конкретно, что ты делаешь, без терминов, в которых путаешься, мы подскажем точное решение
Название: Как из сценария запустить другой?
Отправлено: Shocker от 08 Февраля 2005, 15:30:33
RomikChef
if ( (strlen(trim($inp_mail))<6) or (strpos($inp_mail,"@")==false) or (strpos($inp_mail,".")==false) ) //
   {
   echo "Неправильно набран адрес электронной почты";
   }
elseif (strlen(trim($inp_text))<20)
   {
   echo "Вы не набрали текст заказа";
   }
else
   {
   Echo strlen(trim($inp_text));
   $message=   "   отправитель $inp_name  
         пишет следующее:
         $inp_text";

   $message=convert_cyr_string($message,"w","k");
   $subject=convert_cyr_string("Заказ","w","k");
   $from=convert_cyr_string($inp_name." <".$inp_mail.">","w","k");

   if (Mail("postmaster@neftegazdetal.ru",$subject,$message,$from)==1)
      {
      echo "Письма отправлены!!!";
      }
   else
      {
      echo "ОтпраBкA обломилась!!!";
      }
   }
?>
Вместо echo хотелось бы выводить нормальные странички с сообщением. А про завершение текущего сценария - так это чтоб предотвратить просмотр исходного кода, представленного выше. Надеюсь понятно объяснил...
Название: Как из сценария запустить другой?
Отправлено: Меняздесьдавнонет от 08 Февраля 2005, 15:37:38
вместо каких echo?
echo "Вы не набрали текст заказа";
или вместо
echo "ОтпраBкA обломилась!!!";
?

Про просмотр исходного кода у тебя неверные сведения.
никакое завершение не требуется.
и исходный код нельзя просмотреть ни в каком случае.
Название: Как из сценария запустить другой?
Отправлено: Shocker от 08 Февраля 2005, 15:43:41
Про исходник ты прав - и правда нельзя.... :)))
Но вопрос остается в силе.
То есть я хотел вместо КАЖДОГО из echo вывести разную страничку. Ну типа чтобы сохранить стилевое оформление сайта...
Или вернуть пользователя обратно на страницу с формой, откуда пришли неверные данные....
Название: Как из сценария запустить другой?
Отправлено: Lutik от 08 Февраля 2005, 16:01:40
Ну так что тебе мешает это сделать?
Сделай обработку формы в этом же фаиле и выводи ошибку которая вирнул скрипт или подтверждение что все ок.
Если форма обрабатывается в отдельном фаиле делай редирект на фаил с формой и возвращай ошибку скрипта!(header)
Название: Как из сценария запустить другой?
Отправлено: Shocker от 08 Февраля 2005, 16:13:42
Че-то не работает редирект... может че не так делаю..?
после условия ставлю

header("http://www.neftegazdetal.ru/order.php");
exit;
Название: Как из сценария запустить другой?
Отправлено: Shocker от 08 Февраля 2005, 16:18:02
Блин, сам понял - забыл в хедер вставить Location:
Теперь все получилось.
Спасибо большое всем кто помогал.
Название: Как из сценария запустить другой?
Отправлено: Lutik от 08 Февраля 2005, 16:18:25
http://phpclub.net/manrus/f/header.html
Тебе поможет
Название: Как из сценария запустить другой?
Отправлено: Shocker от 08 Февраля 2005, 16:30:14
Эхх, как так? Передаю данные об ошибке в форму и пытаюсь назначить полю inp_mail значение ошибки:
...order.php?inp_mail=wrong_adress
а в форме так и остается - там тэг

Посоветуйте, плз, как вместо фиксированного value="Ваш адрес электронной почты" вставить переданный параметр...
Название: Как из сценария запустить другой?
Отправлено: Lutik от 08 Февраля 2005, 16:46:12

if($_GET[\'inp_mail\']){
$m="wrong_adress";
}
else $m="Ваш адрес электронной почты";
Название: Как из сценария запустить другой?
Отправлено: Меняздесьдавнонет от 08 Февраля 2005, 17:28:05
вот фигни-то без меня понаписали.
Shocker
я тебя специально спросил, вместо какого эха тебе нужно вызывать скрипт.
Дело в том, что вместо первых надо инклюдить форму.
а вместо последних - делать таки редирект.

чтобы написать нужное значение в форме, надо сделать там оператор вывода пхп.
соответственно, форма должна быть пхп скриптом
Название: Как из сценария запустить другой?
Отправлено: Shocker от 09 Февраля 2005, 08:34:05
RomikChef
Страничка с формой и есть PHP скрипт, только вот такая штука - сама форма создается командами HTML, т.е. находится внутри тэгов . Как внутри них указать кусок скрипта? Это где-то было, только я не смог найти...
Название: Как из сценария запустить другой?
Отправлено: Меняздесьдавнонет от 09 Февраля 2005, 12:06:14
Shocker , не поверишь.
Название: Как из сценария запустить другой?
Отправлено: Shocker от 09 Февраля 2005, 13:23:27
RomikChef :) :) :)
Че-то я стормозил...
А почему строчка \';   ?>
работает, а
echo \'\';   ?>
нет?
         
            ?>
Название: Как из сценария запустить другой?
Отправлено: Shocker от 09 Февраля 2005, 13:42:09
И вот еще до кучи - почему при назначении
$m=\'Ваш адрес электронной почты\';
в форму выводится только первое слово?
Название: Как из сценария запустить другой?
Отправлено: Меняздесьдавнонет от 09 Февраля 2005, 15:35:56
Цитировать
Shocker:
А почему строчка \'; ?>
работает, а
echo \'\'; ?>
нет?

не знаю
смотри сам. где косяки.
тем более, что так писать смысла нету.
зачем вся эта борода, если пхп тебе нужен только чтобы вывести $m?
Цитировать
Shocker:
почему при назначении
$m=\'Ваш адрес электронной почты\';
в форму выводится только первое слово?

неправда. все выводится прекрасно.
а если ты не знаешь, что такое хтмл, то пойди на форум хтмл для чайников и спроси
Название: Как из сценария запустить другой?
Отправлено: Меняздесьдавнонет от 09 Февраля 2005, 15:36:29
http://phpfaq.ru/na_tanke
читать вдумчиво и внимательно
Название: Как из сценария запустить другой?
Отправлено: Shocker от 09 Февраля 2005, 15:49:51
Ну, что ж, понятно. Просто приходится одновременно доучивать HTML и заодним врубаться в РНР. Это я вам скажу, конечно, не то же самое, что с нуля контроллер домена поднять, но все же... Мне же шеф не дает год-два на изучение веб-программирования, надо все сейчас и сразу. Щас, когда все более-менее получилось, хоть и коряво - покажу ему исходники скриптов... :)
Приношу свои извинения за тупые вопросы.
Название: Как из сценария запустить другой?
Отправлено: Меняздесьдавнонет от 09 Февраля 2005, 16:22:43
С вопросами-то разобрался?
что вместо твоей бороды надо писать
">
и что параметры тегов надо брать в кавычки?
еще надо, кстати, все value обрабатывать через htmlspecialchars
Название: Как из сценария запустить другой?
Отправлено: Shocker от 11 Февраля 2005, 15:39:27
RomikChef
Да, спасибо, все теперь работает.
Просто пока трудно совместить два языка сразу, тем более, что один отрабатывает до того, как начинает работать другой.
Название: Как из сценария запустить другой?
Отправлено: Shocker от 11 Февраля 2005, 15:49:57
RomikChef
Про htmlspecialchars.
Если обрабатывать сценарием полученные от формы строки , то спецсимволы заменяются как-то не так.... По крайней мере применительно к моему сценарию :( Т.е. апостроф становится \\& и при дальнейшей передаче обратно в форму выводит двойной бэкслеш... Если обрабатывать циклом, то \\& так и остается....
Название: Как из сценария запустить другой?
Отправлено: Shocker от 11 Февраля 2005, 15:51:16
... после \\& было написано amp...
Название: Как из сценария запустить другой?
Отправлено: Меняздесьдавнонет от 11 Февраля 2005, 17:28:16
Цитировать
Shocker:
Если обрабатывать сценарием полученные

НЕ ПОЛУЧЕННЫЕ
А ВЫВОДИМЫЕ.
Это раз.
А во-вторых, http://phpfaq.ru/slashes

И настоятельно рекомендую больше не задавать вопросов, освещённых на этом сайте.
Название: Как из сценария запустить другой?
Отправлено: kuskin от 23 Февраля 2005, 05:09:48
Цитировать
Shocker:
А почему строчка \'; ?> работает, а echo \'\'; ?> нет?


а кавычки внутри эхи экранировать не надо ? :)
echo \'\';
Название: Как из сценария запустить другой?
Отправлено: Shocker от 24 Февраля 2005, 07:07:32
Нет
Название: Как из сценария запустить другой?
Отправлено: Shocker от 24 Февраля 2005, 07:08:33
Потому что кавычки внутри апострофов не интерполируются. :lol: