Hier ist mein Problem:

Ich habe eine .php-Datei in meinem WordPress, die Folgendes tut:

  • mit einem Formular fragt ein NAME und an den Benutzer
  • veröffentlicht die Daten auf derselben Seite (action = "")
  • Wenn NAME nicht leer ist, tun Sie etwas, oder fragen Sie erneut nach dem NAME

Hier ist der Code:

function loginForm(){
echo'
<div id="loginform">
<form action="" method="post">
    <p>Please enter your name to continue:</p>
    <label for="name">Name:</label>
    <input type="text" name="name" id="name" />
    <input type="submit" name="enter" id="enter" value="Enter" />
</form>
</div>
';
}


if(isset($_POST['enter'])){
if(isset($_POST['name']) && $_POST['name'] != ""){
   //do smth
}
else{
        echo '<span class="error">Please type in a name</span>';
    }
}

Aber hier ist das Problem: Wenn ich klicke, ohne einen Namen einzugeben, ist es in Ordnung, es funktioniert wie erwartet: Es gibt dieselbe Seite mit einer Fehlermeldung zurück. Wenn ich jedoch einen Namen eingebe, wird "Seite nicht gefunden" zurückgegeben, und die POST-Anforderung schlägt fehl (404).

Was könnte passieren, damit so etwas passiert?

PS: Entschuldigung für mein wahrscheinlich schlechtes Englisch

2
YohjiNakamoto 24 Dez. 2015 im 19:53

2 Antworten

Beste Antwort
<input type="text" name="name" id="name" />

Dies führt zu spezifischen WordPress-Problemen. Es handelt sich um einen reservierten Feldnamen. Also ändere den Namen.

<input type="text" name="aname" id="name" />

Sollte ohne Probleme funktionieren.

1
David 24 Dez. 2015 im 17:59

In WordPress müssen Sie ein action angeben. Das sollte funktionieren:

action="<?php echo get_permalink(); ?>
0
CodeGodie 24 Dez. 2015 im 17:04