Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Как из перл скрипта вызвать php страничку.


Автор: tedy1 30.6.2010, 08:03
Есть WEB сервер (apache,php), при обращении через web браузер к перл скрипту, нужно чтобы из перл скрипта запускалась php страничка с авторизацией (php страничка с авторизацией у меня есть, а вот как заставить её работать из под перл скрипта.....), после того как авторизация пройдёт, выполнялся сам перл скрипт. Возможно такое реализовать? Спасибо.

Автор: OutlawZ 1.7.2010, 06:29
Зачем такое извращение? если вам надо что бы perl скрипт выполнялся после ввода логина и пароля, то реализуйте это в самом Perl скрипте. 

Скрещивать Perl и PHP это не есть true, лучше выбрать что то одно для определенной задачи! 

Автор: tedy1 1.7.2010, 09:21
OutlawZ, все же есть такая возможность или нет?

Ещё вопросики:


Запускаем перл скрипт из браузера:
1). Как убрать сообщения, которые он сипит в браузер?
2). После его выполнения открывалась определенная страничка в браузере?


Ссорри за ламерские вопросики, только учусь, спасибо.

Автор: OutlawZ 1.7.2010, 12:45
В общем то можно работать perl и с php вместе только это очень не удобно, это потребует отправки HTTP запроса скрипту PHP, что бы он обработал получаемые данные. LWP Библиотека для этого хорошо подходит. 

Если сообщения выдаваемые интерпретатором то скрипты запускать без ключа -w. Советую почитать документацию по CGI Модулю если вы его используете документация есть на форуме.

Код

#!/usr/bin/perl -w #-w Убрать


Что бы после выполнения открывалась определенная страничка то это опять же лучше вставить HTML мета-тег

Т.е после всех операций выполненных  скриптом в конце вставить:
Код


print "<meta http-equiv='refresh' content='5' url='http://server.ru/all.php' />";  #в url вставить адрес желаемой стриницы



Можно так же создать массив с именами страниц и по результату выводить желаемое.

Вроде все, если я правильно вас понял )

Автор: tedy1 1.7.2010, 14:58
OutlawZ, 

У меня это и так отключено (#!/usr/bin/perl -w #-w Убрать), я разобрался что из-за чего сыпалось. 



Не работает, у меня просто в браузере показан просто текст print "<meta http-equiv='refresh' content='5' url='http://server.ru/all.php' />"; и не переходит на другу страничку. Как сделать чтобы, перл скрипт его выполнял?

Я так понимаю какую то библиотеку надо подключить типа use и т.д. или я ошибаюсь?

Автор: OutlawZ 1.7.2010, 15:23
Модуль CGI подключен???

Код

#!/usr/bin/perl
use CGI;
print "Content-Type: text/html\n\n";
print "<B>Переход на другую страницу</B>";
print "<meta http-equiv='refresh' content='5' url='http://server.ru/all.php' />";


Проверьте а так код работает?? права на файл стоят как исполняемый на сервере?

Добавлено @ 15:36
можно вставить код JavaScript:
Код

use CGI;
print "Content-Type: text/html\n\n";
print "<script>document.location.replace('http://site.com');</script>";


Попробуй, может тебя это устроит!

Автор: infarch 2.7.2010, 10:00
Вам сначала надо html выучить, а потом за перл браться. Без правильной резметки страницы вы от мета тегов ничего не дождетесь.

Автор: OutlawZ 2.7.2010, 11:09
То что мета теги в head пихать это все знают. Тут учить html не кому не надо. 
Просто на php такой трюк прокатывал!

А так лучше все же использовать javascript для перехода на другую страницу.!

Автор: infarch 2.7.2010, 12:01
Вы удивитесь, сколько людей не знают самых элементарных вещей! Причем эти люди в своей области профессионалы. А насчет того что прокатывало в пхп - извините, не верю. Прокатить такое может только если вы используете некий шаблонизатор, которые перед выводом мета тега подготовил для него место в хедере. Тут не может быть зависимости от серверного языка.

Автор: OutlawZ 2.7.2010, 12:27
Цитата

Вы удивитесь, сколько людей не знают самых элементарных вещей!
Хе-хе таких много даже среди тех с кем я работаю так что я не удивляюсь .  Код который ниже работает на 100% без шаблонизаторов.
Код

<td valign=top align=justify width=45%>
<?php
$file = $_GET['file'];                        
if(!empty($file))
{
print"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=load.php?file=$file'>\n"; //редирект на скрипт который осуществляет скачку и 
                                                                                                                                          //и увеличивает счетчик
}
$number = 1;
$str = "SELECT * FROM files";
$res = mysql_query($str);
while($row = mysql_fetch_array($res))
{
 echo "<a href=files.php?file=".$row['name'].">Выпуск№".$number++."</a>" ." Размер: ". $row['size'] ." Тип файла: ". $row['type'] . " Скачено:".$row['cont']."<br>";
}
?>
</td>

Хотя я не сторонки таких вещей, я предпочитаю делать все по стандарту в <head>Мета-теги</head>. Но опять же лучше использовать javascript для перехода на другую страницу. 

Автор: infarch 2.7.2010, 13:05
Надо же! Но я бы так не делал, люблю стандарты smile А редирект да, скриптом оно лучше. Или заголовком Location...

Автор: tedy1 5.7.2010, 08:31
Спасибо за помощь. Ещё вопросики:

1).  Есть возможность с PHP передать данные в HTML?
К примеру мне надо чтобы данные попали в секцию:
<INPUT type="HIDDEN" name="test" и чтобы "test" принимал значение, которое пришло с PHP скрипта.


Я знаю что с HTML в PHP можно по средствам <FORM action=.... а как наоборот? Есть какая то возможность или нет? 

2). Как можно с PHP запустить PERL скрипт? с передачей параметров GET или POST в PERL скрипт.

Автор: infarch 5.7.2010, 13:54
1. <INPUT type="HIDDEN" name="<?php echo $test ?>"

2. Опять таки редиректом

Автор: tedy1 6.7.2010, 09:33
Всем спасибо, вроде, разобрался и сделал почти всё что нужно.

Автор: tedy1 8.7.2010, 12:39
Спасибо.

Автор: MaXL 19.7.2010, 14:44
Сорри за оффтоп.
tedy1, скажите пожалуйста, ваше задание носит чисто учебный характер или таки боевой ?
Если боевой, то зачем smile ? реально интересно. можно PM.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)