0

我正在创建一个结帐页面,要求客户填写他的个人信息以及他的信用卡详细信息(这部分使用条纹)。

我想知道,检查字段是否已填满的最佳方法是什么?我应该在 processingPayment.php 中执行 $_POST 字段并处理付款,如果字段未填写,我会重定向回结帐吗?

还是在提交表单之前使用js现场检查比较好?

如果在处理页面中,我会尝试这样的事情:

if (empty($firsName) || empty($lastName) || empty($address) || empty ($city) || empty ($state) || empty($zip))
{
header('Location: checkout.php');
}

但是我需要重新发送输入的值,以便结帐页面接收它们并且用户不必再次重新填写每个字段......

4

3 回答 3

1

像这样的东西?

foreach($_POST as $key=>$val) {
    if( empty($val) ) {
        echo "$key is empty";
    }
}

PHP最好的方法是有一个可能的参数数组:

$array = array('firstName', 'lastName');

foreach($array as $val) {
    if( empty($_POST[$val]) ) {
        echo "$val is empty";
    }
}

否则,客户端验证也可以工作,但始终可以禁用。为了完全安全,请同时使用客户端和服务器端。

于 2013-04-11T21:45:05.577 回答
0

您可以使用会话来存储输入的数据,但您需要分别检查每个值:

PHP

<?php
session_start();

foreach ($_POST as $key => $value) {
    if (strlen(trim($value)) <= 0) {    //You could replace '0'
        $_SESSION[$key] = $value;
    }
}

?>

形式

<form>
First name: <input type="text" value="<?php $_SESSION['firstName'] ? $_SESSION['firstName'] : ''; ?>" placeholder="First Name" />
....
</form>

$_SESSION['firstName'] ? $_SESSION['firstName'] : '';是一样的

if ($_SESSION['firstName']) return $_SESSION['firstName']
else return '';

它在 HTML(View) 中比完整的 if 语句更具可读性

于 2013-04-11T21:58:52.003 回答
0
$var  = isset($_POST['field'])  ? $_POST['field']  : '';
$var2 = isset($_POST['field2']) ? $_POST['field2'] : '';
// and so on

if( empty($var) || empty($var2) )
{
   //it's empty
}
于 2013-04-11T22:47:44.700 回答