Reputation: 463
I want to remember the value of a specific input after the submit button is clicked? Purpose is if during the user registers an account and encounters errors like email exist or password do not match i want to retain the values like name, age and etc. as of the moment here's my code, what should I do? Any help or suggestion? thanks
<?php
session_start();
$errflag = false;
$errmsg = array();
if(isset($_SESSION['errmsg'])&&is_array($_SESSION['errmsg'])&&count($_SESSION['errmsg'])>0){
foreach($_SESSION['errmsg'] as $msg){
echo $msg;
}
unset($_SESSION['errmsg']);
}
?>
<form method="post">
<table>
<tr>
<td>Last Name:</td><td><input id="txtfield" type="text" name="lname" autofocus="autofocus" required="required"></td>
</tr>
<tr>
<td>First Name:</td><td><input id="txtfield" type="text" name="fname" required="required"></td>
</tr>
<tr>
<td>E-mail:</td><td><input id="txtfield" type="email" name="email" required="required"></td>
</tr>
<tr>
<td>Password:</td><td><input id="txtfield" type="password" name="pass" pattern=".{6,}" required="required"></td>
</tr>
<tr>
<td>Re-type:</td><td><input id="txtfield" type="password" name="rpass" pattern=".{6,}" required="required"></td>
</tr>
<tr>
<td></td><td><input id="btn" type="submit" name="register" value="Register"></td>
</tr>
</table>
</form>
<?php
include 'functions/functions.php';
if(isset($_POST['register'])){
$result=ValidateEmail($_POST['email']);
if($result){
$errmsg[] = '<p id="error"><img src="img/error.png" alt="error">This email address is already in use.</p>';
$errflag = true;
}
if($_POST['pass']!=$_POST['rpass']){
$errmsg[] = '<p id="error"><img src="img/error.png" alt="error">Passwords does not match.</p>';
$errflag = true;
}
if($errflag){
session_regenerate_id();
$_SESSION['errmsg'] = $errmsg;
session_write_close();
$errflag = false;
header('location: register.php');
exit();
}
else {
$user = array('lname'=>$_POST['lname'],'fname'=>$_POST['fname'],'email'=>$_POST['email'],'pass'=>$_POST['pass']);
RegisterUser($user);
session_regenerate_id();
$errmsg[] = '<p id="success"><img src="img/success.png" alt="success">Your account is now active. You may now login.</p>';
$_SESSION['errmsg'] = $errmsg;
session_write_close();
header('location: index.php');
exit();
}
}
?>
Upvotes: 0
Views: 1383
Reputation: 7923
<form method="post">
<input id="txtfield" type="text" name="lname" autofocus="autofocus" required="required" Value=<?php $lname ?>/>
already posts back to the same page. What you can do now is something like:
$lname = ""; //and all the other fields
$fname = "";
if ($_POST['lname'] == "")
{
$fname = $_POST['fname'];//and all the other fields
//put all the variables back into the form and display an error text
}
else
{
//Lets do the whole form processing and submit here
}
In other words, set all your values for your input fields using variables that are blank. If an error happens, set all those variables to their original value.
Upvotes: 0
Reputation: 1
according to my understanding, you want the submitted variables to appear back again in the form in case of wrong or missing submission.
Replace the HTML code with this, it should do it:
<form method="post">
<table>
<tr>
<td>Last Name:</td><td><input id="txtfield" type="text" name="lname" value="<?=$_POST['lname'];?>" autofocus="autofocus" required="required"></td>
</tr>
<tr>
<td>First Name:</td><td><input id="txtfield" type="text" name="fname" value="<?=$_POST['fname'];?>" required="required"></td>
</tr>
<tr>
<td>E-mail:</td><td><input id="txtfield" type="email" name="email" value="<?=$_POST['email'];?>" required="required"></td>
</tr>
<tr>
<td>Password:</td><td><input id="txtfield" type="password" name="pass" pattern=".{6,}" required="required"></td>
</tr>
<tr>
<td>Re-type:</td><td><input id="txtfield" type="password" name="rpass" pattern=".{6,}" required="required"></td>
</tr>
<tr>
<td></td><td><input id="btn" type="submit" name="register" value="Register"></td>
</tr>
</table>
</form>
Upvotes: 0
Reputation: 12840
Use ajax/ javascript to check if password do not match or username already exists. That way you would be querying database without actually changing the page.
So you have the fields filled remain there. Here's small example at w3schools
Upvotes: 1