[ F4U5T @ 10.11.2015. 21:04 ] @
Poz,

Napisao sam jedan kod koji proverava validaciju forme i ujedno i salje e-mail. E sad problem je sto se mail salje i ako je prosla validacija i ako nije. Znam da mi nedostaje sad jedan deo koda za to. Ali treba mi pomoc zapeo sam. Pa cu ostaviti ovde ceo kod pa da mi pomogne neko ako moze. Hvala.

Code:


        <?php
include "kontakt.php";
?>

        <form  action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="action" value="submit">
    <div class="name">ime:</div>
    <input name="name" type="text" value="" size="30"/>
    <span><?php echo $err_name;?></span>
    <div class="email">email:</div>
    <input name="email" type="text" value="" size="30"/>
    <span><?php echo $err_email;?></span>
    <div class="message">poruka:</div>
    <textarea name="message" rows="7" cols="30"></textarea><br>
    <span><?php echo $err_message;?></span>
       <input type="submit" name="submit" value="Submit" id="submit"> 
    </form>        
  



A evo i php


Code:
<?php

require './PHPMailer/PHPMailerAutoload.php';

// varijable
$err_name = $err_email = $err_message = $err_forma = "";

// Konfiguracija PHPMailer-a

$mailer = new PHPMailer;
 $error_message = "";
try {
    if (isset($_POST['submit'])) {
        
        $name    = isset($_POST['ime']) ? $_POST['ime'] : FALSE;
        $email   = isset($_POST['email']) ? $_POST['email'] : FALSE;
        $message = isset($_POST['message']) ? $_POST['message'] : FALSE;
        
        
        $mailer->From     = $email; // Email posaljioca
        $mailer->FromName = "Nova Porudzbina"; // Ime Posaljioca
        $mailer->AddAddress("[email protected]"); //adresa na koju se salje
        $mailer->isHTML(TRUE); // set email format to HTML
        $mailer->WordWrap = 50; // set word wrap to 50 characters
        $mailer->CharSet = "utf-8"; //"ukljucuje" cirlicna slova, kao i latinicna sa kvacicama
        
        
        $mailer->Subject = 'zahtev za podršku: ' . $naziv_servera;
        
        
        if ($_SERVER["REQUEST_METHOD"] == "POST") {
            
            $name     = test_input($_POST["name"]);
            $name_exp = "/^[A-Za-z\p{L} .'-]{2,40}+$/u"; // Dozvoljava naša slova i ograničava da najmanje može 2 a najviše 40 karaktera
            
            if (!preg_match($name_exp, $name)) {
                $err_name .= 'Vaše ime nije validno.';
                
            }
            
            
            $email     = test_input($_POST["email"]);
            $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
            
            if (!preg_match($email_exp, $email)) {
                
                $err_email .= 'Vaša e-mail adresa nije validna.';
            }
            
            $message     = test_input($_POST["message"]);
            $message_exp = "/^[A-Za-z\p{L} .'-]{2,400}+$/u";
            
            if (!preg_match($message_exp, $message)) {
                
                $err_message .= 'Vaša poruka nije validna.';
            }
            
             /*

OVDE SAD TREBA NEKI KOD KOJI CE DA STOPIRA SLANJE AKO IMA NEKA GRESKA.

*/
 
  }
        }
        
        
        
        
        
        
        // Body
        
        $body = "<h2 style='background: red; color: #fff;'>Nova Porudzbina</h2>";
        $body .= "<b>Ime i Prezime:</b>" . $name . "<br>";
        $body .= "<b>Email:</b>" . $email . "<br>";
        $body .= "<b>Poruka:</b>" . $message . "<br>";
        
        $mailer->Body = $body;
        
        // Posalji
        $mailer->send();
        
        echo "Vasa porudzbina je uspesno poslata. Hvala";
        
    }
}
catch (phpmailerException $ex) {
    echo $ex->errorMessage();
}
catch (Exception $ex) {
    echo $ex->getMessage();
}

function test_input($data)
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
[ dakipro @ 10.11.2015. 21:33 ] @
Napravi jednu promenjivu u kojoj ces da brojis koliko gresaka ima, i posle samo proveris da li je broj gresaka jednak ili veci od nule. Ako je veci, preskocis slanje i prikazes gresku/uradis redirekciju
[ F4U5T @ 10.11.2015. 22:14 ] @
Dosao sam na ideju da stavim ovako:

Code:

if ($err_name&&$err_email&&$err_message  == "") { $mailer->send(); } // ako nema nikakve greske - pošalji e-mail


umesto:

Code:
$mailer->send();



Ali ne funkcionise. Posto imam tri error greske, funkcionise kada stavim samo jednu ali moram sve tri ubaciti. hmm
[ dakipro @ 10.11.2015. 22:28 ] @
mozda si mislio na
if ($err_name == "" && $err_email == "" && $err_message == "") {

[ F4U5T @ 10.11.2015. 23:19 ] @
Hvala daki radi. Malo sam nasminkao:

Code:
        // Posalji
        if (strlen($err_name == "" && $err_email == "" && $err_message == "")) {
            $mailer->send(); // ako nema nikakve greške - pošalji e-mail
            $uspesno .= 'Vasa poruka je poslata';
        }



Treba mi jos jedna pomoc. Kada recimo unesem dva polja tacno a trece netacno i idem na submit. Obrisu mi se sva polja. Kako da sredim da polja koja su tacna da se ne brisu posle submit nego da ostanu popunjena?
[ F4U5T @ 10.11.2015. 23:47 ] @
Snasao sam se:

Dodao sam nove varijable:

Code:
$name = $email = $message  = "";



zatim u html kodu dodao za svako polje:

Code:
value="<?php echo $name;?>" 


i resio problem.
[ dakipro @ 11.11.2015. 07:00 ] @
Da li ti dobro radi u slucajevima kada je samo jedno od tri polja prazno?
[ F4U5T @ 11.11.2015. 14:40 ] @
@dakipro

Da radi sasvim super. Ali imam jedan novi problem pa ako moze pomoc.

naime dodao sam i cetvrto polje "Antispam provera" i problemi su vezani samo za to.

Imam 2 problema.

I. problem: email se salje samo ako je antispam odgovor prazan inace u svim drugim slucajevima pokazuje da je pogresan odgovor cak i ako napisem tacan odgovor on ispise da je pogresan. Znaci ne radi ono sto sam mislio da ce da radi.

II. problem: Posle submita (ako je odgovor tacan) pamti mi samo odgovor a u pitanja generise nove brojeve. E to bi trebalo srediti da ako je odgovor tacan ne generise nove brojeve.

Evo citavog koda:

Code (php):
<?php

require './PHPMailer/PHPMailerAutoload.php';

// varijable
$err_name = $err_email = $err_message = $err_forma = $uspesno = $captcha = "";
$name = $email = $message  = $user_result = $arg_1 = $arg_2 ="";


// Konfiguracija PHPMailer-a

$mailer = new PHPMailer;
try {
    if (isset($_POST['submit'])) {
       
        $name    = isset($_POST['ime']) ? $_POST['ime'] : FALSE;
        $email   = isset($_POST['email']) ? $_POST['email'] : FALSE;
        $message = isset($_POST['message']) ? $_POST['message'] : FALSE;
          $user_result = isset($_POST['result']) ? $_POST['result'] : FALSE;
          $arg_1 = isset($_POST['arg_one']) ? $_POST['arg_one'] : FALSE;
          $arg_2 = isset($_POST['arg_two']) ? $_POST['arg_two'] : FALSE;
       
       
        $mailer->From     = $email; // Email posaljioca
        $mailer->FromName = "Nova Porudzbina"; // Ime Posaljioca
        $mailer->AddAddress("[email protected]"); //adresa na koju se salje
        $mailer->isHTML(TRUE); // set email format to HTML
        $mailer->WordWrap = 50; // set word wrap to 50 characters
        $mailer->CharSet  = "utf-8"; //"ukljucuje" cirlicna slova, kao i latinicna sa kvacicama
       
       
        $mailer->Subject = 'zahtev za podršku: ' . $naziv_servera;
       
       
        if ($_SERVER["REQUEST_METHOD"] == "POST") {
           
            $name     = test_input($_POST["name"]);
            $name_exp = "/^[A-Za-z\p{L} .'-]{2,40}+$/u"; // Dozvoljava naša slova i ograničava da najmanje može 2 a najviše 40 karaktera
           
            if (!preg_match($name_exp, $name)) {
                $err_name .= 'Vaše ime nije validno.';

               
            }
           
           
            $email     = test_input($_POST["email"]);
            $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
           
            if (!preg_match($email_exp, $email)) {
               
                $err_email .= 'Vaša e-mail adresa nije validna.';

            }
           
            $message     = test_input($_POST["message"]);
            $message_exp = "/^[A-Za-z\p{L} .'-]{2,400}+$/u";
           
            if (!preg_match($message_exp, $message)) {
               
                $err_message .= 'Vaša poruka nije validna.';
          }
         
          $user_result     = test_input($_POST["result"]);
         
          if($total <> $user_result) {
          $captcha .= 'Anti-spam odgovor koji ste uneli nije tačan.';
          }
        }
     
       
        // Body
       
        $body = "<h2 style='background: red; color: #fff;'>Nova Porudzbina</h2>";
        $body .= "<b>Ime i Prezime:</b>" . $name . "<br>";
        $body .= "<b>Email:</b>" . $email . "<br>";
        $body .= "<b>Poruka:</b>" . $message . "<br>";
       
        $mailer->Body = $body;
       
        // Posalji
          if (strlen($err_name == "" && $err_email == "" && $err_message == "" && $total == $user_result)) {
            $mailer->send(); // ako nema nikakve greške - pošalji e-mail
            $uspesno .= 'Vasa poruka je poslata';
        }
    }
}

catch (phpmailerException $ex) {
    echo $ex->errorMessage();
}
catch (Exception $ex) {
    echo $ex->getMessage();
}

function test_input($data)
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

function generateFieldNumber($min = 1, $max = 3)
{
     return rand(1, 3);
}

function createCaptcha($arg_1 = '', $arg_2 = '', $total = 0)
{
     

     if(isset($_POST['submit'])) {

          $arg_1 = $_POST['arg_one'];
          $arg_2 = $_POST['arg_two'];
          $user_result = $_POST['result'];

          $total = $arg_1 + $arg_2;


     }
}



A evo i HTML

Code (html):
         

<?php
include "send_email.php";
?>

<?php createCaptcha(); ?>

<span><?php echo $uspesno;?></span>
         <form  action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="action" value="submit">
    <div class="name">Ime:</div>
    <input name="name" type="text" value="<?php echo $name;?>" size="30"/>
    <span><?php echo $err_name;?></span>
    <div class="email">Email:</div>
    <input name="email" type="text" value="<?php echo $email;?>" size="30"/>
    <span><?php echo $err_email;?></span>
    <div class="message">Poruka:</div>
    <textarea name="message" rows="7" cols="30"><?php echo $message;?></textarea><br>
    <span><?php echo $err_message;?></span><br><br>
     <label>Izracunaj:</label>
     <input type="text" name="arg_one" value="<?php echo generateFieldNumber();?>"   size="2">
     + <input type="text" name="arg_two" value="<?php echo generateFieldNumber();?>"  size="2">
     = <input type="text" name="result" value="<?php echo $user_result;?>"  size="2">
     <span><?php echo $captcha;?></span><br>
        <input type="submit" name="submit" value="Submit" id="submit">
    </form>    


[Ovu poruku je menjao F4U5T dana 11.11.2015. u 16:07 GMT+1]

[Ovu poruku je menjao F4U5T dana 11.11.2015. u 16:10 GMT+1]
[ dakipro @ 11.11.2015. 14:50 ] @
Mislim da strlen ne treba u if, bar ne u tom formatu. Obriši to i probaj onda.
takodje dampuj promenljive usput da vidis koje su im vrednosti i tako precizno lociras gde je zapelo
[ F4U5T @ 11.11.2015. 14:55 ] @
uklonio sam strlen to sam greskom stavio ne radi ni bez toga.

a za ovo drugo e jbg ne razumem te nisam toliko vest sto bi se reklo pricaj srpski da te ceo svet razume. :D
[ plus_minus @ 11.11.2015. 16:02 ] @
`Dampuj` se odnosi na var_dump.

Code (php):


var_dump($_POST);

 
[ F4U5T @ 11.11.2015. 16:13 ] @
odradio ali nista mi to nije pomoglo. Jer izgleda sve da je ok.

Code (php):
array(8) { ["action"]=> string(6) "submit" ["name"]=> string(5) "Faust" ["email"]=> string(17) "[email protected]" ["message"]=> string(4) "Test" ["arg_one"]=> string(1) "3" ["arg_two"]=> string(1) "2" ["result"]=> string(1) "5" ["submit"]=> string(6) "Submit" }
[ F4U5T @ 12.11.2015. 11:03 ] @
Ne vredi ne znam sta je problem.
[ F4U5T @ 15.11.2015. 15:51 ] @
Resio sam problem I.

E sad ako moze pomoc za problem II ?

Resenje problema I :

Code (php):


<?php

require './PHPMailer/PHPMailerAutoload.php';

// varijable
$err_name = $err_email = $err_message = $err_forma = $uspesno = $captcha = "";
$name = $email = $message  = $user_result = $arg_1 = $arg_2 ="";


// Konfiguracija PHPMailer-a

$mailer = new PHPMailer;
try {
    if (isset($_POST['submit'])) {
       
        $name    = isset($_POST['ime']) ? $_POST['ime'] : FALSE;
        $email   = isset($_POST['email']) ? $_POST['email'] : FALSE;
        $message = isset($_POST['message']) ? $_POST['message'] : FALSE;
          $user_result = isset($_POST['result']) ? $_POST['result'] : FALSE;
          $arg_1 = isset($_POST['arg_one']) ? $_POST['arg_one'] : FALSE;
          $arg_2 = isset($_POST['arg_two']) ? $_POST['arg_two'] : FALSE;
          $total = $arg_1 + $arg_2;
       
       
        $mailer->From     = $email; // Email posaljioca
        $mailer->FromName = "Nova Porudzbina"; // Ime Posaljioca
        $mailer->AddAddress("[email protected]"); //adresa na koju se salje
        $mailer->isHTML(TRUE); // set email format to HTML
        $mailer->WordWrap = 50; // set word wrap to 50 characters
        $mailer->CharSet  = "utf-8"; //"ukljucuje" cirlicna slova, kao i latinicna sa kvacicama
       
       
        $mailer->Subject = 'zahtev za podršku: ' . $naziv_servera;
       
       
        if ($_SERVER["REQUEST_METHOD"] == "POST") {
           
            $name     = test_input($_POST["name"]);
            $name_exp = "/^[A-Za-z\p{L} .'-]{2,40}+$/u"; // Dozvoljava naša slova i ograničava da najmanje može 2 a najviše 40 karaktera
           
            if (!preg_match($name_exp, $name)) {
                $err_name .= 'Vaše ime nije validno.';

               
            }
           
           
            $email     = test_input($_POST["email"]);
            $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
           
            if (!preg_match($email_exp, $email)) {
               
                $err_email .= 'Vaša e-mail adresa nije validna.';

            }
           
            $message     = test_input($_POST["message"]);
            $message_exp = "/^[A-Za-z\p{L} .'-]{2,400}+$/u";
           
            if (!preg_match($message_exp, $message)) {
               
                $err_message .= 'Vaša poruka nije validna.';
          }
         
          $user_result     = test_input($_POST["result"]);
         
          if($total <> $user_result) {
          $captcha .= 'Anti-spam odgovor koji ste uneli nije tačan.';
          }
        }
     
       
        // Body
       
        $body = "<h2 style='background: red; color: #fff;'>Nova Porudzbina</h2>";
        $body .= "<b>Ime i Prezime:</b>" . $name . "<br>";
        $body .= "<b>Email:</b>" . $email . "<br>";
        $body .= "<b>Poruka:</b>" . $message . "<br>";
       
        $mailer->Body = $body;
       
        // Posalji
          if (strlen($err_name == "" && $err_email == "" && $err_message == "" &&  $captcha == "")) {
            $mailer->send(); // ako nema nikakve greške - pošalji e-mail
            $uspesno .= 'Vasa poruka je poslata';
        }
    }
}

catch (phpmailerException $ex) {
    echo $ex->errorMessage();
}
catch (Exception $ex) {
    echo $ex->getMessage();
}

function test_input($data)
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

function generateFieldNumber($min = 1, $max = 3)
{
     return rand(1, 3);
}

function createCaptcha() {
     global $user_result, $arg_1, $arg_2, $total;

     if(isset($_POST['submit'])) {

          $arg_1 = $_POST['arg_one'];
          $arg_2 = $_POST['arg_two'];
          $user_result = $_POST['result'];

          $total = $arg_1 + $arg_2;
           
     }
}

 



A sto se tice problema II mozda nesto u ovom fazonu? samo ne znam sta...

Code (php):


function generateFieldNumber($min = 1, $max = 3)
{
     return rand(1, 3);
    if($captcha == "")

 /*  onda zapamti pitanja ili stopiraj generisanje novih brojeva ? */

}