it-swarm.com.de

Phantom 302-Statuscode beim Senden eines POST Anfragen auf Seiten

Ich hoffe wirklich, dass ich hier ein einfaches Problem vor mir habe, da es mich irgendwie an die Wand treibt.

Kurzgeschichte: Das Senden eines einfachen Formulars am vorderen Ende der Site führt zu einer 302 Found-Umleitung, bei der die $_POST-Daten vollständig entfernt werden.

Szenario:

  • Erstelle eine Seite im Admin mit dem Namen Bearbeiten
  • Erstellen Sie eine benutzerdefinierte Vorlagendatei (dh my-edit-template.php) und wenden Sie sie auf Bearbeiten an

my-edit-template.php:

<?php
/**
 * Template Name: My Edit Template
 */

if ($_POST['action']) {
var_dump($_POST);
} 

get_header(); ?>

<form action="" method="post">
    <input name="my-ornery-field" value="">
    <input type="submit" value="submit">
    <input type="hidden" id="action" name="action" value="update-profile">
</form>

<?php get_footer(); ?>

Wenn ich jetzt das Formular abschicke, erhalte ich zwei Anfragen an dieselbe Seite, erstens die POST mit intakten Formulardaten und zweitens eine GET (Statuscode 200), offensichtlich ohne den $_POST global oder für irgendetwas Nützliches mir.

Ich bin sicher, dass dies ein totales Versehen ist, aber ich bin ratlos. völlig verwirrt.

Ich habe es versucht:

  • Alle Plugins deaktiviert
  • Beim Leeren werden die Standardeinstellungen wiederhergestellt
  • POSTing via Javascript/XHR

Hilfe?

Es tut mir leid, wenn die Details spärlich sind, ich bin gerade in der Klasse, aber ich werde später auf alles andere zurückkommen, was relevant ist.

2
tksb

Diese Frage ist ziemlich alt, aber die einzige, die für diese Art von Problem aufgetaucht ist. Ich hatte es diese Nacht, verbrachte fast 4 Stunden damit, mich gegen die Wand zu schlagen - Plugins zu deaktivieren, hier und da Code zu kommentieren (und dies ist ein großes Multisite-Projekt mit vielen benutzerdefinierten Funktionen und Frontend-Formularen, benutzerdefinierten URLs und Vorlagen usw.). Das war ein Schmerz ...

Ich werde es einfach hier lassen. Vielleicht spart es jemandem ein paar Stunden.

" Wenn Sie benutzerdefinierte Frontend-Formulare erstellen, müssen Sie Ihren Eingabe-/Auswahl-/usw.-Namen immer Ihr benutzerdefiniertes Präfix voranstellen."

Wenn Sie dies vergessen und damit beginnen, Felder gemäß Ihrer globalen Namenskonvention zu benennen, können Sie eine Auswahl erstellen, die Ihre benutzerdefinierte Taxonomie anzeigt und sie so benennt, wie eine benutzerdefinierte Taxonomie selbst benannt wird. Wenn Sie auf "Senden" klicken, empfängt WordPress Ihre $ _POST-Daten, analysiert sie, "versteht" diesen Namen als die registrierte $ query_var und transformiert die Anfrage, indem Sie diese $ query_var hinzufügt. Natürlich führt dies zu einer Umleitung, die Ihre $ _POST-Daten löscht und verhindert, dass das Formular das tut, was es tun soll.

1
Ihor Vorotnov

An diesem Code ist nichts auszusetzen. Ich habe es gerade auf einer lokalen Installation gemacht und es hat gut funktioniert, genau wie Sie es erwarten würden.

Suchen Sie nach Plugins, die Konflikte verursachen.

2
Otto