0

在 html 中有一个提交页面。当我提交表单数据时,它会进入一个 php 页面,该页面将数据插入数据库。

我的问题是,如果不使用 javascript,我将如何确保 html 页面上的数据不为空或不为空?无论如何这可以在php中完成吗?谢谢!

4

4 回答 4

1

在您的 php 页面的最顶部,(您在表单的 action 属性中链接到的页面)放置:

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

所以你的 html 可能看起来像:

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

空白操作值表示发布到同一页面,但您可以根据需要发布到另一个页面。

于 2010-04-05T20:47:44.130 回答
1

像往常一样简单地使用控制结构:

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

更高级的例子:

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

至少有百万种方法可以进行验证。通常你有某种框架可以依赖。上面的例子只是为了启发。

于 2010-04-05T20:54:38.923 回答
0

使用 PHP 文件中的 $_POST 超级全局变量检索提交的数据,如下所示:

$_POST['firstname'] 用于每个被 POST 编辑的 HTML 元素。例如,在您的 HTML 中:

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

然后使用 PHP、regex、isset 等验证数据,并相应地重定向到成功页面或返回 HTML 表单。

您也可以使用 Ajax 执行相同操作(将应用相同的 PHP 验证,只是数据传输模型略有不同)

于 2010-04-05T20:55:19.063 回答
-1

如果您要问的是“我能否确保数据在没有 javascript 的情况下在客户端有效”,那么答案是否定的。

但是,如果您要做的只是确保在将数据插入数据库之前对其进行验证,那么当然可以。

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

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

   ...

  }

}
于 2010-04-05T20:54:04.343 回答