Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

php validacija forme pomoc

[es] :: PHP :: PHP za početnike :: php validacija forme pomoc

[ Pregleda: 4740 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

F4U5T

Član broj: 302411
Poruke: 11
*.crnagora.net.



+4 Profil

icon php validacija forme pomoc10.11.2015. u 21:04 - pre 57 meseci
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._%-][email protected][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;
}
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1791
*.bb.online.no.

Sajt: norway.dakipro.com


+190 Profil

icon Re: php validacija forme pomoc10.11.2015. u 21:33 - pre 57 meseci
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
 
Odgovor na temu

F4U5T

Član broj: 302411
Poruke: 11
*.crnagora.net.



+4 Profil

icon Re: php validacija forme pomoc10.11.2015. u 22:14 - pre 57 meseci
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
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1791
*.bb.online.no.

Sajt: norway.dakipro.com


+190 Profil

icon Re: php validacija forme pomoc10.11.2015. u 22:28 - pre 57 meseci
mozda si mislio na
if ($err_name == "" && $err_email == "" && $err_message == "") {


 
Odgovor na temu

F4U5T

Član broj: 302411
Poruke: 11
*.crnagora.net.



+4 Profil

icon Re: php validacija forme pomoc10.11.2015. u 23:19 - pre 57 meseci
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?
 
Odgovor na temu

F4U5T

Član broj: 302411
Poruke: 11
*.crnagora.net.



+4 Profil

icon Re: php validacija forme pomoc10.11.2015. u 23:47 - pre 57 meseci
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.
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1791
*.connect.netcom.no.

Sajt: norway.dakipro.com


+190 Profil

icon Re: php validacija forme pomoc11.11.2015. u 07:00 - pre 57 meseci
Da li ti dobro radi u slucajevima kada je samo jedno od tri polja prazno?
 
Odgovor na temu

F4U5T

Član broj: 302411
Poruke: 11
*.crnagora.net.



+4 Profil

icon Re: php validacija forme pomoc11.11.2015. u 14:40 - pre 57 meseci
@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._%-][email protected][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]
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1791
*.connect.netcom.no.

Sajt: norway.dakipro.com


+190 Profil

icon Re: php validacija forme pomoc11.11.2015. u 14:50 - pre 57 meseci
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
 
Odgovor na temu

F4U5T

Član broj: 302411
Poruke: 11
*.crnagora.net.



+4 Profil

icon Re: php validacija forme pomoc11.11.2015. u 14:55 - pre 57 meseci
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
 
Odgovor na temu

plus_minus

Član broj: 289459
Poruke: 2242
*.dynamic.isp.telekom.rs.

Sajt: https://hardcoder.xyz


+2244 Profil

icon Re: php validacija forme pomoc11.11.2015. u 16:02 - pre 57 meseci
`Dampuj` se odnosi na var_dump.

Code (php):


var_dump($_POST);

 

about:networking
 
Odgovor na temu

F4U5T

Član broj: 302411
Poruke: 11
*.crnagora.net.



+4 Profil

icon Re: php validacija forme pomoc11.11.2015. u 16:13 - pre 57 meseci
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" }
 
Odgovor na temu

F4U5T

Član broj: 302411
Poruke: 11
62.4.57.*



+4 Profil

icon Re: php validacija forme pomoc12.11.2015. u 11:03 - pre 57 meseci
Ne vredi ne znam sta je problem.
 
Odgovor na temu

F4U5T

Član broj: 302411
Poruke: 11
*.crnagora.net.



+4 Profil

icon Re: php validacija forme pomoc15.11.2015. u 15:51 - pre 57 meseci
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._%-][email protected][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 ? */

}

 
 
Odgovor na temu

[es] :: PHP :: PHP za početnike :: php validacija forme pomoc

[ Pregleda: 4740 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.