en php

2010-04-05 6 views
0

i ont une page en html soumettre . Quand je soumets les données du formulaire, il va à une page php, qui insère les données dans la base de données.en php

Ma question est comment est-ce que je m'assurerais que les données sur la page html ne sont pas nulles ou vides sans javascript? est-il de toute façon cela pourrait être fait en php? Merci!

Répondre

1

Il suffit d'utiliser les structures de contrôle comme d'habitude:

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

Plus Exemple avancé:

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

Il y a au moins million de façons de faire la validation. Habituellement, vous avez une sorte de cadre sur lequel vous pouvez compter. Les exemples ci-dessus ne sont donnés qu'à titre d'inspiration.

+0

merci. Cela a fonctionné! – input

1

En haut de votre page php, (la page que vous avez lié à l'attribut action du formulaire) mis:

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

donc votre code html pourrait ressembler:

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

la valeur d'action vide signifie publier sur la même page, mais vous pouvez poster sur une autre page si vous le souhaitez.

+0

Vous êtes toujours libre de faire une validation de vos données avec javascript et php. Et vous devriez certainement valider avec php. Puisque vous allez insérer l'entrée de l'utilisateur dans une base de données, utilisez les instructions préparées (alias les requêtes paramétrées, pour éviter les attaques par injection de sql) – rkulla

-1

Si ce que vous demandez est «puis-je m'assurer que les données sont valides côté client sans javascript» alors la réponse est non.

Mais si tout ce que vous voulez faire est assurez-vous de valider les données avant de l'insérer dans votre base de données, certainement.

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

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

    ... 

    } 

} 
0

récupérer les données soumises à l'aide _POST $ super-global dans votre fichier PHP comme ceci:

$ _POST [ 'prenom'] pour chaque élément HTML qui est en cours POST-ed. Pour eaxmple, dans votre code HTML:

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

validons les données en utilisant PHP, avec regex, isset, etc et redirigent en conséquence, soit à une page de succès, ou revenir à la forme HTML.

Vous pouvez également faire la même chose en utilisant Ajax (la même validation PHP appliquera, tout le modèle de transfert de données est légèrement différente)