I am a very big noob when it comes to php but i cannot get this form to work. When its uploaded to the server, i test it but get "Error 405 Method Not Allowed
The requested method POST is not allowed for URL /" if anyone can give me help on this or any advice i will be very gratefull. and sorry if im being stupid you welcome to slap me in the face.๐
form.html<body>
<div id="wrapper">
<div id="header"></div>
<div id="navbar"><a href="index.html">Home</a> <a href="form.html">Contact us</a></div>
<div id="content">
<form method="post" enctype="multipart/form-data" action="process.php"> <p><label>Name:<br /> <input type="text" name="name" class="textfield" value="" /> </label></p> <p><label>Email: <br /> <input type="text" name="email" class="textfield" value="" /> </label></p> <p><label>Message: <br /> <textarea name="message" class="textarea" cols="45" rows="5"></textarea> </label></p> <p><input type="submit" name="submit" class="button" value="Submit" />
<input name="reset" type="reset" class="button" id="reset" value="Reset" />
</p>
</form>
</div>
<div id="footer"></div>
</div>
</body>
Process.php
<?php
define("EMAIL", "myemail@mail");
if(isset($_POST['submit'])) {
include('validate.class.php');
//assign post data to variables
$name = trim($POST['name']);
$email = trim($POST['email']);
$message = trim($_POST['message']);
//start validating our form
$v = new validate();
$v->validateStr($name, "name", 3, 75);
$v->validateEmail($email, "email");
$v->validateStr($message, "message", 5, 1000);
if(!$v->hasErrors()) {
$header = "From: $email\n" . "Reply-To: $email\n";
$subject = "Contact Form Subject";
$email_to = EMAIL;
$emailMessage = "Name: " . $name . "\n";
$emailMessage .= "Email: " . $email . "\n\n";
$emailMessage .= $message;
//use php's mail function to send the email
@mail($email_to, $subject ,$emailMessage ,$header );
//grab the current url, append ?sent=yes to it and then redirect to that url
$url = "http". ((!empty($SERVER['HTTPS'])) ? "s" : "") . "://".$SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
header('Location: '.$url."?sent=yes");
} else {
//set the number of errors message
$message_text = $v->errorNumMessage();
//store the errors list in a variable
$errors = $v->displayErrors();
//get the individual error messages
$nameErr = $v->getError("name");
$emailErr = $v->getError("email");
$messageErr = $v->getError("message");
}//end error check
}// end isset
header("Location: success.html");
?>
Validate.php
<?php class validate {
public $errors = array();
public function validateStr($postVal, $postName, $min = 5, $max = 500) {
if(strlen($postVal) < intval($min)) {
$this->setError($postName, ucfirst($postName)." must be at least {$min} characters long.");
} else if(strlen($postVal) > intval($max)) {
$this->setError($postName, ucfirst($postName)." must be less than {$max} characters long.");
}
}
public function validateEmail($emailVal, $emailName) {
if(strlen($emailVal) <= 0) {
$this->setError($emailName, "Please enter an Email Address");
} else if (!preg_match('/[0-9][a-zA-Z0-9]+([.][a-zA-Z0-9]+)[@][a-zA-Z0-9]+([.][a-zA-Z0-9]+)[.][a-zA-Z]{2,4}$/', $emailVal)) {
$this->setError($emailName, "Please enter a Valid Email Address");
}
}
private function setError($element, $message) {
$this->errors[$element] = $message;
}
public function getError($elementName) {
if($this->errors[$elementName]) {
return $this->errors[$elementName];
} else {
return false;
}
}
public function displayErrors() {
$errorsList = "<ul class=\"errors\">\n";
foreach($this->errors as $value) {
$errorsList .= "<li>". $value . "</li>\n";
}
$errorsList .= "</ul>\n";
return $errorsList;
}
public function hasErrors() {
if(count($this->errors) > 0) {
return true;
} else {
return false;
}
}public function errorNumMessage() {
if(count($this->errors) > 1) {
$message = "There were " . count($this->errors) . " errors sending your message!\n";
} else {
$message = "There was an error sending your message!\n";
} return $message;
}
}