仅当所有这些条件都匹配时才发送表单(真)
Only send form if all these conditions are matched (true)
所以我从我的表单 firstname
、lastname
、username
、email
、password
、
中获得了这些输入
但是当所有这些都包含用户提供的任何信息时,我只想完成注册表并将其保存到我的数据库中。我现在有这个,但它只会在密码 and/or 密码确认字段不匹配时显示错误。
if( !empty ($_POST)){
if($_POST['password'] == $_POST['password_confirmation']) {
$user = new User();
$user->setFirstName($_POST['firstname']);
$user->setLastName($_POST['lastname']);
$user->setUsername($_POST['username']);
$user->setEmail($_POST['email']);
$user->setPassword($_POST['password']);
if($user->register()){
$user->login();
}
else{
$error_confirmation = true;
// This gives error in the front end if both of the PW do no match each other
}
}
我想我应该做这样的事情?
if( !empty ($_POST['firstname']) && !empty ($_POST['lastname']) && !empty ($_POST['username']) && !empty ($_POST['email']) && !empty ($_POST['password'])){
编辑:
好吧,我想我只是自己想出来的。该页面不发送信息,也不显示 $error_firstname=true;
消息?
if( !empty ($_POST['firstname']) && !empty ($_POST['lastname']) && !empty ($_POST['username']) && !empty ($_POST['email']) && !empty ($_POST['password'])){
if( empty ($_POST['firstname'])){
$error_firstname = true;
}
if( empty ($_POST['lastname'])){
$error_lastname = true;
}
if( empty ($_POST['username'])){
$error_username = true;
}
if( empty ($_POST['email'])){
$error_email = true;
}
else if($_POST['password'] == $_POST['password_confirmation']) {
$user = new User();
$user->setFirstName($_POST['firstname']);
$user->setLastName($_POST['lastname']);
$user->setUsername($_POST['username']);
$user->setEmail($_POST['email']);
$user->setPassword($_POST['password']);
if($user->register()){
$user->login();
}
}
else{
$error_confirmation = true;
// show pw confirmation error
}
}
最终编辑:这确实解决了问题。
我用这个修复了它,并在输入 html 标签上使用了 required
。
第一行检查是否给出了所有输入然后继续下一个 if
检查 pw 是否与 pw 确认匹配然后保存到 DB
if( !empty ($_POST['firstname']) && !empty ($_POST['lastname']) && !empty ($_POST['username']) && !empty ($_POST['email']) && !empty ($_POST['password'])){
if($_POST['password'] == $_POST['password_confirmation']) {
$user = new User();
$user->setFirstName($_POST['firstname']);
$user->setLastName($_POST['lastname']);
$user->setUsername($_POST['username']);
$user->setEmail($_POST['email']);
$user->setPassword($_POST['password']);
if($user->register()){
$user->login();
}
}
else{
$error_confirmation = true;
// if no -> $error tonen
}
}
您还可以在 HTML 文档的标签中添加 'required' 属性。
例如:
但是这个属性只有 HTML5 支持,之前的版本不支持。
如需进一步参考,请查看:
https://www.w3schools.com/tags/att_input_required.asp
你要做的是服务器端验证,最好在服务器端验证用户输入,因为你可以防止恶意用户,他们可以轻松绕过您的客户端脚本语言并向服务器提交危险输入。
我认为您错过了另一种类型的验证,称为 客户端 验证。在客户端验证中,您可以通过在以下位置快速响应来提供更好的用户体验浏览器级别。当您执行客户端验证时,所有用户输入都会在用户的浏览器中进行验证。客户端验证不需要往返服务器,因此网络流量将帮助您的服务器更好地执行。
您可以使用脚本语言在浏览器端执行此操作,例如 JavaScript、JQuery 或HTML5 attributes.Addtionaly,它有更强大的功能,比如在允许用户提交之前验证整个表单是正确的。
下面是一些在 PHP 中进行服务器端验证的教程:-
if( !empty ($_POST['firstname']) && !empty ($_POST['lastname']) && !empty ($_POST['username']) && !empty ($_POST['email']) && !empty ($_POST['password'])){
这是你应该做的,因为你只检查两个字段密码和确认密码。您必须检查所有字段,然后完成注册。
Php条件表达式short-circuit,所以一旦到达错误的评价就会停止。
if(!empty($_POST['firstname']) && !empty($_POST['lastname']) && !empty($_POST['username']) && !empty($_POST['email']) && !empty($_POST['password']) && strlen($_POST['password'])>=8 && !empty($_POST['password_confirmation']) && $_POST['password'] == $_POST['password_confirmation']) {
$user = new User();
$user->setFirstName($_POST['firstname']);
$user->setLastName($_POST['lastname']);
$user->setUsername($_POST['username']);
$user->setEmail($_POST['email']);
$user->setPassword($_POST['password']);
if($user->register()){
$user->login();
}
} else {
$error_confirmation = true;
// if no -> $error tonen
}
至于向用户提示密码最小值,请使用 pattern
属性进行客户端验证,并使用 placeholder
(或工具提示)进行解释。
所以我从我的表单 firstname
、lastname
、username
、email
、password
、
但是当所有这些都包含用户提供的任何信息时,我只想完成注册表并将其保存到我的数据库中。我现在有这个,但它只会在密码 and/or 密码确认字段不匹配时显示错误。
if( !empty ($_POST)){
if($_POST['password'] == $_POST['password_confirmation']) {
$user = new User();
$user->setFirstName($_POST['firstname']);
$user->setLastName($_POST['lastname']);
$user->setUsername($_POST['username']);
$user->setEmail($_POST['email']);
$user->setPassword($_POST['password']);
if($user->register()){
$user->login();
}
else{
$error_confirmation = true;
// This gives error in the front end if both of the PW do no match each other
}
}
我想我应该做这样的事情?
if( !empty ($_POST['firstname']) && !empty ($_POST['lastname']) && !empty ($_POST['username']) && !empty ($_POST['email']) && !empty ($_POST['password'])){
编辑:
好吧,我想我只是自己想出来的。该页面不发送信息,也不显示 $error_firstname=true;
消息?
if( !empty ($_POST['firstname']) && !empty ($_POST['lastname']) && !empty ($_POST['username']) && !empty ($_POST['email']) && !empty ($_POST['password'])){
if( empty ($_POST['firstname'])){
$error_firstname = true;
}
if( empty ($_POST['lastname'])){
$error_lastname = true;
}
if( empty ($_POST['username'])){
$error_username = true;
}
if( empty ($_POST['email'])){
$error_email = true;
}
else if($_POST['password'] == $_POST['password_confirmation']) {
$user = new User();
$user->setFirstName($_POST['firstname']);
$user->setLastName($_POST['lastname']);
$user->setUsername($_POST['username']);
$user->setEmail($_POST['email']);
$user->setPassword($_POST['password']);
if($user->register()){
$user->login();
}
}
else{
$error_confirmation = true;
// show pw confirmation error
}
}
最终编辑:这确实解决了问题。
我用这个修复了它,并在输入 html 标签上使用了 required
。
第一行检查是否给出了所有输入然后继续下一个 if
检查 pw 是否与 pw 确认匹配然后保存到 DB
if( !empty ($_POST['firstname']) && !empty ($_POST['lastname']) && !empty ($_POST['username']) && !empty ($_POST['email']) && !empty ($_POST['password'])){
if($_POST['password'] == $_POST['password_confirmation']) {
$user = new User();
$user->setFirstName($_POST['firstname']);
$user->setLastName($_POST['lastname']);
$user->setUsername($_POST['username']);
$user->setEmail($_POST['email']);
$user->setPassword($_POST['password']);
if($user->register()){
$user->login();
}
}
else{
$error_confirmation = true;
// if no -> $error tonen
}
}
您还可以在 HTML 文档的标签中添加 'required' 属性。 例如:
但是这个属性只有 HTML5 支持,之前的版本不支持。
如需进一步参考,请查看: https://www.w3schools.com/tags/att_input_required.asp
你要做的是服务器端验证,最好在服务器端验证用户输入,因为你可以防止恶意用户,他们可以轻松绕过您的客户端脚本语言并向服务器提交危险输入。
我认为您错过了另一种类型的验证,称为 客户端 验证。在客户端验证中,您可以通过在以下位置快速响应来提供更好的用户体验浏览器级别。当您执行客户端验证时,所有用户输入都会在用户的浏览器中进行验证。客户端验证不需要往返服务器,因此网络流量将帮助您的服务器更好地执行。
您可以使用脚本语言在浏览器端执行此操作,例如 JavaScript、JQuery 或HTML5 attributes.Addtionaly,它有更强大的功能,比如在允许用户提交之前验证整个表单是正确的。
下面是一些在 PHP 中进行服务器端验证的教程:-
if( !empty ($_POST['firstname']) && !empty ($_POST['lastname']) && !empty ($_POST['username']) && !empty ($_POST['email']) && !empty ($_POST['password'])){
这是你应该做的,因为你只检查两个字段密码和确认密码。您必须检查所有字段,然后完成注册。
Php条件表达式short-circuit,所以一旦到达错误的评价就会停止。
if(!empty($_POST['firstname']) && !empty($_POST['lastname']) && !empty($_POST['username']) && !empty($_POST['email']) && !empty($_POST['password']) && strlen($_POST['password'])>=8 && !empty($_POST['password_confirmation']) && $_POST['password'] == $_POST['password_confirmation']) {
$user = new User();
$user->setFirstName($_POST['firstname']);
$user->setLastName($_POST['lastname']);
$user->setUsername($_POST['username']);
$user->setEmail($_POST['email']);
$user->setPassword($_POST['password']);
if($user->register()){
$user->login();
}
} else {
$error_confirmation = true;
// if no -> $error tonen
}
至于向用户提示密码最小值,请使用 pattern
属性进行客户端验证,并使用 placeholder
(或工具提示)进行解释。