šđžčć u PHP unosu

2

šđžčć u PHP unosu

offline
  • 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. Mr. Green Ziveli

$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.
offline
  • _Sale  Male
  • Prijatelj foruma
  • Pridružio: 30 Jul 2010
  • Poruke: 13405
  • Gde živiš: Z-moon

"Ime koje ste uneli nije validAno", A je višak.



offline
  • Miloš
  • Pridružio: 23 Maj 2011
  • Poruke: 1069

Springfield ::Evo ga nasao sam. Nema da ne moze sad radi sve kako treba. Mr. Green Ziveli

Mnogoo ti hvala! Mr. Green Ziveli


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);    ?>

offline
  • Pridružio: 15 Jul 2009
  • Poruke: 150

Sugestija... umesto $_POST bezbednije je koristiti nesto kao:
filter_input(INPUT_POST, 'blablabla', FILTER_SANITIZE_STRING);

offline
  • xZero  Male
  • Novi MyCity građanin
  • Aleksandar
  • IT
  • 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); }

offline
  • Miloš
  • Pridružio: 23 Maj 2011
  • Poruke: 1069

Hvala ti xZero! Smile Ziveli

offline
  • xZero  Male
  • Novi MyCity građanin
  • Aleksandar
  • IT
  • 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. Cool

Ko je trenutno na forumu
 

Ukupno su 856 korisnika na forumu :: 6 registrovanih, 0 sakrivenih i 850 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: bigfoot, M1los, milos.cbr, nenad81, wizzardone, zziko