Toms Posted March 13, 2006 Report Posted March 13, 2006 Nav jautājums. Vienkārši veselīga interese :) Tātad, visus datus, kas jāieliek datubāzē, apstrādāju ar šādu funkciju: /****************************************************************************/ function MakeSafe($query,$html = false){ if (!$html) { // Sataisa < > u.c. par &, &nd; $query = htmlspecialchars($query); } // Stripslashes if (get_magic_quotes_gpc()) { $query = stripslashes($query); } return $query = "'".mysql_real_escape_string($query)."'"; } /* MakeSafe */ /****************************************************************************/ // SQL izskatās šāds: $sql = sprintf("INSERT INTO tabula VALUES (NULL,%s,%s,%s)", MakeSafe($_POST['value1']), MakeSafe($_POST['value2']), MakeSafe($_POST['jaunuma_teksts'],true) // Juanuma teksts ir ar WYSIWYG sataisīts, piemēram tinyMCE ); mysql_query($sql); Radās doma - varbūt nav jēgas katru mainīgo apstrādāt, varbūt var uzreiz visu $sql... Kā Jūs eskeipojat savus SQL?
Grey_Wolf Posted March 13, 2006 Report Posted March 13, 2006 un ja vairs nebuus realu tagu kaada jeega noshii? MakeSafe($_POST['jaunuma_teksts'],true) // Juanuma teksts ir ar WYSIWYG sataisīts, piemēram tinyMCE ???
Toms Posted March 13, 2006 Author Report Posted March 13, 2006 (edited) Tas ir vajadzīgs tajā brīdī, kad iekš CMS tiek pievienots, piemēram, jaunums, kam jāparādās pirmajā lapā. Lai neiznīcinātu <p> <b> <img> u.c. tagus. Ko domā ar "reāli tagi"? EDIT: Kā pats dari? Edited March 13, 2006 by Toms
v3rb0 Posted March 13, 2006 Report Posted March 13, 2006 te izrāvumi no mysql db klases kuru lietoju. http://paste.php.lv/3431 scriptā kveriju ar visu esceipošanu šādi izsaucu. $db -> sql('insert into t(a,b,c) values(?,?,?)', $a,$b,$c);
Toms Posted March 13, 2006 Author Report Posted March 13, 2006 (edited) v3rb0, ideāls variants, nebūtu iedomājies. Thnx. EDIT: Tikai nesaprotu, kāda jēga ne-eskeipot ciparus? Kāda jēga pārbaudīt, vai tas ir cipars? Edited March 13, 2006 by Toms
Klez Posted March 13, 2006 Report Posted March 13, 2006 nu ja tas ir cipars un tam jaabuut ciparam tad tur vairs nau ko eskeipotu un baudiit
Toms Posted March 13, 2006 Author Report Posted March 13, 2006 Klez, ja jau tur nav ko eskeipot, kāpēc lieki jāpārbauda vai tas ir cipars? Sanāk vienkārši garāks kods un tas arī viss. Vai es kļūdos?
bubu Posted March 13, 2006 Report Posted March 13, 2006 Garāks (source) kods nebūt nenozīme lēnāks kods. Un galvenais jau ir ātrs kods, ne?
Klez Posted March 14, 2006 Report Posted March 14, 2006 Toms, tur abaas vietaas ir !is_numeric. saproti ko tas dara ?
Toms Posted March 14, 2006 Author Report Posted March 14, 2006 Klez, jēga viena un tā pati - vai ir cipars/vai nav cipars. Doma tā pati tam IFam. bubu, tātad neeskeipot ciparus ir ātrāk nekā pārbaudīt vai tas ir cipars? Bet vienkārši ar is_numeric nepietiek, jo 0043 arī ir cipars. Bet jāglabā ne-cipra laukā, varchar, piemēram. Dubulta pārbaude jāveic! Es kļūdos?
v3rb0 Posted March 14, 2006 Report Posted March 14, 2006 tajā vietā ne tikai esceipo bet arī liek klāt pēdiņas. piem šitādā gadījumā: $db -> sql('select * from t where id in(?)',array(1,2,3,4,5,6,7,8)); nepavisam negribu dabūt šitādu sql select * from t where id in("1","2","3","4","5","6","7","8") tāpēc ar skatos vai ir ciparisks. tas ka šitā klase nav pats ātrākais variants kā db kaut ko paprasīt ir skaidrs pats par sevi, bet ērtības prasa upurus.
Klez Posted March 14, 2006 Report Posted March 14, 2006 kaapeec cipar jaaglabaa varchar laukaa ??? ja cipars taatad INT
Toms Posted March 14, 2006 Author Report Posted March 14, 2006 Klez, es domāju tā, ka cipars ir arī "0065", kas nav skaitlis. Skaitlis būtu "65". INT laukā nevar glabāt tādus ar nullēm priekšā, kaut gan tas = is_numeric
Kavacky Posted March 15, 2006 Report Posted March 15, 2006 Decimālajā sistēmā cipari ir 0, 1, 2, ..., 9. Kaut kādas to kombinācijas jau ir skaitļi.
v3rb0 Posted March 15, 2006 Report Posted March 15, 2006 o, thnx! "0065" saglabāšanu biju palaidis garām - darot tā kā tagad nepieliksies pēdas un db saglabāsies 65.
Recommended Posts