2016-04-28 16 views
0

Ich habe diese Ordner-Struktur:Wie kann ich ein Argument als GET-Methode an ein Skript übergeben?

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

Was ist MakeAvatar.php? Das ist ein Skript, das einen Parameter (wie ID) erhält und einen Avatar basierend auf diesem Parameter erstellt. Jetzt muss ich ein Argument übergeben ($id) von Calculator.php zu MakeAvatar.php. Wie kann ich das machen?

Hier ist mein Code:

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

Aber es funktioniert nicht. Ich meine das Ergebnis ist ein unbekanntes Bild (unklar).

enter image description here

Wenn ich von einem Editor das Bild öffnen, wird es enthält den Inhalt MakeAvatar.php (alle seine Codes). So scheint es das Problem ist vorbei.


Hinweis 1: Wenn ich setzen MakeAvatar.php in root und pass dieses Argument wie dies dann, wenn Werke:

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

Aber wie Sie sehen MakeAatar.php aus Wurzel ist und ich kann nicht http verwenden. Also wie kann ich ein Argument ohne http übergeben?

+0

Wenn es out of root ist, können Sie versuchen, 'file_get_contents' mit seinem vollständigen Systemverzeichnispfad zu verwenden, wie zum Beispiel'/out/MakeAvatar.php' –

+0

Bitte hören Sie auf, Fragen der gleichen Frage zu stellen. Es ist immer die gleiche Antwort. – Barmar

+0

@Barmar Bitte hör auf, meine Fragen als Duplikat zu markieren. Ja, sie haben ein identisches Konzept, aber in dieser Frage brauche ich wirklich einen Workaround. – stack

Antwort

0

Ihre file_get_contents ist eigentlich den Inhalt der Datei zu lesen, anstatt Ausführung es.

Sie entweder müssen include Ihre Datei von Calculator.php oder auf den HTTP-Server aussetzen und eine lokale HTTP-Anforderung tun (z. B. wie file_get_contents('http://localhost/path/to/your/MakeAvatar.php'))

Ich würde empfehlen, Ihre wichtige Logik in der MakeAvatar Datei Einwickeln in eine Funktion, dann include und die Funktion ausführen.

0

Wenn Ihr öffentliches Web-Server-Verzeichnis root ist, sollten Sie einen Einstiegspunkt, z. root/avatar.php. Nennen wir es Controller. In der Steuerung sollten Sie eine Klasse verwenden (nennen wir es Modell), die eine Methode zur Generierung von Avataren hat.

So könnte Ihre Struktur sieht wie folgt aus:

root/avatar.php

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

out/MakeAvatar.php

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

Auch würde ich Modelle halten sich in einem Verzeichnis wie classes oder lib; Controller - in public/something und Ansichten in anderen Verzeichnissen wie templates.

Verwandte Themen