Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 13 odgovora
  • 6.652 pregleda

Najnovija ↓

php validacija forme pomoc 10.11.2015. u 22:04 · pre 133 meseca #1
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;
}
Re: php validacija forme pomoc 10.11.2015. u 22:33 · pre 133 meseca #2
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
Potpis
http://norway.dakipro.com/
Sviđa mi se1
Re: php validacija forme pomoc 10.11.2015. u 23:14 · pre 133 meseca #3
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
Re: php validacija forme pomoc 11.11.2015. u 00:19 · pre 133 meseca #5
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?
Re: php validacija forme pomoc 11.11.2015. u 00:47 · pre 133 meseca #6
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.
Re: php validacija forme pomoc 11.11.2015. u 15:40 · pre 133 meseca
izmenjeno 2 puta, poslednji put F4U5T 11.11.2015. u 16:10
  1. F4U5T11.11.2015. u 16:10zapis iz teksta poruke
  2. F4U5T11.11.2015. u 16:07zapis iz teksta poruke
#8
@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>    
Re: php validacija forme pomoc 11.11.2015. u 15:50 · pre 133 meseca #9
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
Potpis
http://norway.dakipro.com/
Re: php validacija forme pomoc 11.11.2015. u 15:55 · pre 133 meseca #10
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
Re: php validacija forme pomoc 11.11.2015. u 17:13 · pre 133 meseca #12
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" }
Re: php validacija forme pomoc 15.11.2015. u 16:51 · pre 133 meseca #14
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 ? */

}

 
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme