我正在创建一个结帐页面,要求客户填写他的个人信息以及他的信用卡详细信息(此部分使用条纹)。
我想知道,检查字段是否填满的最佳方法是什么?我应该在processingPayment.php中执行$ _POSTs字段和处理付款,如果字段没有填写,我会重定向回结账?
或者在提交表单之前使用js在现场检查是否更好?
如果在处理页面中,我会尝试这样的事情:
if (empty($firsName) || empty($lastName) || empty($address) || empty ($city) || empty ($state) || empty($zip))
{
header('Location: checkout.php');
}
但是我需要重新发送输入的值,以便结帐页面接收它们,并且用户不必再次重新填充每个字段...
答案 0 :(得分: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";
}
}
否则,客户端验证也可以,但始终可以禁用。为了完全安全,请同时使用客户端和服务器端。
答案 1 :(得分:0)
您可以使用会话存储输入的数据,但您需要分别检查每个值:
<强> PHP 强>
<?php
session_start();
foreach ($_POST as $key => $value) {
if (strlen(trim($value)) <= 0) { //You could replace '0'
$_SESSION[$key] = $value;
}
}
?>
<强> FORM 强>
<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语句
更具可读性答案 2 :(得分:0)
$var = isset($_POST['field']) ? $_POST['field'] : '';
$var2 = isset($_POST['field2']) ? $_POST['field2'] : '';
// and so on
if( empty($var) || empty($var2) )
{
//it's empty
}