Poslao: 08 Nov 2015 15:09
|
offline
- Springfield
- Moderator foruma
- 100%Milanista
- Information Technology
- Pridružio: 23 Avg 2008
- Poruke: 2634
- Gde živiš: Milan, Italy
|
Evo ga nasao sam. Nema da ne moze sad radi sve kako treba.
$string_exp = "/^[A-Za-z\p{L} .'-]+$/u";
if(!preg_match($string_exp,$first_name)) {
$error_message .= '<p>Ime koje ste unijeli nije validano.</p>';
}
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 08 Nov 2015 15:45
|
offline
- _Sale
- Prijatelj foruma
- Pridružio: 30 Jul 2010
- Poruke: 13405
- Gde živiš: Z-moon
|
"Ime koje ste uneli nije validAno", A je višak.
|
|
|
|
Poslao: 08 Nov 2015 16:14
|
offline
- Miloš CG
- Super građanin
- Pridružio: 23 Maj 2011
- Poruke: 1069
|
Springfield ::Evo ga nasao sam. Nema da ne moze sad radi sve kako treba.
Mnogoo ti hvala!
Imam još jedan problem, u pitanju je ista PHP skripta, samo kompletna. Pošto imam HTML kontakt formu, u form action="" upisijem putanju do PHP fajla sa PHP skriptom. To ispada ovako:
<form name="contactform" method="post" action="kontakt_poruka.php">
I kad se klikne dugme za slanje stranica se preusmjeri na kontakt_poruka.php što meni nije odgovaralo. Onda sam iz action="" makao putanju do kontakt_poruka.php fajla i PHP kod prebacio u fajl gdje je kontakt HTML forma i onda se poruka greške ili uspješnosti pojavljivala ispod forme za unos.
Kada je unos u sva polja dobar, ispod se pojavi poruka da je sve u redu i to je okej. Ali, ako skripta prepozna grešku, nijedan HTML elemenat posle te skripte neće da se prikaže. Stranica se prekine posle skirpte i bukvalno donji dio sajta više ne postoji.
Evo ga cijeli PHP kod:
<?php
if(isset($_POST['email'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "##########";
$email_subject = "######### ";
function died($error) {
echo $error."<br /><br />";
die();
}
// validation expected data exists
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['telephone']) ||
!isset($_POST['comments'])) {
died('<p>Došlo je do greške zbog podataka koje ste unijeli. Pokušajte ponovo.</p>');
}
$first_name = $_POST['first_name']; // required
$last_name = $_POST['last_name']; // required
$email_from = $_POST['email']; // required
$telephone = $_POST['telephone']; // not required
$comments = $_POST['comments']; // required
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email_from)) {
$error_message .= '<p>Email koji ste unijeli nije validan.</p>';
}
$string_exp = "/^[A-Za-z\p{L} .'-]+$/u";
if(!preg_match($string_exp,$first_name)) {
$error_message .= '<p>Ime koje ste unijeli nije validano.</p>';
}
if(!preg_match($string_exp,$last_name)) {
$error_message .= 'Prezime koje ste unijeli nije validano.<br />';
}
if(strlen($comments) < 2) {
$error_message .= '<p>Poruka koju ste unijeli nije validana.</p>';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Detalji poruke su ispod:\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Ime: ".clean_string($first_name)."\n";
$email_message .= "Prezime: ".clean_string($last_name)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Telefon: ".clean_string($telephone)."\n";
$email_message .= "Poruka: ".clean_string($comments)."\n";
// create email headers
$headers = 'Od: '.$email_from."\r\n".
'Odgovori: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
|
|
|
|
Poslao: 24 Nov 2015 19:36
|
offline
- savan2
- Građanin
- Pridružio: 15 Jul 2009
- Poruke: 150
|
Sugestija... umesto $_POST bezbednije je koristiti nesto kao:
filter_input(INPUT_POST, 'blablabla', FILTER_SANITIZE_STRING);
|
|
|
|
Poslao: 19 Jun 2016 20:43
|
offline
- xZero
- Novi MyCity građanin
- Pridružio: 19 Jun 2016
- Poruke: 8
|
Napisano: 19 Jun 2016 20:41
Na liniji 21 imas die () sto se koristi da prekine skriptu. Na taj način sve ispod toga nikada ni ne dođe na red. Neznam zasto uopste koristis custom died funkciju kada je npr die ("<p>Greska!</p>"); sasvim dovoljno a ima istu funcionalnost. Uzeću vremena pa cu ti preurediti da radi kako očekuješ.
Dopuna: 19 Jun 2016 21:43
Evo.
<?php
$ERRORS = array();
if (isset($_POST['email'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "##########";
$email_subject = "######### ";
// validation expected data exists
if (!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['telephone']) ||
!isset($_POST['comments'])) {
$ERRORS[] = '<p>Došlo je do greške zbog podataka koje ste unijeli. Pokušajte ponovo.</p>';
} else {
$first_name = $_POST['first_name']; // required
$last_name = $_POST['last_name']; // required
$email_from = $_POST['email']; // required
$telephone = filter_var($_POST['telephone'], FILTER_SANITIZE_STRING); // not required
$comments = filter_var($_POST['comments'], FILTER_SANITIZE_EMAIL); // required
/** Zasto ovo?
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
* preg_match($email_exp, $email_from)
*/
$string_exp = "/^[A-Za-z\p{L} .'-]+$/u";
if (!preg_match($string_exp, $first_name)) {
$ERRORS[] = '<p>Ime koje ste unijeli nije validano.</p>';
}
if (!preg_match($string_exp, $last_name)) {
$ERRORS[] = 'Prezime koje ste unijeli nije validano.<br />';
}
if (strlen($comments) < 2) {
$ERRORS[] = '<p>Poruka koju ste unijeli nije validana.</p>';
}
function clean_string($string, $bad = array("content-type", "bcc:", "to:", "cc:", "href")) {
return str_replace($bad, "", $string);
}
if (filter_var($email_from, FILTER_VALIDATE_EMAIL) && count($ERRORS) === 0) {
$email_message = array(
"Detalji poruke su ispod:\n",
"Ime: " . clean_string($first_name),
"Prezime: " . clean_string($last_name),
"Email: " . clean_string($email_from),
"Telefon: " . clean_string($telephone),
"Poruka: " . clean_string($comments)
);
// create email headers
// Headeri ne mogu biti na nasem, osim ako saljes na neki posebno konfigurisan mail server
$headers = array(
'From: ' . $email_from,
'Reply-To: ' . $email_from,
'X-Mailer: PHP/' . phpversion()
);
if (mail($email_to, $email_subject, implode("\n", $email_message), implode("\r\n", $headers))) {
echo "Poruka je uspesno poslana.";
} else {
$ERRORS[] = '<p>Sistemska greska: Poruka nije poslana.</p>';
}
} else {
$ERRORS[] = '<p>Email koji ste unijeli nije validan.</p>';
}
}
}
// Pokazi greske ako ih ima - ovo mozes dodati ispod forme
if (count($ERRORS) > 0) {
echo implode("\n", $ERRORS);
}
|
|
|
|
|
Poslao: 19 Jun 2016 22:06
|
offline
- xZero
- Novi MyCity građanin
- Pridružio: 19 Jun 2016
- Poruke: 8
|
Jos nesto!
Za slanje emailova - umesto koristenja ciste php mail() funkcije, predlozio bi github.com/PHPMailer/PHPMailer klasu koja resava sve migrene glede slanja emailova s PHPom. Lako je i uredno.
|
|
|
|