Združeanje 2 tabel
 
Tody 17. jun 2014 07:45:33 Pridružen od:
3. maj 2010
1446 objav
1411 299 25
#11

uhhh napača...


všeč(0) ni všeč(0) spam(0)
![](http://www.internetmojster.com/splosno/dobrodelna-akcija.html)
 
sikmajnd 17. jun 2014 10:51:37 Pridružen od:
11. nov 2013
89 objav
156 9 1
#12

Roll your own PDO PHP Class



vzemi si čas in si preberi celotni zgornji tutorial. Lepo je razloženo kako in zakaj + na koncu sam sebi sestaviš uporaben class za delo s podatki.



Skozi tutorial je tudi razloženo kako se s PDOjem izogneš SQL injectionu (metoda prepare())



mysql_ ukazi (mysqlconnect, mysqlquery, ...) so deprecated, kar pomeni, da njihova uporaba ni priporočljiva. Na žalost je veliko vodičev narejeno še po stari metodi in jih noben ne bo popravljal. Zadeva potem pripelje do takih primerov, kot ga imamo tukaj (:



Če potengemo črto, bo bolje, da uporabiš PDO oz. mysqli.


všeč(3) ni všeč(0) spam(0)
 
klopar 17. jun 2014 12:06:30 Pridružen od:
17. feb 2012
446 objav
78 113 24
#13

Hvala sikmajnd


všeč(0) ni všeč(0) spam(0)
 
klopar 17. jun 2014 18:59:17 Pridružen od:
17. feb 2012
446 objav
78 113 24
#14

Vodič sem si prebral vendar imam dva vprašanja. Ker mi bolje leži mysqli bi vas prosil, če mi lahko prosim poveste ali sem zadel z sql injection. Kot sem videl tudi na tej strani: http://www.php.net/manual/en/function.mysql-real-escape-string.php da se sql injection reši z ukazom mysqlrealescape_string? Ali je mogoče še kakšen ukaz. Ali mogoče kdo ve kako bi lahko to tudi testiral če deluje.



Se opravičuje ker toliko sprašujem vendar bi se zelo rad naučil in da dobim potrdila tudi od vas.



Hvala


všeč(0) ni všeč(0) spam(0)
 
sikmajnd 18. jun 2014 08:52:40 Pridružen od:
11. nov 2013
89 objav
156 9 1
#15

mysqlrealescapestring spada med mysql deprecated ukaze. Če boš uporabljal mysqli, potem je ukaz za escapanje mysqlirealescape_string (pazi na i na koncu).



V tem primeru lahko uporabiš nekako takole:


$password = mysqli_real_escape_string($_POST['password']);

Glede na to, da si se odločil, da boš uporabljal mysqli, bi ti vseeno priporočal, da vzameš en class, ki ima že vključene vse potrebne metode. Recimo: PHP mysqli class



Zadeva ima kar precej plusov: manj možnosti napak, escapanje stringov je že urejeno, vse skupaj je dosti bolj berljivo, ...


všeč(1) ni všeč(0) spam(0)
 
Vini 18. jun 2014 09:04:16 Pridružen od:
1. sep 2006
6612 objav
5234 611 56
#16

Najboljše bi bilo, da si ogledaš kakšen abstraction layer za komunikacijo z bazami. Kakšen PDO bi bil verjetno zate čisto primeren in za tvoje potrebe povsem zadosten.


všeč(1) ni všeč(0) spam(0)
 
klopar 18. jun 2014 10:34:03 Pridružen od:
17. feb 2012
446 objav
78 113 24
#17

Hvala za veliko pomoč. Samo še to bi vprašal potem pa na delo :). Ali je potrebno zaščiti samo $POST in $GET ali je potrebno zaščititi tudi javo script ( preko jave nimam nič posebnega, kar bi bilo povezano z mysql ). Saj preko programa NETsparker dobim nasledno napako '"--></style></scRipt><scRipt>alert(0x002336)</scRipt> (important)


všeč(0) ni všeč(0) spam(0)
 
sikmajnd 18. jun 2014 11:16:04 Pridružen od:
11. nov 2013
89 objav
156 9 1
#18

@Vini Ta isto sem mu že jaz priporočal, pa se je odločil, da se bo držal mysqli-ja (:



@klopar javascript se uporablja samo za validacijo, ki je prijaznejša uporabnika. Prikazovanje napak prez osveževanja - validacija obveznih polj, prikaz "moči" gesla, pravilnost emaila, .. To validacijo je tudi precej lahko obiti in se ne gre zanašati nanjo. Server side validacija all the way.


všeč(1) ni všeč(0) spam(0)
 
klopar 18. jun 2014 14:10:37 Pridružen od:
17. feb 2012
446 objav
78 113 24
#19

Hvala sikmajnd. Preden pa nadaljujem z delom bi vas še vprašal ali bi tale koda bila dovolj za prijavo in ali delam prav SQL inject, saj sem videl da je več primerov...



//POVEZAVA Z MYSQLI

mysqliselectdb($povezavamysql,"$prijavatabela");



$uporabniskoime = stripslashes($uporabniskoime);



// Kodiraj geslo

$kodirano_geslo = md5($geslo);



$uporabniskoime = $povezavamysql->realescapestring($uporabniskoime);

$kodirano
geslo = $povezavamysql->realescapestring($kodiranogeslo);



$preveriuporabnikeizbaze = "SELECT * FROM $prijavatabela WHERE uporabniskoime='$uporabniskoime' and geslo='$kodiranogeslo'";

$izpisi
stevilovrstic = $povezavamysql->query($preveriuporabnikeiz_baze);


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se