Getting Started
I've used CDN for bootstrap, vue.js, and axios.js in this tutorial so, you need internet connection for them to work.
index.php
First, we're gonna create our index which contains our Form that we are going to validate.
app.js
This contains our Vue.js code.
var app = new Vue({
el: '#validate',
data:{
forValidation: {username: '', password: '', firstname:'', lastname:'', email:'', website:''},
errorUsername: "",
errorPassword: "",
errorFirstname: "",
errorLastname: "",
errorEmail: "",
errorWebsite: "",
successMessage: ""
},
methods:{
validateInput: function(){
var valForm = app.toFormData(app.forValidation);
axios.post('validate.php', valForm)
.then(function(response){
//console.log(response);
if(response.data.username){
app.errorUsername = response.data.message;
app.focusUsername();
}
else if(response.data.password){
app.errorPassword = response.data.message;
app.errorUsername = '';
app.focusPassword();
}
else if(response.data.firstname){
app.errorFirstname = response.data.message;
app.errorUsername = '';
app.errorPassword = '';
app.focuFirstname();
}
else if(response.data.lastname){
app.errorLastname = response.data.message;
app.errorUsername = '';
app.errorPassword = '';
app.errorFirstname = '';
app.focusLastname();
}
else if(response.data.email){
app.errorEmail = response.data.message;
app.errorUsername = '';
app.errorPassword = '';
app.errorFirstname = '';
app.errorLastname = '';
app.focusEmail();
}
else if(response.data.website){
app.errorWebsite = response.data.message;
app.errorEmail = response.data.message;
app.errorUsername = '';
app.errorPassword = '';
app.errorFirstname = '';
app.errorLastname = '';
app.errorEmail = '';
app.focusWebsite();
}
else{
app.successMessage = response.data.message;
app.errorUsername = '';
app.errorPassword = '';
app.errorFirstname = '';
app.errorLastname = '';
app.errorEmail = '';
app.errorWebsite = '';
}
});
},
focusUsername: function(){
this.$refs.username.focus();
},
focusPassword: function(){
this.$refs.password.focus();
},
focusFirstname: function(){
this.$refs.firstname.focus();
},
focusLastname: function(){
this.$refs.lastname.focus();
},
focusEmail: function(){
this.$refs.email.focus();
},
focusWebsite: function(){
this.$refs.website.focus();
},
toFormData: function(obj){
var form_data = new FormData();
for(var key in obj){
form_data.append(key, obj[key]);
}
return form_data;
},
clearMessage: function(){
app.successMessage = '';
}
}
});
validate.php
Lastly, this is our PHP code that will validate our input.
<?php
$out = array('username' => false, 'password' => false, 'firstname' => false, 'lastname' => false, 'email' => false, 'website' => false);
function check_input($data) {
return $data;
}
$username=check_input($_POST['username']);
$password=check_input($_POST['password']);
$firstname=check_input($_POST['firstname']);
$lastname=check_input($_POST['lastname']);
$email=check_input($_POST['email']);
$website=check_input($_POST['website']);
if($username==''){
$out['username']=true;
$out['message']='Username is required';
}
elseif (!preg_match("/^[a-zA-Z_1-9]*$/",$username)) {
$out['username']=true;
$out['message'] = "Only letters, numbers and underscore allowed";
}
elseif($password==''){
$out['password']=true;
$out['message']='Password is required';
}
elseif($firstname==''){
$out['firstname']=true;
$out['message']='Firstname is required';
}
elseif (!preg_match("/^[a-zA-Z ]*$/",$firstname)) {
$out['firstname']=true;
$out['message'] = "Only letters and white space allowed";
}
elseif($lastname==''){
$out['lastname']=true;
$out['message']='Lastname is required';
}
elseif (!preg_match("/^[a-zA-Z ]*$/",$lastname)) {
$out['lastname']=true;
$out['message'] = "Only letters and white space allowed";
}
elseif($email==''){
$out['email']=true;
$out['message']='Email is required';
}
elseif (!filter_var($email, FILTER_VALIDATE_EMAIL
)) {
$out['email']=true;
$out['message']='Invalid Email Format';
}
elseif($website==''){
$out['website']=true;
$out['message']='Website is required';
}
elseif (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$out['website']=true;
$out['message']='Invalid URL';
}
else{
$out['message']='Form Validated';
}
header("Content-type: application/json");
?>
That ends this tutorial. Happy Coding :)