2016-04-28 265 views
0

我有这样的文件夹结构:如何将参数作为GET方法传递给脚本?

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

什么MakeAvatar.php?这是一个脚本,获取参数(如id),并根据该参数制作头像。现在我需要从Calculator.php传递一个参数($id)到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成根,并通过像这样的参数,那么如果作品:

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

但是当你看到MakeAatar.php超出根的,我不能使用http。那么如何在没有http的情况下传递一个论点?

+0

如果超出根目录,可以尝试使用带有完整系统目录路径的'file_get_contents',如'/ out/MakeAvatar.php' – 2016-04-28 03:01:33

+0

请停止询问同一问题的变体。它总是相同的答案。 – Barmar

+0

@Barmar请停止将我的问题标记为重复。是的,他们有一个相同的概念,但在这个问题中,我真的需要一个解决方法。 – stack

回答

0

file_get_contents实际上是阅读文件内容,而不是执行它。

你要么从Calculator.php必须include您的文件或将其置于HTTP服务器,做一个本地的HTTP请求(例如,像file_get_contents('http://localhost/path/to/your/MakeAvatar.php')

我建议在MakeAvatar文件包裹你的重要逻辑转换为函数,然后执行该函数并执行该函数。

0

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

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

根/ 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

相关问题