[ MACTEPx @ 16.11.2011. 14:22 ] @
Krenuo sam da ucim PHP i napravio sam sledeci najjednostavniji projekat:

connection.inc - fajl za konekciju na bazu
Code:

<?php
    $con = mysql_connect("localhost","root","");
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }
    mysql_select_db("baza", $con);
?>


index.php - prikazuje iz baze id, ime i prezime osobe, a ima i mogucnost dodavanja novih osoba
Code:

<?php include 'include/connection.inc'; ?>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <form name="forma" method="post" action="">
            Ime: <input type="text" name="txtIme" value="" /></br>
            Prezime: <input type="text" name="txtPrezime" value="" /></br>
            <input type="submit" value="Posalji" name="btnPosalji" />
        </form>
        <?php
        //insert
            if(isset($_REQUEST["btnPosalji"])){
                $ime= $_REQUEST["txtIme"];
                $prezime= $_REQUEST["txtPrezime"];
                echo $ime . " " . $prezime;
                
                  $sql="INSERT INTO osoba (ime, prezime)
                                VALUES ('$ime', '$prezime')";
                if (!mysql_query($sql,$con))
                {
                    die('Error: ' . mysql_error());
                }
                echo "1 record added";
            }
            
            //select
            $sql="SELECT * FROM osoba";
            $result = mysql_query($sql);

            while($row = mysql_fetch_array($result))
            {
                echo $row['Ime'] . " " . $row['Prezime'];
                echo "<a href=\"update.php?id=" . $row['id'] . "\">Izmeni</a>";
                echo "<a href=\"delete.php?id=" . $row['id'] . "\">Obrisi</a>";
                echo "<br />";
            }
        ?>
    </body>
</html>


update.php - sadrzi kod za izmenu osobe
Code:

<?php include 'include/connection.inc'; ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php 
    if(isset($_REQUEST['id'])){    
        $id=$_REQUEST['id'];
        $sql="SELECT * FROM osoba WHERE id=" . $id ;
        $result = mysql_query($sql);
        $row = mysql_fetch_array($result);
    }
?>
    <form name="forma" method="post" action="">
        Ime: <input type="text" name="txtIme" value="<?php echo $row['Ime'] ?>" /></br> 
        Prezime: <input    type="text" name="txtPrezime" value="<?php echo $row['Prezime'] ?>" /></br> 
        <input type="submit" value="Posalji" name="btnPosalji" />
    </form>
<?php 
    if(isset($_REQUEST["btnPosalji"])){
        $ime= $_REQUEST["txtIme"];
        $prezime= $_REQUEST["txtPrezime"];
        echo $ime . " " . $prezime;
    
        $sql="UPDATE osoba SET ime='$ime', prezime='$prezime' WHERE id='$id'";
    
        if (!mysql_query($sql,$con))
        {
            die('Error: ' . mysql_error());
        }
        echo "1 record updated";
    
        //mysql_close($con);
    }
?>
   </body>
</html>



i delete.php - za brisanje osobe iz baze
Code:

<?php 
include 'include/connection.inc';
    if (isset($_REQUEST['id'])){
        $id=$_REQUEST['id'];
        mysql_query("DELETE FROM Osoba WHERE id='$id'");
        echo "osoba je izbrisana iz baze";
    }
?>




Sad me interesuje da li je ovakav kod generalno dobar ili moze malo da se poboljsa? Ako sam dobro shvatio, ceo rad sa bazom se zasniva na ovih 4 operacija tako da je za slozenije primere samo potrebno napraviti i prilagoditi nove php fajlove a nacin na koji se sve to realizuje ostaje prakticno isti?
[ Zlatni_bg @ 18.11.2011. 04:35 ] @
Da se poboljsa, uvek sve moze u programiranju, ali sve ti zavisi od potrebe i toga koliko si sposoban. A da stavis .inc ekstenziju na fajl u kom ti se nalaze veoma vazne informacije nisam siguran koliko je pametno, jer koliko znam, .inc fajl nece biti obradjen PHP procesorom kad mu se direktno pristupi, i mozda ce cak apache/nginx ili neki drugi dati onome ko pokusa da ga otvori i da ga downloaduje. Nek me ispravi neko ukoliko gresim.

Nisu samo 4 operacije u pitanju, MySQL query moze sadrzati i mnostvo drugih komandi, opcija itd. Pogledaj MySQL reference manual za vise informacija. Ali da, to su one koje se najcesce koriste.

Mislim da si sam sebi dao vecinu odgovora pri postavljanju pitanja.
[ MACTEPx @ 18.11.2011. 14:42 ] @
to sam video u nekom tutorijalu da stavljaju .inc fajlove za include pa sam zbog toga stavio - znaci od sad za sve ide php ekstenzija. A interesuje me, kad vec govorimo o sigurnosti, da li je dovoljna zastita od sql injectiona mysql_real_escape_string kao i da li kod svakog textbox-a treba da stavim ovu zastitu ili samo ako je u pitanju login?
[ Zlatni_bg @ 18.11.2011. 17:10 ] @
Ja bih ga koristio kad god string iz textbox-a treba da se ukljuci u MySQL query. Jer uvek neko moze da ti iskoristi SQL injection i da upise, a i ispise podatke iz baze. Trebalo bi generalno to da ti radi posao.

Upravo sam probao sta se desi kada pokusam da otvorim neki .inc fajl preko web browsera, prikaze mi se celokupan sadrzaj. NIKAKO nemoj koristiti .inc fajlove za include. Da li si siguran da u tutorijalu nije bilo .inc.php kao ekstenzija? To je ono sto sam dosta puta vidjao.

Naravno, moze da se podesi da PHP procesira .inc fajlove, ali po defaultu to nije ukljuceno.
[ MACTEPx @ 18.11.2011. 20:21 ] @
Ne secam se u kom sam tutorijalu to video ali siguran sam da je bila .inc ekstenzija, bas to mi je privuklo paznju i mislio sam da verovatno koriste ovu ekstenziju da bi lakse razlikovali fajlove u kodu, ali hvala na savetu, od sada koristim iskljucivo .php :)

A da li osim sql injectiona postoji jos neka pretnja sto se tice sigurnosti?
[ Zlatni_bg @ 19.11.2011. 04:43 ] @
Je l' se pitanje odnosi na kod gore ili generalno?
[ MACTEPx @ 19.11.2011. 15:16 ] @
Generalno...
[ ivan veljovic @ 25.11.2011. 11:31 ] @
a da se .inc fajl stupsti ispod root direktorijuma ;-)