PHP in decimalke
3 naročniki
3 naročniki
Noh, pa imam problem, delam online "menjalnico"
problem je da ko iz baze poberem števila za pretvarjanje so recimo 1,38 in jih dobim kot string ...
zato PHP z njimi računa kot 1 če imam recimo 1,38 :confused:
ve kdo kako to rešit ? Polje v bazi je int, tudi z varchar ni delalo ...
13 odgovorov
Pojma nimam, kaj ti pocenjas, ampak tudi naslednja zadeva:
echo number_format('1E-06',6,',','');
prav lepo prikaze 0,000001
Koda z vsemi tistimi abs() in protect() je pa hudo smesna :) Kaj pocenja protect()?
function protect($string) {
$string = mysql_escape_string(strip_tags(htmlspecialchars($string)));
return $string;
}
Edit:
prehitro pa preverč na enkrat :(
3 outpute sem mel pa sem na enem probal ... pogledal pa drugi ...
zdaj dela.
Hvala
Si ti rahlo paranoicen? V tem primeru ne rabis vseh teh escapov in strip_tags in htmlspecialchars :)
Povsem varna koda je naslednja:
if (isset($_POST["vrednost"]) && is_numeric($_POST["vrednost"]) &&
isset($_POST["zacetna_enota"]) && is_numeric($_POST["zacetna_enota"]) &&
isset($_POST["koncna_enota"]) && is_numeric($_POST["koncna_enota"])) {
$rezultat = abs($_POST["vrednost"]) * abs($_POST["zacetna_enota"]) / abs($_POST["koncna_enota"]);
}
else $rezultat = "Prosim vnesi število.";
Ce ti funkcija is_numeric() vrne TRUE, potem sigurno nimas v spremenljivki nic drugega, kot stevilko, torej ne more biti notri nobenih HTML tagov, nobenih narekovajev, in tako naprej... Zakaj vidis potrebo po escapanju narekovajev? Zapisujes te spremenljivke v bazo? Vidis kje moznost SQL injectiona, ce sploh ne vpisujes zadeve v SQL?
Ce pomislim, da si v neki temi imel pomisleke glede uporabe isset(), ker je kao pocasna funkcija, ajoj :)