Kontakt forma ne radi

Poštovanje,
imam problem s kontakt formom koja ne šalje ništa (tj. ništa ne stiže) nakon što se ispune podaci i klikne Šalji. Ovako izgledaju 2 filea koja su zadužena za to (contact.php i kontakt.html):

<?php

if(!$_POST) exit;

// Email address verification, do not edit.
function isEmail($email) {
	return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));
}

if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");

$name     = $_POST['name'];
$email    = $_POST['email'];
$phone   = $_POST['phone'];
$comments = $_POST['comments'];
$verify   = $_POST['verify'];

if(trim($name) == '') {
	echo '<div class="error_message">Oprez! Morate upisati Ime.</div>';
	exit();
} else if(trim($email) == '') {
	echo '<div class="error_message">Oprez! Morate upisati valjanu email adresu.</div>';
	exit();
} else if(trim($phone) == '') {
	echo '<div class="error_message">Oprez! Morate upisati valjani telefonski broj.</div>';
	exit();
} else if(!is_numeric($phone)) {
	echo '<div class="error_message">Oprez! Telefon mora sadržavati samo brojeve.</div>';
	exit();
} else if(!isEmail($email)) {
	echo '<div class="error_message">Oprez! Upisana email adresa ne postoji, probajte ponovno.</div>';
	exit();
}


if(get_magic_quotes_gpc()) {
	$comments = stripslashes($comments);
}


// Configuration option.
// Enter the email address that you want to emails to be sent to.
// Example $address = "[email protected]";

//$address = "[email protected]";
$address = "[email protected]";


// Configuration option.
// i.e. The standard subject will appear as, "You've been contacted by John Doe."

// Example, $e_subject = '$name . ' has contacted you via Your Website.';

$e_subject = 'Kontaktirani ste od strane klijenta sa stranice , klijent: ' . $name . '.';


// Configuration option.
// You can change this if you feel that you need to.
// Developers, you may wish to add more fields to the form, in which case you must be sure to add them here.

$e_body = "Bili ste kontaktirani od strane $name s porukom koja slijedi u nastavku." . PHP_EOL . PHP_EOL;
$e_content = "\"$comments\"" . PHP_EOL . PHP_EOL;
$e_reply = "Možete kontaktirati  $name preko maila, $email ili putem telefona
 $phone";

$msg = wordwrap( $e_body . $e_content . $e_reply, 70 );

$headers = "From: $email" . PHP_EOL;
$headers .= "Reply-To: $email" . PHP_EOL;
$headers .= "MIME-Version: 1.0" . PHP_EOL;
$headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL;
$headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;

if(mail($address, $e_subject, $msg, $headers)) {

	// Email has sent successfully, echo a success page.

	echo "<fieldset>";
	echo "<div id='success_page'>";
	echo "<h1>Email je poslan.</h1>";
	echo "<p>Hvala <strong>$name</strong>,  Poruka nam je  poslana.</p>";
	echo "</div>";
	echo "</fieldset>";

} else {

	echo 'ERROR!';

}

a ovo je u html fileu:

<h4>KONTAKT OBRAZAC:<br>
	
 <div id="contact">

    	<form method="post" action="contact.php" name="contactform" id="contactform">

		<fieldset>

		

		<label for="name" accesskey="U"><span class="required">*</span> ime </label>
		<input name="name" type="text" id="name" size="30" value="" />

		<br />
		<label for="email" accesskey="E"><span class="required">*</span> email</label>
		<input name="email" type="text" id="email" size="30" value="" />

		<br />
		<label for="phone" accesskey="P"><span class="required">*</span> telefon </label>
		<input name="phone" type="text" id="phone" size="30" value="" />

		<br />
		

	
		<label for="comments" accesskey="C"><span class="required">*</span> upit </label>
		<textarea name="comments" cols="40" rows="2" id="comments" style="width: 320px;"></textarea>
		<br/>
		

		<input type="submit" class="submit" id="submit" value="Submit" />

		</fieldset>

		</form>     
 </div>

Znate li u čemu bi možda mogao biti problem (ne znam PHP, a u HTML-u se snalazim) ?

echo "<fieldset>";
echo "<div id='success_page'>";
echo "<h1>Email je poslan.</h1>";
echo "<p>Hvala <strong>$name</strong>,  Poruka nam je  poslana.</p>";
echo "</div>";
echo "</fieldset>";

A ovo se ispiše?

Ispiše se poruka da je mail poslan, samo ništa ne dođe.

Shared hosting ili VPS dedicated?

Reseller account na Godaddyju (nisam od početka uključen u sve, ali mi je poprilično bitno da radi). Provjerio sam 3 različite web stranice s tom formom, na nijednoj ne radi (stavljao bih svoju adresu tamo kod $address). Sve tri stranice su na jednom Godaddy accountu.

Vidi ovu stranicu. Ima masa savjeta i prijedloga. Možda je više problematika za sysadmin-a nego developer-a jer kod na prvu djeluje ok. Ali na toj SO strani ima savjeta šta i na serveru pogledati/uočiti.

1 Like

Ako ti slanje maila radi na tvoj host, a na gmail ne onda probaj s ovim se poigrat.

Pokušaj poslati bez headersa.

if(mail($address, $e_subject, $msg))

Meni je header u mail funkciji zadavao iste probleme, od tada koristim phpmailer klasu (na koju je @wampir postavio link)

Nije pomoglo ni micanje headera (a probao sam za mail adresu da šalje na net.hr mail, na gmail i yahoo).

Jesi li pogledao u spam tih mail servisa na koje si šalješ email? Da nije u spam otišlo?

Gledao sam spam, nije tamo. Izgleda da je problem u Godaddyju. Moguće da se ova kontakt forma radila pomoću njihovog servisa/stranice, i sad ne radi na nijednoj statičnoj stranici na ovom Godaddy accountu. I drugi ljudi su se žalili, a podrška iz Godaddyja ne daje uvijek ista rješenja.

Razmišljam da ovaj vikend uploadam ova dva filea na svoj hosting (nije Godaddy) i probam poslati mail?

Hvala svima na savjetima. Ako znate neku drugu kontakt forum (neki jednostavni php file i html kod), svakako postavite pa ću promijeniti ovo postojeće.

Ovo će ti se dešavat na bilo kojem hostu ako npr.
Želiš poslat email na gmail. Gmail zahtjeva autentičnost tvog accounta. Što znači trebaš potvrditi da si to ti. Za to ti treba SMTP protokol, tvoj email i password i onda će ti ovo raditi.

PHPMailer ti rješava tu situaciju. Vjeruj mi bez ova 3 parametra što sam ti napisao nećeš uspit.

1 Like