Welcome to our community

Be a part of something great, join today!

Login Forma

riste5

New member
U ovom tutorialu ću vam napisati tutorial kako da napravite login formu a da ta skripta radi i na php7.

Dakle da krenemo.


1 Korak: Kreiranje config fajl gde ćemo se povezivati sa mysql databazom

Code:
<?php 
define('DB_HOST', '[COLOR=#ff0000]localhost[/COLOR]'); // Obratite paznju na ovo, kod nekih hostinga (posebno free web hostinge kao 000webhost), db host nije localhost.
define('DB_USER', '[COLOR=#ff0000]root[/COLOR]'); // ovde korisnicko ime koji ce se povezivati na DB_NAME.
define('DB_PASS', '[COLOR=#ff0000]sifra-tog-korisnika[/COLOR]'); // Sifra DB_USER koji smo kreirali u cpanel.
define('DB_NAME', '[COLOR=#ff0000]ime-databaze[/COLOR]');  // Ovde ime databaze

$db = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME);
if(!$db) {
die("Greska sa Mysql!");
} else {
$db->connect(DB_HOST,DB_USER,DB_PASS,DB_NAME); // Konektovanje na bazu
}
?>
Napomena: Kod DB_HOST,DB_USER,DB_PASS,DB_NAME menjate samo to sto sam vam obelezio crvenim.

Zatim zaćuvajmo fajl. U mom slućaju ja ću ga saćuvati kao config.php.

Onda otvaramo novi fajl i nazvacemo ga index.php

Code:
<?php 
ob_start();
session_start();
require_once("config.php"); // Upišite ime fajla koji ste saćuvali u korak 1, u mom slućaju je config.
?>
<html>
<head> 
        <title>Login Page</title>
</head>
<body>
<form action="" METHOD="POST">
<label>Username:</label> <input type="text" name="username" required placeholder="Vase korisnicko ime"></input><br/>
<label>Password:</label> <input type="password" name="password" required placeholder="Vasa lozinka"></input><br/>
<input type="submit" name="submit" value="Login"></input>
</form>
</body>
</html>
<?php 

if(isset($_POST["submit"]))
{
// Kada igrac popuni formu i klikne na submit dugme, onda proveravamo da li unete informacije su tacne.

$username = $_POST["username"] ;
$password = $_POST["password"]; 
// Sada ide zastita od sqli i xSS
$username = htmlspecialchars($db->escape_string(addslashes(trim($_POST["username"]))));
$password  = htmlspecialchars($db->escape_string(trim($_POST["password"])));

// ako igrac posalje praznu formu
if($username == "" or $password == "")
{
die("All fields are required!");
exit; 
}
else {
$pass = md5($password);
$rezult = $db->query("SELECT * FROM `korisnici` WHERE `username`='$username' AND `password`='$pass'");

if($rezult->num_rows < 1) 
{
 echo "<div class='error'>Pogresno korisnicko ime ili lozinka</div>";
exit;
}
// A u slucaju da je tacno korisnicko ime i lozinka
echo "<div class='uspesno'>Uspesan login</div>";
}
}
?>

Sada je potrebno da kreiramo tabele u databazu.

Code:
CREATE TABLE IF NOT EXISTS `korisnici` (
`id` int(11) NOT NULL,
  `username` text NOT NULL,
  `password` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


--
-- Indexes for dumped tables
--


--
-- Indexes for table `korisnici`
--
ALTER TABLE `korisnici`
 ADD PRIMARY KEY (`id`);


--
-- AUTO_INCREMENT for dumped tables
--


--
-- AUTO_INCREMENT for table `korisnici`
--
ALTER TABLE `korisnici`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

Ovaj tutorial je bio za pocetnike.
 
Re: Login Forma

MD5 hash? Da to nije malo prestaro, a i nesigurno? Po meni bolje je da se koristi funkcija password_hash jer pruza dosta vise mogucnosti i dosta je 'sigurnija'.
 
Re: Login Forma

MD5 hash? Da to nije malo prestaro, a i nesigurno? Po meni bolje je da se koristi funkcija password_hash jer pruza dosta vise mogucnosti i dosta je 'sigurnija'.


Md5 jeste star. I ne preporucljiv za ozbiljne radove.
Namenjen je pocetnicima, u sledecem tutorialu cu napisati kriptovanje lozinke na bezbedniji nacin :)

Što se tiće funkcija password_hash, može se zvati kako god hoćeš :D.
 
Last edited:
Re: Login Forma

Code:
<?php 
define('DB_HOST', 'localhost'); // Obratite paznju na ovo, kod nekih hostinga (posebno free web hostinge kao 000webhost), db host nije localhost.
define('DB_USER', 'root'); // ovde korisnicko ime koji ce se povezivati na DB_NAME.
define('DB_PASS', 'sifra-tog-korisnika'); // Sifra DB_USER koji smo kreirali u cpanel.
define('DB_NAME', 'ime-databaze');  // Ovde ime databaze

$db = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME);
if(!$db) {
die("Greska sa Mysql!");
} else {
$db->connect(DB_HOST,DB_USER,DB_PASS,DB_NAME); // Konektovanje na bazu
}
?>
-->
Code:
<?php 
define('DB_HOST', 'localhost'); // Obratite paznju na ovo, kod nekih hostinga (posebno free web hostinge kao 000webhost), db host nije localhost.
define('DB_USER', 'root'); // ovde korisnicko ime koji ce se povezivati na DB_NAME.
define('DB_PASS', 'sifra-tog-korisnika'); // Sifra DB_USER koji smo kreirali u cpanel.
define('DB_NAME', 'ime-databaze');  // Ovde ime databaze

$db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

if($db->connect_errno)
    die("Greska sa Mysql!");
?>

Zašto ob_start() kad ga ne koristiš?

Eh sad nešto što ti preporučujem, da stavljaš sve post podatke u niz i odmah u petlji ih "čistiš" i provjeravaš da li su prazni. Dosta pregledniji kod i kasnije je lako pristupiti svim podacima
 
Re: Login Forma

Code:
<?php 
define('DB_HOST', 'localhost'); // Obratite paznju na ovo, kod nekih hostinga (posebno free web hostinge kao 000webhost), db host nije localhost.
define('DB_USER', 'root'); // ovde korisnicko ime koji ce se povezivati na DB_NAME.
define('DB_PASS', 'sifra-tog-korisnika'); // Sifra DB_USER koji smo kreirali u cpanel.
define('DB_NAME', 'ime-databaze');  // Ovde ime databaze

$db = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME);
if(!$db) {
die("Greska sa Mysql!");
} else {
$db->connect(DB_HOST,DB_USER,DB_PASS,DB_NAME); // Konektovanje na bazu
}
?>
-->
Code:
<?php 
define('DB_HOST', 'localhost'); // Obratite paznju na ovo, kod nekih hostinga (posebno free web hostinge kao 000webhost), db host nije localhost.
define('DB_USER', 'root'); // ovde korisnicko ime koji ce se povezivati na DB_NAME.
define('DB_PASS', 'sifra-tog-korisnika'); // Sifra DB_USER koji smo kreirali u cpanel.
define('DB_NAME', 'ime-databaze');  // Ovde ime databaze

$db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

if($db->connect_errno)
    die("Greska sa Mysql!");
?>

Zašto ob_start() kad ga ne koristiš?

Eh sad nešto što ti preporučujem, da stavljaš sve post podatke u niz i odmah u petlji ih "čistiš" i provjeravaš da li su prazni. Dosta pregledniji kod i kasnije je lako pristupiti svim podacima

Moze i ovo sa $db->connect_errno, ovo sam koristio u Kontakt formu
Code:
if(!$db)
{
die("Mysqli Error: " . $db->connect_errno)
}

Napisao tutorial na brzaka, nisam baš skrenuo pažnju na ove stvari.

Inaće session_start() i ob_start(); sam iskljućivo stavio kao primer ukoliko je neki sajt u pitanju i želimo preko sesije da se izbacivaju greške, tipa $_SESSION["greska"] = "blabla"; ali nisam to stavio u tutorialu jer sam bio vremenski ogranićen.

A inaće i ovo za post podatke definitivno dobra ideja :D k+

EDIT: Spread :(
 
Back
Top