Frage

Ich habe eine Senderseite In HTML. Wenn ich die Formulardaten einreiche, geht es zu einer PHP -Seite, die die Daten in der Datenbank einfügt.

Meine Frage ist, wie ich sicherstellen würde, dass die Daten auf der HTML -Seite nicht null oder leer sind, ohne JavaScript zu verwenden. Gibt es überhaupt in PHP? Danke!

War es hilfreich?

Lösung

Verwenden Sie einfach Kontrollstrukturen wie gewohnt:

$non_empties = array('name', 'email', 'address');

foreach ($non_empties as $field) {
    if (! isset($_POST[$field]) || $_POST[$field] == '') {
        show_error("Please fill your $field, thank you.");
    }
}

$db->insert();

Erweiterteres Beispiel:

// Defined in your library
function validate_as_non_empty(Array $non_empties) {
    foreach ($non_empties as $field) {
        if (! isset($_POST[$field]) || $_POST[$field] == '') {
            throw new Exception("Please fill your $field, thank you.");
        }
    }
}

// Defined in your library
function validate_as_foo(Array $arr) { ... }

// Your request handler
try {
    validate_as_non_empty(array('name', 'address'));
    validate_as_foo(array('email'));
    $db->insert();
} catch (Exception $e) {
    show_error($e->getMessage());
}

Es gibt mindestens Millionen Möglichkeiten, Validierung durchzuführen. Normalerweise haben Sie einen Rahmen, auf den Sie sich verlassen können. Die obigen Beispiele werden lediglich zur Inspiration gegeben.

Andere Tipps

Ganz oben auf Ihrer PHP -Seite (auf der Seite, auf die Sie im Aktionsattribut des Formulars verlinkt sind) ausgeben:

if (isset($_POST['submit_check']) && strlen($_POST['whatever'])) { // submit_check is a hidden form field
    insert_to_db();
    header('Location: success.php'); // redirect to another page to prevent double-submits
    exit;
}

Ihr HTML könnte also aussehen wie:

<form action="" method="post"> 
    <input type="text" name="whatever"/>
    <input type="hidden" name="submit_check" value="1"/> 
</form>

Der leere Aktionswert bedeutet, auf derselben Seite zu posten, aber Sie können auf eine andere Seite posten, wenn Sie möchten.

Abrufen Sie die eingereichten Daten mit dem $ _post Super-Global in Ihrer PHP-Datei wie folgt ab:

$ _POST ['FirstName'] für jedes HTML-Element, das nach dem ED wird. Für eaxmple in Ihrem HTML:

<input type="text" name="firstname" />

Validieren Sie dann die Daten mit PHP mit Regex, Emission usw. und leiten Sie entsprechend entweder auf eine Erfolgsseite oder zurück zum HTML -Formular um.

Sie können dasselbe auch mit AJAX tun (dieselbe PHP -Validierung gilt nur, nur das Datenübertragungsmodell ist geringfügig unterschiedlich)

Wenn Sie fragen: "Kann ich sicherstellen, dass die Daten ohne JavaScript auf der Clientseite gültig sind, dann ist die Antwort nein.

Wenn Sie jedoch nur sicherstellen möchten, dass Sie die Daten validieren, bevor Sie sie in Ihre Datenbank einfügen, dann ist dies sicherlich.

foreach ($_POST as $key=> $value) {

  switch ($key) {
   case 'my_value_name':
      //test $value is not null and other validation;
      //insert into database function
      break;

   ...

  }

}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top