Reputation: 29
When I fill out the form and click submit button my validation doesn't show or work and it is supposed to show errors if it fails. It just redirects to the same page (index.php), and that's it. Also my custom css doesn't change when I put some changes to the classes. Here is my code:
code structure:
Project
|
+-- includes
| |
| +-- footer.php
| +-- form_process.php
| +-- header.php
+-- public
| |
| +-- main.js
| +-- style.css
+-- vendor
|
+-- composer.json
+-- index.php
style.css
.error
{
color:red;
}
.success
{
color:#ff9966;
text-align:center;
font-weight:bold;
font-size:15px;
}
index.php:
<?php include 'includes/header.php'; ?>
<?php include 'includes/form_process.php'; ?>
<div class="container">
<form id="contact" action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
<h2>Contact</h2>
<div class="form-group">
<input type="text" class="form-control" placeholder="Enter company name:" value="<?php $company_name; ?>" name="company_name">
<span class="error"> <?php $company_name_error; ?> </span>
</div>
<div class="form-group">
<input type="text" class="form-control" placeholder="Enter your name:" value="<?php $user_name; ?>" name="user_name">
<span class="error"> <?php $user_name_error; ?> </span>
</div>
<div class="form-group">
<input type="text" class="form-control" placeholder="Enter your surname:" value="<?php $user_surname; ?>" name="user_surname">
<span class="error"> <?php $user_surname_error; ?> </span>
</div>
<div class="form-group">
<input type="text" class="form-control" placeholder="Enter your email:" value="<?php $email; ?>" name="email">
<span class="error"> <?php $email_error; ?> </span>
</div>
<div class="form-group">
<input type="text" class="form-control" placeholder="Enter your number:" value="<?php $number; ?>" name="number">
<span class="error"> <?php $number_error; ?> </span>
</div>
<div class="form-group">
<textarea type="text" class="form-control" placeholder="Type your message here..." <?php $message; ?> rows="6" name="message"></textarea>
</div>
<div class="form-group">
<button class="btn btn-success" type="submit" name="submit" id="contact-submit">Submit</button>
</div>
<div class="success"> <?php $success; ?> </div>
</form>
</div>
<?php include 'includes/footer.php'; ?>
form_process.php:
<?php
require_once 'vendor/autoload.php';
$company_name_error = $user_name_error = $user_surname_error = $email_error = $number_error = "";
$company_name = $user_name = $user_surname = $email = $number = $message = $success = "";
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["company_name"])) {
$company_name_error = "Company name is required!!!";
} else {
$company_name = test_input($_POST["company_name"]);
if (!preg_match("/^[a-zA-Z ]*$/", $company_name)) {
$company_name_error = "Only letters and white spaces are allowed!!!";
}
}
if (empty($_POST["user_name"])) {
$user_name_error = "User name is required!!!";
} else {
$user_name = test_input($_POST["user_name"]);
if (!preg_match("/^[a-zA-Z ]*$/", $user_name)) {
$user_name_error = "Only letters and white spaces are allowed!!!";
}
}
if (empty($_POST["user_surname"])) {
$user_surname_error = "User surname is required!!!";
} else {
$user_surname = test_input($_POST["user_surname"]);
if (!preg_match("/^[a-zA-Z ]*$/", $user_surname)) {
$user_surname_error = "Only letters and white spaces are allowed!!!";
}
}
if (empty($_POST["email"])) {
$email_error = "Email is required!!!";
} else {
$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$email_error = "Invalid email format!!!";
}
}
if (empty($_POST["number"])) {
$number_error = "Number is required!!!";
} else {
$number = test_input($_POST["number"]);
if (!preg_match("/^[0-9+\-\.\/\(\) ]{6,30}$/", $number)) {
$number_error = "Enter phone number from 6 to 30 characters!!!";
}
}
if (empty($_POST["message"])) {
$message = "";
} else {
$message = test_input($_POST['message']);
}
}
Upvotes: 1
Views: 53
Reputation: 1325
It seems like you never echo
any of the variables in your index.php
Your <?php $number_error; ?>
inside the <span class="error">
for example has either to be <?= $number_error; ?>
or <?php echo $number_error; ?>
Upvotes: 3