[ Labyrinthman @ 18.11.2014. 00:03 ] @
Jel zna neko zasto mi ne radi uslov za registraciju ? Cak i kad unesem lozinku manju od 4 karaktera registracija se ipak dogodi.




Code:

  public function registracija($ime, $prezime, $mesto, $drzava, $email, $lozinka) {

        if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) {
            echo die("<script>alert('E-mail adresa nije validna');</script>");
        }
        $sthandler = $this->connection->prepare('SELECT email FROM korisnik WHERE email=:email');
        $sthandler->bindParam(":email", $email, PDO::PARAM_STR);
        $sthandler->execute();
        if ($sthandler->rowCount() > 0) {

            echo die("<script>alert('E-mail adresa je vec u upotrebi');</script><META HTTP-EQUIV='refresh' CONTENT='2'>");
        } else {


            $sql = "INSERT INTO korisnik VALUES(:ime,:prezime,:mesto,:drzava,:email,:lozinka)";

            $stmt = $this->connection->prepare($sql);
            $stmt->bindParam(":ime", $ime, PDO::PARAM_STR);
            $stmt->bindParam(":prezime", $prezime, PDO::PARAM_STR);
            $stmt->bindParam(":mesto", $mesto, PDO::PARAM_STR);
            $stmt->bindParam(":drzava", $drzava, PDO::PARAM_STR);
            $stmt->bindParam(":email", $email, PDO::PARAM_STR);
            $stmt->bindParam(":lozinka", $lozinka, PDO::PARAM_STR);

            if (strlen($lozinka) < 4) {
                echo die("<script>alert('Lozinka je kraca od 4 karaktera, pokusajte ponovo');</script><META HTTP-EQUIV='refresh' CONTENT='2'>");
            } else {
                $stmt->execute();

                echo "<script>alert('Uspesno izvršena registracija');</script>";
            }
        }
    }

[ Tpojka @ 18.11.2014. 00:35 ] @
Code (php):

public function registracija($ime, $prezime, $mesto, $drzava, $email, $lozinka)
{
        if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) {
            echo die("<script>alert('E-mail adresa nije validna');</script>");
        }
        $sthandler = $this->connection->prepare('SELECT email FROM korisnik WHERE email=:email');
        $sthandler->bindParam(":email", $email, PDO::PARAM_STR);
        $sthandler->execute();
        if ($sthandler->rowCount() > 0) {
            echo die("<script>alert('E-mail adresa je vec u upotrebi');</script><META HTTP-EQUIV='refresh' CONTENT='2'>");
        } elseif ( strlen($lozinka) < 4 ) {
                echo die("<script>alert('Lozinka je kraca od 4 karaktera, pokusajte ponovo');</script><META HTTP-EQUIV='refresh' CONTENT='2'>");
        } else {
            $sql = "INSERT INTO korisnik VALUES(:ime,:prezime,:mesto,:drzava,:email,:lozinka)";

            $stmt = $this->connection->prepare($sql);
            $stmt->bindParam(":ime", $ime, PDO::PARAM_STR);
            $stmt->bindParam(":prezime", $prezime, PDO::PARAM_STR);
            $stmt->bindParam(":mesto", $mesto, PDO::PARAM_STR);
            $stmt->bindParam(":drzava", $drzava, PDO::PARAM_STR);
            $stmt->bindParam(":email", $email, PDO::PARAM_STR);
            $stmt->bindParam(":lozinka", $lozinka, PDO::PARAM_STR);

            $stmt->execute();

            echo "<script>alert('Uspesno izvršena registracija');</script>";
        }
}
 
[ Labyrinthman @ 18.11.2014. 11:39 ] @
Sad mi izbacuje obavestenje da je lozinka kraca od cetiri karaktera iako unesem lozinku koja je daleko duza.
[ Tpojka @ 18.11.2014. 12:41 ] @
Izvinjenje. Ovako bi trebalo. U svakom slucaju je bolje na pocetku provjeriti sve sta moze, a sta ne smije proci izvrsenje.

Code (php):

public function registracija($ime, $prezime, $mesto, $drzava, $email, $lozinka)
{
        if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) {
            echo die("<script>alert('E-mail adresa nije validna');</script>");
        }

        if ( strlen($lozinka) < 4 ) {
                echo die("<script>alert('Lozinka je kraca od 4 karaktera, pokusajte ponovo');</script><META HTTP-EQUIV='refresh' CONTENT='2'>");
        }

        $sthandler = $this->connection->prepare('SELECT email FROM korisnik WHERE email=:email');
        $sthandler->bindParam(":email", $email, PDO::PARAM_STR);
        $sthandler->execute();

        if ($sthandler->rowCount() > 0) {
            echo die("<script>alert('E-mail adresa je vec u upotrebi');</script><META HTTP-EQUIV='refresh' CONTENT='2'>");
        }

        $sql = "INSERT INTO korisnik VALUES(:ime,:prezime,:mesto,:drzava,:email,:lozinka)";

        $stmt = $this->connection->prepare($sql);
        $stmt->bindParam(":ime", $ime, PDO::PARAM_STR);
        $stmt->bindParam(":prezime", $prezime, PDO::PARAM_STR);
        $stmt->bindParam(":mesto", $mesto, PDO::PARAM_STR);
        $stmt->bindParam(":drzava", $drzava, PDO::PARAM_STR);
        $stmt->bindParam(":email", $email, PDO::PARAM_STR);
        $stmt->bindParam(":lozinka", $lozinka, PDO::PARAM_STR);

        $stmt->execute();

        echo "<script>alert('Uspesno izvršena registracija');</script>";

}
 

S tim da ne razumijem ovu echo die() kombinatoriku. Ja bi' tu koristio
Code (php):
echo "<script>alert('Lozinka je kraca od 4 karaktera, pokusajte ponovo');</script><META HTTP-EQUIV='refresh' CONTENT='2'>";
die();
 

ili samo
Code (php):

die("<script>alert('Lozinka je kraca od 4 karaktera, pokusajte ponovo');</script><META HTTP-EQUIV='refresh' CONTENT='2'>");
 
[ Labyrinthman @ 18.11.2014. 13:19 ] @
Opet isti problem imam, registracija se izvrsi ako upisem da lozinka ima jedan karakter.

Sto se tice echo die, to je bio moj ocajnicki potez da prekinem operaciju ukoliko se uslov ne ispostuje jer mi je isto vrsilo registraciju iako izbaci upozorenje da je lozinka prekratka.

Koristio sam oba koda koja si naveo ranije a evo i sad i opet imam isti problem sa uslovom, dakle, vrsi registraciju iako je lozinka prekratka.
[ Tpojka @ 18.11.2014. 13:36 ] @
Sta se desi sad?

Code (php):

public function registracija($ime, $prezime, $mesto, $drzava, $email, $lozinka)
{
        $error = array();
       
        if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) {
            $message = "<script>alert('E-mail adresa nije validna');</script>";
            $error['address'] = true;
        }

        if ( strlen($lozinka) < 4 ) {
            $message = "<script>alert('Lozinka je kraca od 4 karaktera, pokusajte ponovo');</script><META HTTP-EQUIV='refresh' CONTENT='2'>";
            $error['password'] = true;
        }

        $sthandler = $this->connection->prepare('SELECT email FROM korisnik WHERE email=:email');
        $sthandler->bindParam(":email", $email, PDO::PARAM_STR);
        $sthandler->execute();

        if ($sthandler->rowCount() > 0) {
            $message = "<script>alert('E-mail adresa je vec u upotrebi');</script><META HTTP-EQUIV='refresh' CONTENT='2'>";
            $error['duplicate'] = true;
        }

        if (count($error) < 1) {

            $sql = "INSERT INTO korisnik VALUES(:ime,:prezime,:mesto,:drzava,:email,:lozinka)";

            $stmt = $this->connection->prepare($sql);
            $stmt->bindParam(":ime", $ime, PDO::PARAM_STR);
            $stmt->bindParam(":prezime", $prezime, PDO::PARAM_STR);
            $stmt->bindParam(":mesto", $mesto, PDO::PARAM_STR);
            $stmt->bindParam(":drzava", $drzava, PDO::PARAM_STR);
            $stmt->bindParam(":email", $email, PDO::PARAM_STR);
            $stmt->bindParam(":lozinka", $lozinka, PDO::PARAM_STR);

            $stmt->execute();

            echo "<script>alert('Uspesno izvršena registracija');</script>";
        } else {
                echo $message;
        }

}
 
[ Labyrinthman @ 18.11.2014. 14:16 ] @
Opet pise da je uspesno izvrsena registracija i kad upisem manje od 4 karaktera.
[ Labyrinthman @ 18.11.2014. 14:56 ] @
Da nije problem u ovome ?


Code:

<?php
if (isset($_POST['singlebutton'])) {
    require_once '../includes/Korisnik.php';


    $ime = $_POST['ime'];
    $prezime = $_POST["prezime"];
    $mesto = $_POST['mesto'];

    $drzava = $_POST['drzava'];
    $email = $_POST['email'];
    $lozinka = md5($_POST['lozinka']);
    $object = new Korisnik();
    $object->registracija($ime, $prezime, $mesto, $drzava, $email, $lozinka);
}


?>


[ Labyrinthman @ 18.11.2014. 15:27 ] @
Ispada da je problem bio bas u tome sto je lozinka bila md5() pre provere tako da je tu bio problem.