包含在我的Drupal上的问题

时间:2009-10-20 09:35:19

标签: php drupal

我的 drupal网站中存在第三方系统集成的问题。 对不起我的英语,我来自俄罗斯,但我会尽力解释我的问题。

整合理念

  • 2 .php个文件
  • 2 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;
?>

=(

2 个答案:

答案 0 :(得分:1)

我不完全确定你要做什么。但似乎您想要从perl脚本生成此内容。如果这是一个带有自己模板的特殊页面,您应该将所有这些代码移到template.php中。该文件用于保存您想要为页面创建内容的逻辑。

就个人而言,我更愿意制作一个模块来处理所有这些,但是在主题中使用你现在所拥有的东西可能更容易。看起来你正在制作一个表单,而某些内容则基于表单。这可以在一个模块中完成。你可以创建一个Drupal表单,然后用drupal处理验证,然后jst将数据提交给perl。但是如果你想从perl获得它,那么主题可能是最好的。那你怎么做的?

  1. 为您使用的tpl.php文件实现preprocess函数。
  2. 在这里创建所有逻辑,你可以复制你使用的php文件或只包含它们。导入,将结果分配给可在模板文件中访问的变量。
  3. 在模板中打印变量。
  4. 在代码中,这看起来像这样:

    //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_fopenallow_url_include - 这些设置必须在php.ini中具有一致的设置。否则你不能,例如出于安全原因,请包含远程文件。