Post-Variable ohne Formular übersenden, mit PEAR

Davicito

Erfahrenes Mitglied
Hi,

ich hab mal ne Frage zu dem HTTP_Request von PEAR... meine Idee ist, das ich an irgend einer Stelle in meinem MVC-Pattern eine Post-Variable an den Server übermittle (ohne Formular und URL-Anhang mittels GET), die dann mein FrontKontroller dazu veranlasst einen anderen UnterKontroller aufruft, also quasi auf einen Post lauscht.

Also wie:
PHP:
 if($_POST['trigger']) ...

Hab mir mal das Beispiel hier mit PEAR angesehen und versuche das Beispiel mal auszutesten in einer Test2.php um zu sehen was es macht. Aber zu meinem erstaunen macht das nichts. Ist das Beispiel für mein Vorhaben geeignet oder habe ich nur einen Fehler, bei meiner Überlegung?

Test2.php
PHP:
<?php
require_once('HTTP/Request.php');

$req = new HTTP_Request('localhost/test/test2.php');
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$req->addPostData('trigger', true);
$erg = $req->sendRequest();
echo $erg;
?>

Ich hoffe mir kann jemand Rat geben.

LG.
 
Zuletzt bearbeitet:
Hi,

Wieso nutzt du nicht HTTP_REQUEST2? Auf der Projektseite von HTTP_REQUEST(1) steht ganz deutlich, dass die Version 2 die erste ablöst.

Zu deinem Beispiel: ich würde mal raten, dass 'http://' am Anfang der URI fehlt. Ansonsten mal die Fehler abfangen (siehe HTTP_REQUEST-Dokumentation).
 
ich habe auch mit dem "http://" das gleiche Verhalten., das nichts passiert.

Die Doku bringt mir nichts, weil diese nicht mehr hergibt an Erklärungen. Deshalb mein TestCode die ich mir aus der Doku zusammen gebaut habe.

ich meine was für eine Seite muss ich denn im Konstruktor angeben, die an dem die POST-Variable gesendet werden soll, oder die wo die Post abgesendet wird?

mir sendet der Server durch
PHP:
...
echo $erg;

1

ich will aber den Wert der POST-Variablen "trigger" sehen. Also "true"
 
Zuletzt bearbeitet:
ich will aber den Wert der POST-Variablen "trigger" sehen. Also "true"

Wo willst du das sehen (in welchem Skript)?

Ich vermute gerade, dass du während der Laufzeit des Skripts $_POST ändern willst, ist das richtig? Oder willst du eine eigenständige Anfrage an ein anderes Skript (welches in deinem Fall auch auf deinem Server ist) senden?
 
Die POST-Variable "trigger" soll an meine Bootstarp-Datei Test2.php geleitet werden, weil dort mein FrotController eingebunden wird, der dann durch den "trigger == true" einen passenden UnterController aufrufen soll. Also praktiosch eine Weiterleitung macht - so wie man das von
PHP:
...
header(Location: http://...);
...
her kennt. Jedoch wird diese Weiterleitung mittels URL -> GET realisiert und ich möchte das mit POST machen, also nicht mit GET!

Dazu habe ich mir gedacht ich könnte das mit diesem Beispiel mit PEAR (s ganz oben) durchführen. Also sprich eine Variable trigger mittels
PHP:
...
$req->addPstData('trigger',true);
...
realisieren.

Geht das? Wenn ja, muss ich doch im Konstruktor den Link angeben, wo die Post-Variable "trigger" ausgewertet wird, oder? Da stehe ich im Moment auf dem Schlauch.

hier meine Bootstrap-Datei Test2.php
PHP:
...
// Instancen für den Request und Response werden erzeugt. Sie dienen der Server-/Client-Kommunikation.  
	$req = new HttpRequest();
	$res = new HttpResponse();
		
	// Eine Instance des FileSystemControllers wird erzeugt und ein StandardUnterkontroller wird übergeben. 
	//$resolver = new FileSystemCommandResolver('Command', 'HalloCommand');
	$resolver = new FileSystemControllerResolver('Controller', 'AuthController');
			
	// Nun wird der Froncontroller des MVC-Modells geladen, welches - mitteld Resolver-Objektes - eine Unterkontrollerklasse 
	// übergeben bekommt und führt dessen "run"-Methode aus.
	$controller = new FrontController($resolver);
	$controller->run($req, $res);

LG, Davicito.
 
Zuletzt bearbeitet:
Hi, wieso benutzt du nicht cURL? Scheint eine nahezu identische Funktionalität zu bieten, zusätzlich wird keine weitere Bibliothek benötigt: http://de3.php.net/manual/en/book.curl.php

Falls du dir mal ne moderne Implementierung reinziehen möchtest, kann ich dir Symfony (Http\Request) ans herz legen: http://symfony.com/doc/current/book/http_fundamentals.html

Zu dem Problem: Worüber du deinen String sendest (GET / POST) ist erstmal egal, allerdings müssen sich "beide Seiten", als Anfrager (meist Client genannt) und Abarbeitender (Server) auf eine der beiden Sachen einigen. Also wenn dein Controller nach $_GET['x'] sucht kannst du nicht eifnach $_POST['x'] hinschicken... Klingt irgendwie komisch, aber so hab ich dich verstanden :p
 
Vielen Dank für deine Antwort alxy,

cURL und Symfony muss ich mir mal anschauen.

Ob ein GET oder POST gesendet wird, ist bei mir egal. Denn in meiner Klasse HttpRequest wird beides übergeben.

LG
 

Neue Beiträge

Zurück