Pregunta

Tengo una página de envío en html. Cuando envío los datos del formulario, va a una página PHP, que inserta los datos en la base de datos.

Mi pregunta es ¿cómo me aseguraría de que los datos en la página HTML no sean nulos o vacíos sin usar JavaScript? ¿De todos modos, esto podría hacerse en PHP? ¡Gracias!

¿Fue útil?

Solución

Simplemente use las estructuras de control como de costumbre:

$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();

Ejemplo más avanzado:

// 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());
}

Hay al menos millones de formas de hacer validación. Por lo general, tiene algún tipo de marco para confiar. Los ejemplos anteriores se dan simplemente por inspiración.

Otros consejos

En la parte superior de su página PHP, (la página a la que se vinculó en el atributo de acción del formulario) Pon:

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;
}

Entonces tu HTML podría parecer:

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

El valor de acción en blanco significa publicar en la misma página, pero puede publicar en otra página si lo desea.

Recupere los datos enviados utilizando el Super-Global $ _post en su archivo PHP como este:

$ _Post ['FirstName'] para cada elemento HTML que se está postando. Para EaxMple, en tu HTML:

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

Luego valida los datos utilizando PHP, con Regex, ISSET, etc. y redirige en consecuencia, ya sea a una página de éxito o de regreso al formulario HTML.

También puede hacer lo mismo usando AJAX (se aplicará la misma validación de PHP, solo el modelo de transferencia de datos es ligeramente diferente)

Si lo que está preguntando es: "¿Puedo asegurarme de que los datos sean válidos en el lado del cliente sin JavaScript", entonces la respuesta es no.

Pero si todo lo que desea hacer es asegurarse de validar los datos antes de insertarlos en su base de datos, entonces ciertamente.

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

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

   ...

  }

}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top