Jump to content
php.lv forumi

Recommended Posts

Posted

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?

Posted

un ja vairs nebuus realu tagu

kaada jeega noshii?

MakeSafe($_POST['jaunuma_teksts'],true) // Juanuma teksts ir ar WYSIWYG sataisīts, piemēram tinyMCE

???

Posted (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 by Toms
Posted (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 by Toms
Posted

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?

Posted

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?

Posted

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.

Posted

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

×
×
  • Create New...