Lab Fat: CSE3002 - IWP L43+L44 18BCE0820 Nishant Pantbalekundri 2. Railway Reservation
Lab Fat: CSE3002 - IWP L43+L44 18BCE0820 Nishant Pantbalekundri 2. Railway Reservation
CSE3002 - IWP
L43+L44
18BCE0820
Nishant Pantbalekundri
2. Railway reservation
Code -
Index.php
<HTML>
<HEAD>
<TITLE>Indian Railways</TITLE>
<style type="text/css">
@import url(style.css);
#logo {
border-radius: 25px;
border: 1px solid blue;
width: 100px;
height: 100px;
}
* {
color: white;
}
html {
background: url(img/bg7.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
#main {
width:700px;
height: 4 00px;
margin: 0 auto;
margin-top: 30px;
color:white;
border-radius: 25px;
padding-top: 10px;
padding-right: 10px;
padding-bottom: 10px;
padding-left: 10px;
background-color: rgba(0,0,0,0.3);
}
</style>
</HEAD>
<BODY>
<?php
session_start();
include("header.php"); ?>
<div id="main"><div id="logo">
<A HREF="index.php">
<IMG SRC="img/logo.png" alt="Home" id="logo" width="150"
height="150"></IMG>
</A></div>
<h1 align="center">Welcome to Indian Railways!</h1><br/><br/><br/>
<h2 align="center">Have a safe journey with us</h2>
<br/><br/><br/>
<?php
if(isset($_SESSION['user_info']))
cho '<h3 align="center"><a href="booktkt.php">Book here</a></h3>';
e
else
cho '
e <h3 align="center"><a href="register.php">Please register/login
before booking</a></h3>';
?>
</div>
</BODY>
</HTML>
Login.php
<?php
session_start();
if (isset($_POST['submit']))
{
$conn = mysqli_connect("localhost","root","","railway");
if(!$conn){
echo "<script type='text/javascript'>alert('Database
failed');</script>";
die('Could not connect: '.mysqli_connect_error());
}
$email=$_POST['email'];
$pw=$_POST['pw'];
$sql = "SELECT * FROM passengers WHERE email = '$email' AND password =
'$pw';";
$sql_result = mysqli_query ($conn, $sql) or die ('request "Could not
execute SQL query" '.$sql);
$user = mysqli_fetch_assoc($sql_result);
if(!empty($user)){
$_SESSION['user_info'] = $user['email'];
$message='Logged in successfully';
}
else{
$message = 'Wrong email or password.';
}
echo "<script type='text/javascript'>alert('$message');</script>";
}
?>
<!DOCTYPE html>
<html>
<head>
title>Login</title>
<
</head>
<script type="text/javascript">
function validate() {
var E mailId=document.getElementById("email");
var a tpos = EmailId.value.indexOf("@");
var d otpos = EmailId.value.lastIndexOf(".");
var p w=document.getElementById("pw");
f (atpos<1 || dotpos<atpos+2 || dotpos+2>=EmailId.value.length)
i
{
alert("Enter valid email-ID");
EmailId.focus();
return false;
}
if(pw.value.length< 8)
{
alert("Password consists of atleast 8 characters");
pw.focus();
return false;
}
return true;
}
</script>
<style type="text/css">
#loginarea{
background-color: white;
width: 30%;
margin: auto;
border-radius: 25px;
border: 2px solid blue;
margin-top: 100px;
background-color: rgba(0,0,0,0.2);
box-shadow: inset -2px -2px rgba(0,0,0,0.5);
padding: 40px;
font-family:sans-serif;
font-size: 20px;
color: white;
}
html {
background: url(img/bg4.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
#submit {
border-radius: 5px;
background-color: rgba(0,0,0,0);
padding: 7px 7px 7px 7px;
box-shadow: inset -1px -1px rgba(0,0,0,0.5);
font-family:"Comic Sans MS", cursive, sans-serif;
font-size: 17px;
margin:auto;
margin-top: 20px;
display:block;
color: white;
}
#logintext {
text-align: center;
}
.data {
color: white;
}
</style>
<body>
<?php include("header.php") ?>
<div id="loginarea">
form id="login" action="login.php" onsubmit="return validate()"
<
method="post" name="login">
<div id="logintext">Login to Indian Railways!</div><br/><br/>
<table>
<tr><td><div class="data">Enter E-Mail ID:</div></td><td><input
type="text" id="email" size="30" maxlength="30" name="email"/></td></tr>
<tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><t
r></tr><tr></tr><tr></tr><tr></tr>
tr><td><div class="data">Enter Password:</div></td><td><input
<
type="password" id="pw" size="30" maxlength="30" name="pw"/></td></tr>
<tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><t
r></tr><tr></tr><tr></tr><tr></tr>
</table>
INPUT TYPE="Submit" value="Submit" name="submit" id="submit"
<
class="button">
/form></div>
<
</body>
</html>
Pnrstatus.php
<?php
session_start();
$conn = mysqli_connect("localhost","root","","railway");
if(!$conn){
cho "<script type='text/javascript'>alert('Database
e
failed');</script>";
die('Could not connect: '.mysqli_connect_error());
}
if (isset($_POST['submit']))
{
$pnr=$_POST['pnr'];
$sql = "SELECT t_status FROM tickets WHERE PNR= '$pnr'";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);
if($row==NULL) echo "<script type='text/javascript'>alert('PNR not
found');</script>";
else echo "<script type='text/javascript'>alert('Your status is '
+'$row[t_status]');</script>";
}
if (isset($_POST['cancel']))
{
$pnr=$_POST['pnr'];
$sql = "DELETE FROM tickets WHERE PNR=$pnr;";
if(mysqli_query($conn, $sql))
echo "<script type='text/javascript'>alert('Your ticket has been
cancelled');</script>";
else echo "<script type='text/javascript'>alert('Cancellation
failed');</script>";
}
?>
<!DOCTYPE html>
<html>
<head>
<title>PNR Status</title>
<LINK REL="STYLESHEET" HREF="STYLE.CSS">
<style type="text/css">
#pnr {
font-size: 20px;
background-color: white;
width: 500px;
height: 300px;
margin: auto;
border-radius: 25px;
border: 2px solid blue;
margin: auto;
position: absolute;
left: 0;
right: 0;
padding-top: 40px;
padding-bottom:20px;
margin-top: 130px;
}
html {
background: url(img/bg7.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
#pnrtext {
padding-top: 20px;
}
/style>
<
</head>
<body>
<?php
include("header.php"); ?>
<center>
<div id="pnr">Check your PNR status here:<br/><br/>
<form method="post" name="
pnrstatus" action="pnrstatus.php">
div id="pnrtext"><input type="text" name="pnr" size="30"
<
maxlength="10" placeholder="Enter PNR here"></div>
<br/><br/>
<input type="submit" name="submit" value="Check here!" class="button"
id="submit"><br/><br/>
<?php
if(isset($_SESSION['user_info'])){
echo '<form action="pnrstatus.php" method="post"><input
type="submit" class="button" value="Cancel your ticket!" name="cancel"
id="cancel"/></form>';
}
else
echo '<A HREF="register.php">Login/Register</A>';
>
?
/form>
<
/div>
<
</center>
</body>
</html>
Header.php
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" href="s1.css" type="text/css">
<style type="text/css">
li {
font-family: sans-serif;
font-size:18px;
}
</style>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
$("#Logout").hide();
};
$(document).ready(function(){
$("#user").hover(function(){
$("#Logout").toggle("slow");
});
});
</script>
</head>
<body l ink="white" alink="white" vlink="white">
<div class="container dark">
<div class="wrapper">
<div class="Menu">
<ul id="navmenu">
<li><A H REF="index.php">Home</A></li>
<li><A H REF="pnrstatus.php">PNR Status</A></li>
<li><a href="booktkt.php">Book a ticket</a></li>
<li><?php
if(isset($_SESSION['user_info'])){
echo '<div id="dropdown">'.$_SESSION['user_info'].'<div
id="Logout" style="display:none">Logout</div>';
}
else
echo '<A HREF="register.php">Login/Register</A>';
?>
/li>
<
</ul>
/div>
<
</div>
/div>
<
</body>
</html>
Deact.php
<html>
<head>
<title>Deactivate account</title>
<link rel="stylesheet" href="css/main.css">
rc="js/jquery-1.8.2.min.js"></script>
<script s
<script s rc="js/jquery.validate.min.js"></script>
<script src="js/main.js"></script>
ype="text/css">
<style t
a:link {color: #ffffff}
a:visited {color: #ffffff}
a:hover {color: #ffffff}
a:active {color: #ffffff}
</style>
</head>
<body>
<?php
session_start();
include("header.php"); ?>
<form id="login-form" class="login-form" name="form1" method="post"
action="deact.php">
<div id="form-content">
<div c
lass="welcome">
Do you sure you wish to deactivate your account?
<br />
Email ID: <input type="text" name="email"><br/>
Password: <input type="password"
name="password"><br/><br/><br/>
center><input type="submit" name="submit"
<
value="Deactivate account"></center>
</div>
</div>
</form>
</body>
</html>
<?php
if (isset($_POST['submit']))
{
$email=$_POST['email'];
$password=$_POST['password'];
$connect = mysql_connect("localhost","root","");
mysql_select_db("foodies") or die("couldn't find database");
$query = mysql_query("select * from php_users_login where
email='$email'");
$numrows = mysql_num_rows($query);
if($numrows!=0)
{
while($row = mysql_fetch_assoc($query))
{
$dbemail = $row['email'];
$dbpassword = $row['password'];
}
if($email==$dbemail&&$password==$dbpassword)
{
$sql1 ="DELETE FROM `php_users_login` WHERE email='$dbemail';";
f(mysql_query($sql1))
i
{
cho "<script type='text/javascript'>alert('User deleted
e
successfully');</script>";
}
else
{
cho "<script type='text/javascript'>alert('Could not delete
e
user');</script>";
}
}
else
echo "<script type='text/javascript'>alert('Incorrect
password');</script>";
}
else
echo "<script type='text/javascript'>alert('User does not
exist');</script>";
}
?>
Changepw.php
<html>
<head>
<title>Change password</title>
<link rel="stylesheet" href="css/main.css">
<link href='http://fonts.googleapis.com/css?family=Roboto:400,300,500'
rel='stylesheet' type='text/css'>
<link
href="//netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.cs
s" rel="stylesheet">
<script src="js/jquery-1.8.2.min.js"></script>
rc="js/jquery.validate.min.js"></script>
<script s
<script s rc="js/main.js"></script>
<style type="text/css">
a:link {color: #ffffff}
a:visited {color: #ffffff}
a:hover {color: #ffffff}
:active {color: #ffffff}
a
</style>
</head>
<body>
<?php
session_start();
include("header.php"); ?>
<form id="login-form" class="login-form" name="form1" method="post"
action="changepw.php">
<div i d="form-content">
<div class="welcome">
Do you want to change your password?
<br />
Email ID: <input type="text" name="email"><br/>
Current password: <input type="password"
name="opw"><br/>
New password: <input type="password"
name="npw"><br/><br/>
<center><input type="submit" name="changepw"
value="Change password"></center>
</div>
/div>
<
/form>
<
</body>
</html>
<?php
$connect = mysql_connect("localhost","root","");
mysql_select_db("foodies") or die("couldn't find database");
if (isset($_POST['changepw'])){
$email=$_POST['email'];
$opw=$_POST['opw'];
$npw=$_POST['npw'];
$query = mysql_query("select * from php_users_login where
email='$email'");
$numrows = mysql_num_rows($query);
if($numrows!=0)
{
while($row = mysql_fetch_assoc($query))
{
$dbemail = $row['email'];
$dbpassword = $row['password'];
}
if($dbemail==$email&&$opw==$dbpassword)
{
$sql2 ="UPDATE php_users_login SET password= '$npw' WHERE email=
'$dbemail';";
if(mysql_query($sql2))
{
echo "<script type='text/javascript'>alert('Password changed
successfully');</script>";
}
lse
e
{
cho "<script
e
type='text/javascript'>alert('Error');</script>";
}
}
else
echo "<script type='text/javascript'>alert('Incorrect
password');</script>";
}
else
echo "<script type='text/javascript'>alert('User does not
exist');</script>";
}
?>
Booktkt.php
<?php
session_start();
if(empty($_SESSION['user_info'])){
cho "<script type='text/javascript'>alert('Please login before
e
proceeding further!');</script>";
}
$conn = mysqli_connect("localhost","root","","railway");
if(!$conn){
echo "<script type='text/javascript'>alert('Database
failed');</script>";
die('Could not connect: '.mysqli_connect_error());
}
if (isset($_POST['submit']))
{
$trains=$_POST['trains'];
$sql = "SELECT t_no FROM trains WHERE t_name = '$trains'";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);
$email=$_SESSION['user_info'];
$query="UPDATE passengers SET t_no='$row[t_no]' WHERE email='$email';";
if(mysqli_query($conn, $query))
{
$message = "Ticket booked successfully";
}
else {
$message="Transaction failed";
}
echo "<script type='text/javascript'>alert('$message');</script>";
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Book a ticket</title>
<LINK REL="STYLESHEET" HREF="STYLE.CSS">
<style type="text/css">
#booktkt {
margin:auto;
margin-top: 50px;
width: 40%;
height: 60%;
padding: auto;
padding-top: 50px;
padding-left: 50px;
background-color: rgba(0,0,0,0.3);
border-radius: 25px;
}
html {
background: url(img/bg7.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
#journeytext {
color: white;
font-size: 28px;
font-family:"Comic Sans MS", cursive, sans-serif;
}
#trains {
margin-left: 90px;
font-size: 15px;
}
#submit {
margin-left: 150px;
margin-bottom: 40px;
margin-top: 30px
}
/style>
<
<script type="text/javascript">
function validate() {
var trains=document.getElementById("trains");
if(trains.selectedIndex==0)
{
alert("Please select your train");
trains.focus();
return false;
}
}
/script>
<
</head>
<body>
<?php
include ('header.php');
?>
<div id="booktkt">
<h1 align="center" id="journeytext">Choose your journey</h1><br/><br/>
<form method="post" name="journeyform" onsubmit="return validate()">
<select id="trains" name="trains" required>
<option selected disabled>-------------------Select trains
here----------------------</option>
<option value="rajdhani" >Rajdhani Express - Mumbai Central to
Delhi</option>
<option value="duronto" >Duronto Express - Mumbai Central to
Ernakulum</option>
<option value="geetanjali">Geetanjali Express - CST to
Kolkata</option>
<option value="garibrath" >Garib Rath - Udaipur to Jammu
Tawi</option>
<option value="mysoreexp" >Mysore Express - Talguppa to Mysore
Jn</option>
</select>
<br/><br/>
input type="submit" name="submit" id="submit" class="button" />
<
/form>
<
</div>
</body>
</html>
Register.php
<?php
session_start();
$conn = mysqli_connect("localhost","root","","railway");
if(!$conn){
cho "<script type='text/javascript'>alert('Database
e
failed');</script>";
die('Could not connect: '.mysqli_connect_error());
}
if (isset($_POST['submit']))
{
$fname=$_POST['fname'];
$lname=$_POST['lname'];
$age=$_POST['age'];
$mob=$_POST['mob'];
$gender=$_POST['gender'];
$email=$_POST['email'];
$pw=$_POST['pw'];
$cpw=$_POST['cpw'];
$sql = "INSERT INTO passengers (p_fname, p_lname, p_age, p_contact,
p_gender, email, password) VALUES ('$fname', '$lname', '$age', '$mob',
'$gender', '$email', '$pw');";
if(mysqli_query($conn, $sql))
{
$message = "You have been successfully registered";
}
else
{
$message = "Could not insert record";
}
echo "<script type='text/javascript'>alert('$message');</script>";
}
?>
<HTML>
<HEAD>
<TITLE>Register on Indian Railways</TITLE>
<LINK REL="STYLESHEET" HREF="STYLE.CSS">
<style type="text/css">
* {
color: #222;
}
#register_form {
background-color: white;
width: 40%;
margin: auto;
border-radius: 25px;
border: 2px solid blue;
margin-top: 25px;
}
#nav {
olor: white;
c
}
#logintext {
margin-top: 10px;
}
#login {
margin-top: 10px;
margin-bottom: 20px;
}
</style>
<SCRIPT src="validation.js"></SCRIPT>
</HEAD>
<BODY background="img/wallpaper1.jpg" link="white" alink="white"
vlink="white" width="1024" height="768">
<?php include("header.php") ?>
<div id="register_form" align="center" height="200" width="200">
<FORM name="register" method="post" action="register.php" onsubmit="return
validate()">
<TABLE border="0">
<CAPTION><FONT size="6" color="WHITE"><br/>Enter your
details:</FONT></CAPTION>
<tr></tr><tr></tr><tr></tr><tr></tr><tr></tr>
<TR class="left">
<TD><FONT size="5" color="WHITE">First name:</FONT></TD>
<TD><INPUT name="fname" type="TEXT" placeholder="Enter your first name"
size="30" maxlength="30" align="center" id="fname"></TD>
</TR><tr></tr><tr></tr>
<TR class="left">
<TD><FONT size="5" color="WHITE">Last name:</FONT></TD>
<TD><INPUT type="TEXT" name="lname" align="center" size="30"
maxlength="30" placeholder="Enter your last name" id="lname"></TD>
</TR><tr></tr><tr></tr>
<TR class="left">
<TD><FONT size="5" color="WHITE">Age:</FONT></TD>
<TD><INPUT type="TEXT" name="age" align="center" size="30" maxlength="3"
placeholder="Enter age" id="age"></TD>
</TR><tr></tr><tr></tr>
<TR class="left">
<TD><FONT size="5" color="WHITE">Mobile Number:</FONT></TD>
<TD><INPUT type="TEXT" name="mob" size="30" maxlength="10"
placeholder="Enter your mobile number" id="mob"></TD>
</TR><tr></tr><tr></tr>
<TR class="left">
<TR class="left">
<TD><FONT size="5" color="WHITE">Gender:</FONT></TD>
<TD>
<INPUT type="radio" name="gender" value="Male" align="center"
id="gender">Male
&n
bsp;
<input type="radio" name="gender" value="Female" align="center"
id="gender">Female
</TD>
</TR><tr></tr><tr></tr>
<TR class="left">
<TD><FONT size="5" color="WHITE">E-Mail ID:</FONT></TD>
ame="email" type="TEXT" id="email" placeholder="Enter your
<TD><INPUT n
E-Mail ID" s ize="30" maxlength="30"></TD>
</TR><tr></tr><tr></tr>
<TR class="left">
<TD><FONT size="5" color="WHITE">Password:</FONT></TD>
<TD><INPUT type="PASSWORD" name="pw" size="30" id="pw"></TD>
</TR><tr></tr><tr></tr>
<TR class="left">
<TD><FONT size="5" color="WHITE">Confirm Password:</FONT></TD>
<TD><INPUT type="PASSWORD" name="cpw" size="30" id="cpw"></TD>
</TR><tr></tr><tr></tr><tr></tr><tr></tr>
<tr></tr><tr></tr><tr></tr>
</TABLE>
<P><INPUT TYPE="Submit" value="Submit" name="submit" id="submit"
class="button" onclick="if(!this.form.tc.checked){alert('You must agree to
the terms first.');return false}">      
<INPUT TYPE="Reset" value="Reset" id="reset"
class="button"></P></FORM><br/>
<HR width="450" style="border-color: blue;display: block;" noshade>
<FORM action="login.php">
<P align="CENTER" id="logintext"><FONT size="6" color="white"
face="Arial">
Already have an account with us?<BR/></FONT></FONT>
<INPUT TYPE="submit" value="Login" id="login" class="button">
</P>
</FORM></div>
</BODY>
</HTML>
val
Valivadtion.js
function validate()
{
var f name=document.getElementById("fname");
var l name=document.getElementById("lname");
var a ge=document.getElementById("age");
var m ob=document.getElementById("mob");
var E mailId=document.getElementById("email");
var p w=document.getElementById("pw");
var c pw=document.getElementById("cpw");
var a lphaExp = /^[a-zA-Z]+$/;
var a tpos = EmailId.value.indexOf("@");
var d otpos = EmailId.value.lastIndexOf(".");
f(fname.value==null || fname.value=="")
i
{
fname.focus();
alert("Enter valid first name");
return false;
}
if(fname.value.match(alphaExp)){}
else{
alert("First name can have only letters");
fname.focus();
return false;
}
f(lname.value==null || lname.value=="")
i
{
lname.focus();
alert("Enter valid last name");
return false;
}
if(lname.value.match(alphaExp)){}
else{
alert("Last name can have only letters");
lname.focus();
return false;
}
f(age.value==null || age.value=="")
i
{
alert("Please Enter Age");
age.focus();
return false;
}
if (isNaN(age.value))
{
alert(" Your Age must be Integer");
age.focus();
return false;
}
if(mob.value==null || mob.value==" ")
{
alert("Please Enter Mobile Number");
mob.focus();
return false;
}
if (isNaN(mob.value))
{
alert(" Your Mobile Number must be Integers");
mob.focus();
return false;
}
if((mob.value.length!= 10))
{
alert("Enter the valid Mobile Number(Like : 9669666999)");
mob.focus();
return false;
}
f (atpos<1 || dotpos<atpos+2 || dotpos+2>=EmailId.value.length)
i
{
alert("Enter valid email-ID");
EmailId.focus();
return false;
}
f(pw.value.length< 8 || cpw.value.length< 8)
i
{
alert("Please enter a password of atleast 8 characters");
pw.focus();
return false;
}
lse if (pw.value.length != cpw.value.length)
e
{
alert("Passwords do not match.");
pw.focus();
return false;
}
else if (pw.value != cpw.value)
{
alert("Passwords do not match.");
pw.focus();
return false;
}
return true;
}
Main.js
});
})(jQuery_1_8_2);
Main.css
::-moz-selection {
background: #b3d4fc;
text-shadow: none;
}
::selection {
background: #b3d4fc;
text-shadow: none;
}
hr {
display: block;
height: 1 px;
border: 0 ;
border-top: 1 px solid #ccc;
margin: 1em 0 ;
padding: 0;
}
audio,
canvas,
img,
video {
vertical-align: middle;
}
fieldset {
border: 0 ;
margin: 0 ;
padding: 0;
}
textarea {
resize: vertical;
}
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
*:before,
*:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
body {
ackground: #333333 url(../img/background.jpg) no-repeat center bottom
b
fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
font-weight: 300;
}
.login-form {
margin: 50px auto;
background: white;
padding: 30px 0;
position: relative;
-webkit-box-shadow: 0 0 5px 3px rgba(0, 0, 0, 0.125);
box-shadow: 0 0 5px 3px rgba(0, 0, 0, 0.125);
height: 400px;
}
.login-form #form-loading {
text-align: center;
position: absolute;
top: 0;
bottom: 0;
width: 100%;
opacity: 0.5;
filter: alpha(opacity=50);
z-index: 1000;
background: #555555;
}
.login-form #form-loading i {
font-size: 100px;
}
.login-form #form-message {
text-align: center;
color: #555555;
}
.login-form .h1 {
font-size: 30px;
color: #3EC038;
padding: 15px 15px 35px 15px;
text-transform: uppercase;
text-align: center;
}
.login-form .logo {
height: auto;
max-width: 100%;
}
.login-form .group {
*zoom: 1;
-webkit-transition: all ease .2s;
transition: all ease .2s;
border-left: 4px solid #fff;
padding: 10px 0;
}
.login-form .group:before,
.login-form .group:after {
content: " ";
display: table;
}
.login-form .group:after {
clear: both;
}
.login-form .group > label {
padding-left: 15px;
padding-top: 5px;
color: #555555;
font-size: 16px;
display: block;
}
.login-form .group > label.empty {
display: block;
height: 1px;
padding: 0;
margin: 0;
}
.login-form .group > div {
padding: 0 15px;
}
.login-form .group > div.addon-right {
position: relative;
padding-right: 50px;
}
.login-form .group > div.addon-right > i {
position: absolute;
right: 25px;
top: 9px;
z-index: 999;
color: #555555;
}
.login-form .group > div .error-message {
font-size: 12px;
color: red;
margin-top: 5px;
}
.login-form .group.active {
background: #F6F6F6;
border-left-color: #40C2FF;
-webkit-box-shadow: inset 0 px 0 px 3px r gba(0, 0, 0, 0.03);
box-shadow: inset 0px 0px 3 px r gba(0, 0 , 0, 0.03);
}
.login-form input[type=submit] {
border: none;
background: #65CA60;
color: white;
padding: 5px 20px;
text-transform: uppercase;
font-weight: 500;
border-radius: 1px;
-webkit-box-shadow: i nset 0 1 px 1px r gba(0, 0, 0, 0.075);
box-shadow: inset 0 1 px 1px r gba(0, 0 , 0, 0.075);
-webkit-transition: background ease-in-out .15s;
transition: background ease-in-out .15s;
cursor:pointer;
}
.login-form input[type=button] {
border: none;
background: #65CA60;
color: white;
padding: 5px 20px;
text-transform: uppercase;
font-weight: 500;
border-radius: 1px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1
px 1px rgba(0, 0, 0, 0.075);
-webkit-transition: b ackground ease-in-out .15s;
transition: background ease-in-out .15s;
cursor:pointer;
}
.login-form input[type=submit]:hover {
background: #5AC253;
}
.login-form {
width: 320px;
}
@media (min-width: 550px) {
.login-form {
width: 520px;
}
.login-form .group > label {
float: left;
width: 180px;
}
.login-form .group > div {
margin-left: 180px;
padding-left: 0;
}
}
.form-control {
display: block;
width: 100%;
height: 34px;
padding: 6px 12px;
font-size: 14px;
line-height: 1.428571429;
color: #555555;
background-color: #ffffff;
background-image: n one;
border: 1px solid # cccccc;
border-radius: 1px;
-webkit-box-shadow: i nset 0 1 px 1px r gba(0, 0, 0, 0.075);
box-shadow: inset 0 1 px 1px r gba(0, 0 , 0, 0.075);
webkit-transition: border-color ease-in-out .15s, box-shadow
-
ease-in-out .15s;
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
border-color: #66afe9;
outline: 0;
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102,
175, 233, 0.6);
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175,
233, 0.6);
}
.form-control::-moz-placeholder {
color: #999999;
opacity: 1;
}
.form-control:-ms-input-placeholder {
color: #999999;
}
.form-control::-webkit-input-placeholder {
color: #999999;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
cursor: not-allowed;
background-color: #eeeeee;
opacity: 1;
}
textarea.form-control {
height: auto;
}
.hide {
display: none !important;
}
.show {
display: block !important;
}
.one-line {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.arrow-up {
border-left-color: transparent;
border-right-color: transparent;
border-top-style: none;
}
.arrow-down {
border-left-color: transparent;
border-right-color: transparent;
border-bottom-style: none;
}
.arrow-right {
border-top-color: transparent;
border-bottom-color: transparent;
border-right-style: none;
}
.arrow-left {
border-top-color: transparent;
border-bottom-color: transparent;
border-left-style: none;
}
.arrow {
width: 0;
height: 0;
display: inline-block;
vertical-align: middle;
border-color: white;
border-width: 5 px;
border-style: s olid;
}
.arrow.up {
border-left-color: transparent;
border-right-color: transparent;
border-top-style: none;
}
.arrow.down {
border-left-color: transparent;
border-right-color: transparent;
border-bottom-style: none;
}
.arrow.right {
border-top-color: transparent;
border-bottom-color: transparent;
border-right-style: none;
}
.arrow.left {
border-top-color: transparent;
border-bottom-color: transparent;
border-left-style: none;
}
label.err {
color: red;
display: block;
margin: 0;
width: auto;
}
em {
display: block;
margin: 5px 0 0px 180px;
font-style: inherit;
}
.welcome{
line-height: 50px;
padding-left:30px;
color: #555555;
}
1. Registration form
Code -
Index.html
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Form Validation</title>
<meta n ame="viewport" content="width=device-width, user-scalable=no">
<link r el="stylesheet" href="fv.css" type="text/css" />
!--[if IE]>
<
<style>
.field .tooltip .content{ display:none; opacity:1; }
.field .tooltip:hover .content{ display:block; }
</style>
<![endif]-->
</head>
<body>
<div i d='wrap'>
<div class='options'>
</div>
<h1 title='how forms should be done.'>Registration</h1>
<section class='form'>
<form action="" method="post" novalidate>
<fieldset>
<div class="field">
<label>
<span>Name</span>
<input data-validate-length-range="6"
data-validate-words="2" n
ame="name"/>
/label>
<
/div>
<
<div c lass="field">
<label>
<span>Gender</span>
console.log(validatorResult);
return !!validatorResult.valid;
};
// on form "reset" event
document.forms[0].onreset = function(e){
validator.reset();
};
if( this.checked )
$('form .alert').remove();
}).prop('checked',false);
/script>
<
</body>
</html>
Style.css
small{ font-size:0.9em; }
article, aside, d
etails, figcaption, figure,
footer, header, h group, menu, nav, section {
display:block;
}
a{ text-decoration:none; }
.btn{ margin:5px; font-size:1.3em; font-weight:bold; border:2px solid
rgba(0,0,0,0.2); display:inline-block; box-shadow:0 -30px 30px -15px
#00329B inset, 0 1px 0 rgba(255,255,255,0.3) inset; background:#0088CC;
background-repeat:repeat-x; color:#FFF; text-shadow:0 -1px 0 rgba(0, 0, 0,
0.25); border-radius:7px; padding:10px 20px; -webkit-transition:0.15s;
transition:0.15s; }
.btn:hover{ background:#0068BA; }
.btn:active{ box-shadow:0 0 0 0 rgba(0, 0, 0, 0.3), 0 -30px 30px -15px
#00329B inset, 0 0 6px #00243F inset; }
.btn.github{ float:right; }
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button { -webkit-appearance:none;
margin:0; }
input[type=checkbox]{ width:auto; border:none; bottom:-1px;
cursor:pointer; margin:2px 8px 0 0; position:relative;
transform:scale(1.2); }
button{ font-size:1.1em; padding:5px 25px; }
/* Tooltips helpers */
.field .tooltip{ float:left; top:2px; left:7px; position:relative;
z-index:2; }
.field .tooltip:hover{ z-index:3; }
.field .tooltip > span{ display:inline-block; width:15px; height:15px;
line-height:15px; font-size:0.9em; font-weight:bold; text-align:center;
color:#FFF; cursor:help; background-color:#00AEEF; position:relative;
border-radius:10px; }
.field .tooltip .content{ opacity:0; width:200px;
background-color:#333; color:#FFF; font-size:0.9em; position:absolute;
top:0; left:20px; padding:8px; border-radius:6px; pointer-events:none;
transition:0.2s cubic-bezier(0.1, 0 .1, 0.25, 2); -webkit-transition:0.3s
cubic-bezier(0.1, 0.2, 0.5, 2.2); - moz-transition:0.3s cubic-bezier(0.1,
0.2, 0.5, 2.2); }
.field .tooltip p{ padding:0; }
.field .tooltip.down .content{ left:auto; right:0; top:30px; }
.field .tooltip:hover .content{ opacity:1; left:36px; }
.field .tooltip .content b{ height:0; width:0; border-color:#333
#333 transparent transparent; border-style:solid; border-width:9px 7px;
position:absolute; left:-14px; top:8px; }
field .tooltip.down .content b{ left:auto; right:6px; top:-10px;
.
border-width:5px; border-color:transparent #333 #333 transparent; }
.bad i nput,
.bad s elect,
bad t
. extarea{ border:1px solid # CE5454; box-shadow:0 0 4px -2px
#CE5454; p osition:relative; left:0; - moz-animation:.4s 1 shake ease;
-webkit-animation:0.4s 1 shake ease; }
/* mode2 - where the label's text is above the field and not next to it
--------------------------------------------------------------------------
- */
.mode2 .field{ float:left; clear:left; margin-bottom:30px; height:auto;
padding:0; zoom:1; }
field.bad{ margin-bottom:8px; }
.mode2 .
.mode2 . field::before, .mode2 .field::after{ content:''; display:table; }
.mode2 .field::after{ clear:both; }
.mode2 .field label{ }
.mode2 .field label span{ float:none; display:block;
line-height:inherit; }
.mode2 .field input:not(type="checkbox"), .field textarea{
width:250px; margin:0; }
.mode2 .field textarea{ width:350px; margin:0; }
.mode2 . field select{ width:260px; float:none; }
.mode2 . field.multi label{ float:none; }
mode2 .field.multi input{ float:left; margin-right:5px; width:35px;
.
text-align:center; }
mode2 .field .tooltip{ left:auto; position:absolute; right:-22px;
.
top:19px; }
.mode2 . field . alert::after{ display:none; }
.mode2 . field . alert{ float:none; clear:left; margin:0; padding:0 5px;
border-radius:0 0 3px 3px; max-width:100%; height:22px; line-height:1.8em;
}
.mode2 .field > .extra{ position:absolute; right:0; }
Validate.js
/*
Validator v3.3.7
(c) Yair Even Or
https://github.com/yairEO/validator
*/
;(function(root, factory){
var d efine = define || {};
if( t ypeof define === 'function' && define.amd )
define([], factory);
lse if( typeof exports === 'object' && typeof module === 'object' )
e
module.exports = factory();
lse if(typeof exports === 'object')
e
exports["FormValidator"] = factory();
else
root.FormValidator = factory();
}(this, function(){
// More information at: https://gist.github.com/dperini/729294
var urlRegex = new RegExp(
"^" +
"(?:(?:(?:https?|ftp):)?\\/\\/)" +
"(?:\\S+(?::\\S*)?@)?" +
"(?:" +
"(?!(?:10|127)(?:\\.\\d{1,3}){3})" +
"(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})" +
"(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})" +
"(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])" +
"(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}" +
"(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))" +
"|" +
"(?:" +
"(?:" +
"[a-z0-9\\u00a1-\\uffff]" +
"[a-z0-9\\u00a1-\\uffff_-]{0,62}" +
")?" +
"[a-z0-9\\u00a1-\\uffff]\\." +
")+" +
"(?:[a-z\\u00a1-\\uffff]{2,}\\.?)" +
")" +
"(?::\\d{2,5})?" +
"(?:[/?#]\\S*)?" +
$", "i"
"
);
this.DOM = {
scope : formElm
};
FormValidator.prototype = {
// Validation error texts
texts : {
invalid input is not as expected',
: '
short : ' input is too short',
long input is too long',
: '
empty : ' please put something here',
select Please select an option',
: '
number_min : ' too low',
number_max too high',
: '
address : ' invalid address',
number not a number',
: '
email : ' email address is invalid',
email_repeat : 'emails do not match',
password_repeat : ' passwords do not match',
no_match no match',
: '
complete : ' input is not complete'
},
return true;
},
// a "skip" will skip some of the tests (needed for keydown
validation)
text : function(field, data){
var that = this;
/ make sure there are at least X number of words, each at
/
least 2 chars long.
/ for example 'john F kenedy' should be at least 2 words
/
and will pass validation
if( data.validateWords ){
var words = data.value.split(' ');
// iterate on all the words
var wordsLength = function(len){
for( v ar w = words.length; w--; )
if( words[w].length < len )
eturn that.texts.short;
r
eturn true;
r
};
if( words.length < data.validateWords ||
!wordsLength(2) )
return this.texts.complete;
return true;
}
return this.texts.complete;
}
if( data.pattern ){
var regex = this.settings.regex[data.pattern];
if( !regex )
regex = data.pattern;
try{
var jsRegex = new RegExp(regex).test(data.value);
if( data.value && !jsRegex ){
return this.texts.invalid
}
}
catch(err){
console.warn(err, field, 'regex is invalid');
return this.texts.invalid
}
}
return true;
},
return true;
},
// Date is validated in European format (day,month,year)
date : function( field, data ){
var day, A = data.value.split(/[-./]/g), i;
// if there is native HTML5 support:
if( field.valueAsNumber )
return true;
return true
},
if( data.pattern ){
if( data.pattern == 'alphanumeric' &&
!this.settings.regex.alphanumeric.test(data.value) )
return this.texts.invalid;
}
return true
},
return this.texts.checked
}
},
/**
* bind events on form elements
* @param {Array/String} types [description]
* @param {Object} formElm [optional - form element, if one
is not already defined on the instance]
* @return {[type]} [description]
*/
events : function( types, formElm ){
var that = this;
/**
* Marks an field as invalid
* @param {DOM Object} field
param {
* @ String} text
* @ return { String} - useless string (should be the DOM node added
for warning)
*/
mark : function( f ield, text ){
if( !text || !field )
return false;
// check if not already marked as 'bad' and add the 'alert'
object.
// if already is marked as 'bad', then make sure the text is
set again because i might change depending on validation
var item = this.closest(field, '.' +
this.settings.classes.item) || field,
alert =
item.querySelector('.'+this.settings.classes.alert),
warning;
if( this.settings.alerts ){
if( alert )
alert.innerHTML = text;
else{
warning = '<div class="'+ this.settings.classes.alert
+'">' + text + '</div>';
item.insertAdjacentHTML('beforeend', warning);
}
}
item.classList.remove(this.settings.classes.bad);
return warning;
},
if( !field ){
console.warn('no "field" argument, null or DOM object not
found');
return false;
}
if( fieldWrap ){
arning = fieldWrap.querySelector('.'+
w
this.settings.classes.alert);
fieldWrap.classList.remove(this.settings.classes.bad);
}
if( warning )
warning.parentNode.removeChild(warning);
},
/**
* removes unmarks all fields
* @return {[type]} [description]
*/
reset : f
unction( formElm ){
var f ieldsToCheck,
that = this;
fieldsToCheck.forEach(function(elm){
that.unmark(elm);
});
},
/**
* Normalize types if needed & return the results of the test (per
field)
* @param {String} type [form field type]
param {
* @ *} value
* @ return { Boolean} - validation test result
*/
testByType : function( field, data ){
data = this.extend({}, data); // clone the data
return this.data[id];
},
/**
* Find the closeset element, by selector
param
* @ {Object} e l [DOM node]
* @ param {String} s elector [CSS-valid selector]
* @return {Object} [Found element or null if not found]
*/
closest : function(el, selector){
var matchesFn;
['matches','webkitMatchesSelector','mozMatchesSelector','msMatchesSelector
','oMatchesSelector'].some(function(fn){
if( typeof document.body[fn] == 'function' ){
matchesFn = fn;
return true;
}
return false;
})
el = el.parentElement
}
return null;
},
/**
* MDN polyfill for Object.assign
*/
extend : function( target, varArgs ){
if( !target )
throw new TypeError('Cannot convert undefined or null to
object');
return to;
},
var linkedTo,
testResult,
optional = field.className.indexOf('optional') != -1,
data = this.prepareFieldData( field ),
orm = this.closest(field, 'form'); // if the field is
f
part of a form, then cache it
if( !silent )
this[data.valid ? "unmark" : "mark"]( field, testResult );
// mark / unmark the field
return {
valid : data.valid,
error : data.valid === true ? "" : testResult
};
},
/**
* Only allow certain form elements which are actual inputs to be
validated
param {
* @ HTMLCollection} form fields Array [description]
* @ return { Array} [description]
*/
filterFormElements : function( fields ){
var i,
fieldsToCheck = [];
return fieldsToCheck;
},
fieldsToCheck.forEach(function(elm, i){
var fieldData = that.checkField(elm);
result.fields.push({
field : elm,
error : fieldData.error,
valid : !!fieldData.valid
})
});
return result;
}
}
return FormValidator;
}));