如何将参数作为GET方法传递给脚本?

时间:2016-04-28 02:59:25

标签: php

我有这个文件夹结构:

\out
    \MakeAvatar.php
\root
    \include
        \Calculator.php
    \img
        \avatar

什么是 MakeAvatar.php ?这是一个获取参数(如id)的脚本,并根据该参数创建一个头像。现在我需要将一个参数($id)从Calculator.php传递给MakeAvatar.php。我怎么能这样做?

这是我的代码:

$_GET['id'] = $id; // passing
file_put_contents("../img/avatar/".$id.".jpg", file_get_contents("../out/MakeAvatar.php"));

但它不起作用。我的意思是结果是未知图像(不清楚)

enter image description here

当我通过编辑器打开该图像时,它包含MakeAvatar.php(其所有代码)的内容。所以似乎问题是传递

注1:如果我将MakeAvatar.php放入root并传递这样的参数,那么如果有效:

... file_get_contents("http://example.com/MakeAvatar.php?id=$id")

但正如您所见,MakeAatar.php已超出root权限,我无法使用http。那么如何在没有http的情况下传递参数?

2 个答案:

答案 0 :(得分:0)

您的file_get_contents实际上正在阅读文件内容,而不是正在执行

您必须include来自Calculator.php的{​​{1}}文件或将其公开给HTTP服务器并执行本地http请求(例如file_get_contents('http://localhost/path/to/your/MakeAvatar.php')}

我建议将MakeAvatar文件中的重要逻辑包装到一个函数中,然后include并执行该函数。

答案 1 :(得分:0)

如果您的公共Web服务器目录是root,那么您应该创建一个入口点,例如root/avatar.php。我们称之为 controller 。在控制器中,你应该使用一个类(让我们称之为模型),它有一个生成头像的方法。

因此,您的结构可能如下所示:

<强>根/ avatar.php

<?php
require_once __DIR__ . '/../out/MakeAvatar.php';
MakeAvatar::printPng($_GET);

<强>出/ MakeAvatar.php

<?php
class MakeAvatar {
  public static function printPng(array $input) {
    $id = $input['id'];
    echo '... PNG data for $id here...';
  }
}

另外,我将模型保存在classeslib等目录中;控制器 - 在public/something中,以及不同目录中的视图,例如templates

相关问题