I need help on my sign up page. I made an alert for the users to see that all the fields are required . My problem is every time I click OK on the alert it redirects to signupMysql.php which is a blank page. Want I want is for it to stay on signup.php as long as some as the fields are not plete.
I think the action has something to do with my problem.
Here is my signup.php
<form class="register-form" action="signupMysql.php" method="post">
<p class="message">Don't have an account?</p>
<input type="text" placeholder="Username" name="username">
<input type="text" placeholder="Last Name" name="lastname">
<input type="text" placeholder="First Name" name="firstname">
<input type="text" placeholder="Contact Number" name="contactnum">
<input type="text" placeholder="Email address" name="email">
<input type="password" placeholder="Password" name="password">
<input type="password" placeholder="Re-enter Password" name="repassword">
<input type="Submit" value="Sign Up">
</form>
some of the codes of my signupMysql.php
if (empty($username) || empty ($lastname) || empty($firstname) ||
empty($contactnumber) || empty($email)
|| empty ($password) || empty ($repassword)){
$message = "Fill all fields";
echo "<script type='text/javascript'>alert('$message');</script>";
}
I hope someone could help me. Thank you so much in advance.
I need help on my sign up page. I made an alert for the users to see that all the fields are required . My problem is every time I click OK on the alert it redirects to signupMysql.php which is a blank page. Want I want is for it to stay on signup.php as long as some as the fields are not plete.
I think the action has something to do with my problem.
Here is my signup.php
<form class="register-form" action="signupMysql.php" method="post">
<p class="message">Don't have an account?</p>
<input type="text" placeholder="Username" name="username">
<input type="text" placeholder="Last Name" name="lastname">
<input type="text" placeholder="First Name" name="firstname">
<input type="text" placeholder="Contact Number" name="contactnum">
<input type="text" placeholder="Email address" name="email">
<input type="password" placeholder="Password" name="password">
<input type="password" placeholder="Re-enter Password" name="repassword">
<input type="Submit" value="Sign Up">
</form>
some of the codes of my signupMysql.php
if (empty($username) || empty ($lastname) || empty($firstname) ||
empty($contactnumber) || empty($email)
|| empty ($password) || empty ($repassword)){
$message = "Fill all fields";
echo "<script type='text/javascript'>alert('$message');</script>";
}
I hope someone could help me. Thank you so much in advance.
Share Improve this question edited Apr 28, 2017 at 12:08 Shadow 34.3k10 gold badges65 silver badges75 bronze badges asked Apr 28, 2017 at 12:02 Roxainne Nicodemus CruzRoxainne Nicodemus Cruz 131 silver badge2 bronze badges 3-
Where is that
alert('ok')
code ? – Suresh Commented Apr 28, 2017 at 12:08 - for this you should do jquery form validation – krishn Patel Commented Apr 28, 2017 at 12:11
- put your signupMysql.php code into your signup.php. Then redirect when all fileds are valid... – Jonas Wilms Commented Apr 28, 2017 at 12:26
6 Answers
Reset to default 3In the forms, try to add the required
attribute. For example;
<input type="text" placeholder="Username" name="username" required/>
This will prevent users from submitting empty values.
Also, alert()
will not stop them as it just displays information and does not do anything else
Please add one more statement after echo in signupMysql.php
header("location:signup.php");
If you strictly want the validation to be done through PHP then you can use this code. Also if you want it to be done before the form is actually submitted you can use the code given by Douglas Hosea.
Hope it helps! All the best!
Your problem is that your form is submitting and you are being taken to the next page where you have your validation. If you don't want the user to leave the page when the form is not plete, you will need some form validation in the browser using JavaScript and/or HTML5.
You can stop the form from submitting using JavaScript: How to prevent form from being submitted?
Or you can look into HTML5 form validation and the "required" attribute: Required attribute HTML5 https://www.w3schools./tags/att_input_required.asp
Try below code its what you want.
if (empty($username) || empty ($lastname) || empty($firstname) ||
empty($contactnumber) || empty($email)
|| empty ($password) || empty ($repassword))
{
$_SESSION['messege'] = "Fill all fields";
header("location:signup.php");
}
In your signup.php
<?php if(isset($_SESSION['messege']) && $_SESSION['messege'] != ''){
echo "<script type='text/javascript'>alert('$_SESSION['messege']');</script>";
}?>
You can validate form before posting to server.
Form "submit" event can be handled by javascript (you can google how to do it with jquery)
here is the solution without any libs (add this code right after the form):
<script>
document.getElementsByTagName('form')[0].addEventListener('submit', function(evt){
if(document.getElementsByName("email")[0].value == "") {
alert("You forgot to enter email!");
evt.preventDefault();
}
/// .... put other checks here
})
</script>
Note: evt.preventDefault() will prevent your form from posting
I think you need something like this:
<form class="register-form" id="myform" action="signupMysql.php" method="post">
...
<input type="button" onclick="subme()" value="Submit Form">
</form>
for the javascript code:
function subme(){
var inputs = document.getElementsByTagName('input');
for (var i = 0; i < inputs.length; i += 1) {
if(inputs[i].value == ''){
alert("All field must be filled")
exit()
}
}
document.getElementById("myForm").submit()
}