PHP mysql_real_escape_string() ఫంక్షన్

నిర్వచన మరియు వినియోగం

mysql_real_escape_string() ఫంక్షన్ డేటాబేస్ స్ట్రింగ్ లో వినియోగించే ప్రత్యేక అక్షరాలను ట్రాన్స్‌లేట్ చేస్తుంది.

ఈ అక్షరాలు ప్రభావితం అవుతాయి:

  • \x00
  • \n
  • \r
  • \
  • '
  • "
  • \x1a

విజయవంతంగా అనువాదం జరిగితే, ఫంక్షన్ ట్రాన్స్‌లేట్ చేయబడిన స్ట్రింగ్ ని తిరిగి ఇవ్వబడుతుంది. విఫలమైతే, false తిరిగి ఇవ్వబడుతుంది.

వినియోగం

mysql_real_escape_string(string,connection)
పారామీటర్స్ వివరణ
string అవసరం. ట్రాన్స్‌లేట్ చేయాల్సిన స్ట్రింగ్ ని నిర్దేశించండి.
connection ఆప్షనల్. నిర్దేశించిన మైక్రోస్ కనెక్షన్ ని నిర్దేశించండి. నిర్దేశించకుండా ఉంటే ముందస్తు కనెక్షన్ ని వినియోగించబడుతుంది.

వివరణ

ఈ ఫంక్షన్ ద్వారా string లో ప్రత్యేక అక్షరాలను ట్రాన్స్‌లేట్ చేసి ప్రస్తుత కనెక్షన్ చిహ్నం పెంచి సురక్షితంగా వినియోగించవచ్చు mysql_query().

అడ్వైజరీ మరియు కామెంట్స్

అడ్వైజరీ:ఈ ఫంక్షన్‌ను వినియోగించడం ద్వారా డేటాబేస్ దాడులను నివారించవచ్చు.

ఉదాహరణ

ఉదాహరణ 1

<?php
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
// వినియోగదారి పేరు మరియు పాస్వర్డ్‌ని పొందే కోడ్‌లు
// వినియోగదారి పేరు మరియు పాస్వర్డ్‌ని ట్రాన్స్‌లేట్ చేసి డేటాబేస్‌లో వినియోగించడానికి
$user = mysql_real_escape_string($user);
$pwd = mysql_real_escape_string($pwd);
$sql = "SELECT * FROM users WHERE
user='" . $user . "' AND password='" . $pwd . "'"
// మరిన్ని కోడ్‌లు
mysql_close($con);
?>

ఉదాహరణ 2

డేటాబేస్ దాడి. ఈ ఉదాహరణలో మేము వినియోగదారి పేరు మరియు పాస్వర్డ్‌ని mysql_real_escape_string() ఫంక్షన్ వినియోగించకుండా ఎలా ఉంటుందో చూపిస్తుంది:

<?php
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
$sql = "SELECT * FROM users
WHERE user='{$_POST['user']}'
AND password='{$_POST['pwd']}'";
mysql_query($sql);
// వినియోగదారి పేరు మరియు పాస్వర్డ్ ని పరిశీలించకుండా ఉంటారు
// వినియోగదారి నిర్వహణలో అన్ని కంటెంట్‌లు ఉండవచ్చు, ఉదాహరణకు:
$_POST['user'] = 'john';
$_POST['pwd'] = "' OR ''='";
// కొన్ని కోడ్‌లు...
mysql_close($con);
?>

అప్పుడు SQL కొరకు అనువాదం ఇలా అవుతుంది:

SELECT * FROM users
WHERE user='john' AND password='' OR ''=''

ఇది ఏ వినియోగదారుడు చెల్లని పాస్వర్డ్ నివ్వకుండా లాగిన్ అయ్యేలా అవుతుంది.

ఉదాహరణ 3

డేటాబేస్ హ్యాక్కింగ్ నివారణ సరైన పద్ధతి:

<?php
function check_input($value)
{
// కుదుర్చుకున్న లోడ్స్ తొలగించండి
if (get_magic_quotes_gpc())
  {
  $value = stripslashes($value);
  }
// సంఖ్య కాది అయితే కోట్లు జోడించండి
if (!is_numeric($value))
  {
  $value = "'" . mysql_real_escape_string($value) . "'";
  }
return $value;
}
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
// సురక్షితమైన SQL
$user = check_input($_POST['user']);
$pwd = check_input($_POST['pwd']);
$sql = "SELECT * FROM users WHERE
user=$user AND password=$pwd";
mysql_query($sql);
mysql_close($con);
?>