aidan           Tue Sep  7 10:14:24 2004 EDT

  Modified files:              
    /phpdoc/en/reference/mysql/functions        mysql-real-escape-string.xml 
  Log:
  Reworded
  
http://cvs.php.net/diff.php/phpdoc/en/reference/mysql/functions/mysql-real-escape-string.xml?r1=1.14&r2=1.15&ty=u
Index: phpdoc/en/reference/mysql/functions/mysql-real-escape-string.xml
diff -u phpdoc/en/reference/mysql/functions/mysql-real-escape-string.xml:1.14 
phpdoc/en/reference/mysql/functions/mysql-real-escape-string.xml:1.15
--- phpdoc/en/reference/mysql/functions/mysql-real-escape-string.xml:1.14       Thu 
Aug 19 13:00:07 2004
+++ phpdoc/en/reference/mysql/functions/mysql-real-escape-string.xml    Tue Sep  7 
10:14:24 2004
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.14 $ -->
+<!-- $Revision: 1.15 $ -->
 <!-- splitted from ./en/functions/mysql.xml, last change in rev 1.100 -->
   <refentry id="function.mysql-real-escape-string">
    <refnamediv>
@@ -32,8 +32,8 @@
      This function will escape special characters in the
      <parameter>unescaped_string</parameter>, taking into account the current
      character set of the connection so that it is safe to place it in a
-     <function>mysql_query</function>. If you wish to insert binary data
-     you must use this function.
+     <function>mysql_query</function>. If binary data is to be inserted, this function
+     must be used.
     </para>
     <para>
      <function>mysql_real_escape_string</function> calls MySQL's library function
@@ -62,15 +62,19 @@
      </example>
     </para>
     <para>
-     You must always (with few exceptions) use this function to make your data
-     safe before sending a query to MySQL. If you have
-     <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link> enabled,
-     and you are working with data from user input, you must first
-     <function>stripslashes</function> your data. If your data are form other
-     sources and you have <link linkend="ini.magic-quotes-runtime">
-     magic_quotes_runtime</link> enabled, you also have to
-     <function>stripslashes</function> your data. If you don't do so, you leave
-     yourself open to SQL Injection Attacks. Here's an example:
+     This function must always (with few exceptions) be used to make data
+     safe before sending a query to MySQL.
+    </para>
+    <note>
+     <para>
+      If <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link> is enabled,
+      first apply <function>stripslashes</function> to the data. Using this function
+      on data which has already been escaped will escape the data twice.
+     </para>
+    </note>
+    <para>
+     If this function is not used to escape data, the query is vulnerable to
+     <link linkend="security.database.sql-injection">SQL Injection Attacks</link>.
     </para>
     <para>
      <example>
@@ -100,28 +104,27 @@
 ]]>
       </screen>
       <para>
-       This would allow anyone to log in without a valid password! Using
-       <function>mysql_real_escape_string</function> around each variable
-       prevents this.
+       This would allow anyone to log in without a valid password.
+      </para>
+      <para>
+       Using <function>mysql_real_escape_string</function> around each variable
+       prevents this. This example demonstrates the proper method for querying a 
database,
+       independent of the <link linkend="security.magicquotes">Magic Quotes</link> 
setting.
       </para>
       <programlisting role="php">
 <![CDATA[
 <?php
-/**
- * Quote a variable to make it safe
- */
+// Quote variable to make safe
 function quote_smart($value)
 {
-    // Stripslashes if we need to
+    // Stripslashes
     if (get_magic_quotes_gpc()) {
         $value = stripslashes($value);
     }
-
-    // Quote it if it's not an integer
+    // Quote if not integer
     if (!is_int($value)) {
         $value = "'" . mysql_real_escape_string($value) . "'";
     }
-
     return $value;
 }
 
@@ -139,7 +142,7 @@
 ]]>
       </programlisting>
       <para>
-       The query will now execute correctly, and Injection attacks will no longer 
work.
+       The query will now execute correctly, and SQL Injection attacks will not work.
       </para>
      </example>
     </para>

Reply via email to