我的 drupal网站中存在第三方系统集成的问题。 对不起我的英语,我来自俄罗斯,但我会尽力解释我的问题。
整合理念:
.php
个文件php-script
行(包括
功能的)问题是:
此脚本调用外部perl (.pl)脚本。 Perl脚本读了 参数(参数传递 url)并生成内容。
我看不到这个perl脚本,但是我 知道 - 他工作,但不在我的工作 页面:)
2个php文件:
spectrum_view.php
<?php
$url = "http://young.spectrum.ru/cgi-bin/programs_view.pl";
$param = $_GET;
if (!empty($param))
{
$url .= "?";
foreach ($param as $keys=>$value)
{
$url .= "&".$keys."=".urlencode($value);
}
} echo $content = file_get_contents($url);
?>
spectrum_form.php
<?php
$url ="http://young.spectrum.ru/cgi-bin/programs_form.pl";
$params = $_GET;
if (!empty($params))
{
$url .= "?";
foreach ($params as $keys=>$value)
{
$url .= "&".$keys."=".urlencode($value);
}
} echo iconv("windows-1251","utf-8",(file_get_contents($url)));
?>
和2个php-lines,我插入我的drupal页面 (我在页面http://new.velo-travel.ru/view中插入的第一个 和右侧块中的第二个
include("http://new.velo-travel.ru/themes/themex/spectrum_view.php?$QUERY_STRING");
include("http://new.velo-travel.ru/themes/themex/spectrum_form.php?act=/view$QUERY_STRING");
所以,我解决了这个问题,但不是在drupal中 - 仅在我的Localohost 上,我只创建了一个2页:
form.php的:
<?php
$url ="http://young.spectrum.ru/cgi-bin/programs_form.pl";
$params = $_GET;
if (!empty($params)){
$url .= "?";
foreach ($params as $keys=>$value) $url .= "&".$keys."=".urlencode($value);
}
$content = file_get_contents($url);
print $content;
**require_once 'view.php';**
?>
view.php:
<?php
$url = "http://young.spectrum.ru/cgi-bin/programs_view.pl";
$param = $_GET;
if (!empty($param))
{
$url .= "?";
foreach ($param as $keys=>$value)
{
$url .= "&".$keys."=".urlencode($value);
}
}
$content = file_get_contents($url);
print $content;
?>
=(
答案 0 :(得分:1)
我不完全确定你要做什么。但似乎您想要从perl脚本生成此内容。如果这是一个带有自己模板的特殊页面,您应该将所有这些代码移到template.php中。该文件用于保存您想要为页面创建内容的逻辑。
就个人而言,我更愿意制作一个模块来处理所有这些,但是在主题中使用你现在所拥有的东西可能更容易。看起来你正在制作一个表单,而某些内容则基于表单。这可以在一个模块中完成。你可以创建一个Drupal表单,然后用drupal处理验证,然后jst将数据提交给perl。但是如果你想从perl获得它,那么主题可能是最好的。那你怎么做的?
在代码中,这看起来像这样:
//template.php file
function mytheme_preprocess_somename(&$vars) {
include('php');
// Do some logic.
$vars['form'] = $result_a;
$vars['my_content'] = $result_b;
}
// your .tpl.php
// Some markup here
<div><?php print $my_content; ?></div>
<div><?php print $form; ?></div>
现在,我不确定你到底发生了什么,但是这样的事情可以帮助你。请注意,您在模板文件中调用变量很重要,因为您可以覆盖一些Drupal变量,如$content
,这可能会导致一些错误。
答案 1 :(得分:0)
您可能遇到了安全问题。请注意allow_url_fopen和allow_url_include - 这些设置必须在php.ini中具有一致的设置。否则你不能,例如出于安全原因,请包含远程文件。