Kann man Daten in PHP auch ohne Formular posten?

... komplette Frage anzeigen

7 Antworten

Geht das irgendwie?

Ja, speicher die Daten in einem Cookie.

Aber es kann sein, dass der Client Cookies deaktiviert hat.

Also speicher die Daten ggf. lieber mittels Session. Auf die Session-Daten hat PHP immer Zugriff. Zwar wird die ID der Session ebenfalls in einem Cookie gespeichert, aber falls das nicht klappt, wird die ID als URL-Parameter übergeben (nur die ID, nicht die Daten selbst - und eben auch nur dann, falls Cookies deaktiviert sind).

PHP hat dafür entsprechende Funktionen, so dass man, wenn alles richtig programmiert wurde, sich um nichts mehr kümmern muss.

POST-Daten selbst kannst Du, so wie ich dein Vorhaben verstehe, mit PHP nicht übergeben. Zwar kannst Du mit PHP andere Resourcen aufrufen, und dabei POST-Daten senden (u.a. mit cURL), aber dann ist PHP/der Server in der Rolle des Browsers, und das ist eben etwas anders, als der Browser des Users. ;-)

Antwort bewerten Vielen Dank für Deine Bewertung

Such mal nach Sessions. Alternativ kannst du auch ein verstecktes Formular einbauen, das dann übermittelt wir,d ohne, dass der Nutzer was davon mitbekommt.

Antwort bewerten Vielen Dank für Deine Bewertung

Also fangen wir erstmal von vorne an.

PHP ansich postet die Variablen nicht, php erzeugt nur die html-seite, die der browser dann darstellt. Der Browser sendet dann dafür das Formular an den webserver mit der php-seite. (Zumindest im Standardfall, es ist auch möglich, das man innerhalb von einem php-skript eine fremde seite lädt und solche scherze).

So, gehen wir mal an die lösung deines Problems:

ich sehe wie vandx da zwei möglichkeiten:

die erste ist, die Session-variable zu benutzen. Dies ist die eleganteste Möglichkeit. Dort kannst du beliebig viele Daten speichern und der User kriegt nichtmal direkt mit, was für variablen du gespeichert hast.

Die zweite Möglichkeit, wäre ein verstecktes Formular einzubauen und dann in dem link ein javascriptaufruf machen, der das versteckte Formular absendet.

Antwort bewerten Vielen Dank für Deine Bewertung

Hallo Webmaster75,

wenn ich deine Frage richtig verstehe versuchst du einen echten Post-Request ohne Formular auszuführen, richtig?

Versuchs mal mit jQuery, damit kannst du in einem AJAX Request POST-Daten mitsenden.

http://api.jquery.com/jQuery.ajax/

Antwort bewerten Vielen Dank für Deine Bewertung

Ich würde das ganz Elegant mit dem altbewährten Image Tag machen:

<img border="0" width="1" height="1" src="http://seite.de/index.php?data1=abcd&data2=blabla" />

So funktioniert übrigens auch das Tracking in manchen Newslettern.

Gruß

Antwort bewerten Vielen Dank für Deine Bewertung

Ohne useraktion gehts leider nicht. Aber du kannst für jede Information ein Textfield type="hidden" machen, den Wert reinschreiben, und der User klickt dasn bsp. auf einen "Weiter" Button und kommt auf die Seite, auf der du die Daten brauchst. Der user selbst bekommt davon nix mit.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von cat64k
19.10.2012, 00:25

klar geht das, die lösungsworte lauten javascript und timer.

0

Was du suchst ist cURL.

$ch = curl_init("http://www.example.com/");
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, "param1=value1&param2=value2);
curl_exec($ch);
curl_close($ch);

Dieses Skript übermittelt die Daten param1=value1 und param2 = value2 als POST an die Adresse example.com (Das heisst, ein PHP-Skript unter dieser Adresse erhält POST['param1']=value1 und POST['param2']=value2).

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von webmaster75
20.10.2012, 23:25

Klingt nach genau dem, wonach ich suche, aber wenn ich das einfuge, dann krieg ich nur einen weißen Bildschirm beim reloaden der Seite. Ich glaube du hast da Gänsefüßchen vergessen nach value2, aber selbst dann krieg ich nur einen weißen Bildschirm. Wie kann ich bestimmen, was value1 und value2 sind? Kann ich da einfach eine Variable einfügen, wie $value2?

0

Was möchtest Du wissen?