所以我从表单firstname
,lastname
,username
,email
,password
获得了这些输入。
但我只想填写注册表并将其保存到我的数据库中,因为所有这些都包含用户提供的任何信息。我现在有这个,但只有在密码和/或密码确认字段不匹配时才显示错误。
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
}
}
答案 0 :(得分:0)
您还可以在HTML文档的代码中添加“required”属性。 例如:
但是此属性仅在HTML5中受支持,而在之前的版本中不受支持。
如需进一步参考,请检查: https://www.w3schools.com/tags/att_input_required.asp
答案 1 :(得分:0)
您尝试执行的操作称为服务器端验证,最好在服务器端验证用户输入,因为您可以防止恶意用户,他们可以轻松绕过您的客户端脚本语言并向服务器提交危险输入。
我认为您错过了另一种类型的验证,称为客户端验证。在客户端验证中,您可以通过在浏览器级别快速响应来提供更好的用户体验。执行客户端验证时,在用户的浏览器本身中验证的所有用户输入。客户端验证不需要往返服务器,因此网络流量将帮助您的服务器更好地运行。
您可以使用脚本语言在浏览器端执行此操作,例如 JavaScript , JQuery 或 HTML5 属性.Addtionaly,它具有更强大的功能在允许用户提交之前,验证整个表单的功能是当前的。
在PHP中进行服务器端验证的一些教程中: -
答案 2 :(得分:0)
if( !empty ($_POST['firstname']) && !empty ($_POST['lastname']) && !empty ($_POST['username']) && !empty ($_POST['email']) && !empty ($_POST['password'])){
这是你应该做的,因为你只检查两个字段密码和确认密码。您必须检查所有字段,然后完成注册。
答案 3 :(得分:0)
Php条件表达式短路,因此一旦达到错误的评估,它们就会停止。
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
(或工具提示)进行说明。