aidan           Thu Aug 19 07:13:46 2004 EDT

  Modified files:              
    /phpdoc/en/reference/mysql/functions        mysql-real-escape-string.xml 
  Log:
  Fixed mysql library reference name
  Added a simple example
  Fixed typo in SQL query
  Removed stripslashes_deep code - not needed as arrays can't be inserted
  Fixed note about wildcard characters
  Misc language changes
  
http://cvs.php.net/diff.php/phpdoc/en/reference/mysql/functions/mysql-real-escape-string.xml?r1=1.12&r2=1.13&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.12 
phpdoc/en/reference/mysql/functions/mysql-real-escape-string.xml:1.13
--- phpdoc/en/reference/mysql/functions/mysql-real-escape-string.xml:1.12       Fri 
Aug 13 01:22:43 2004
+++ phpdoc/en/reference/mysql/functions/mysql-real-escape-string.xml    Thu Aug 19 
07:13:46 2004
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.12 $ -->
+<!-- $Revision: 1.13 $ -->
 <!-- splitted from ./en/functions/mysql.xml, last change in rev 1.100 -->
   <refentry id="function.mysql-real-escape-string">
    <refnamediv>
@@ -37,18 +37,37 @@
      you must use this function.
     </para>
     <para>
-     mysql_real_escape_string calls MySQL's library function of the
-     same name, which prepends slashes to the following characters:
+     mysql_real_escape_string calls MySQL's library function (mysql_escape_string),
+     which prepends slashes to the following characters:
      <literal>NULL</literal>, <literal>\x00</literal>, <literal>\n</literal>,
      <literal>\r</literal>, <literal>\</literal>, <literal>'</literal>,
      <literal>"</literal> and <literal>\x1a</literal>.
     </para>
     <para>
+     <example>
+      <title>Simple <function>mysql_real_escape_string</function> example</title>
+      <programlisting role="php">
+<![CDATA[
+<?php
+// Connect
+$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
+    OR die(mysql_error());
+
+// Query
+$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
+            mysql_real_escape_string($user),
+            mysql_real_escape_string($password));
+?>
+]]>
+      </programlisting>
+     </example>
+    </para>
+    <para>
      You must always (with few exceptions) use this function
      to make your data safe before inserting. If you have
      <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link> enabled,
      you must first <function>stripslashes</function> your data. If you don't use
-     this, you'll leave yourself open to SQL Injection Attacks. Here's an example:
+     this, you leave yourself open to SQL Injection Attacks. Here's an example:
     </para>
     <para>
      <example>
@@ -74,7 +93,7 @@
        </para>
       <screen>
 <![CDATA[
-SELECT * FROM users WHERE name='fred' AND password='' OR 1=1
+SELECT * FROM users WHERE name='aidan' AND password='' OR 1=1
 ]]>
       </screen>
       <para>
@@ -86,25 +105,13 @@
 <![CDATA[
 <?php
 /**
- * Apply stripslashes recursively
- */
-function stripslashes_deep($value)
-{
-    $value = is_array($value) ?
-                array_map('stripslashes_deep', $value) :
-                stripslashes($value);
-
-    return $value;
-}
-
-/**
  * Quote a variable to make it safe for insertion
  */
 function quote_smart($value)
 {
     // Stripslashes if we need to
     if (get_magic_quotes_gpc()) {
-        $value = stripslashes_deep($value);
+        $value = stripslashes($value);
     }
 
     // Quote it if it's not an integer
@@ -116,8 +123,8 @@
 }
 
 // Connect
-$link = mysql_connect('localhost', 'mysql_user', 'mysql_password')
-    OR die('Could not connect: ' . mysql_error());
+$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
+    OR die(mysql_error());
 
 // Make a safe query
 $query = sprintf("SELECT * FROM users WHERE user=%s AND password=%s",
@@ -129,15 +136,15 @@
 ]]>
       </programlisting>
       <para>
-       Our query is now safe no matter what the user submits!
+       The query will now execute correctly, and Injection attacks will no longer 
work.
       </para>
      </example>
     </para>
     <note>
      <simpara>
       <function>mysql_real_escape_string</function> does not escape
-      <literal>%</literal> and <literal>_</literal>. These are wildcards in MySQL
-      if not bounded by quotes.
+      <literal>%</literal> and <literal>_</literal>. These are wildcards in MySQL if
+      combined with <literal>LIKE</literal>.
      </simpara>
     </note>
     <para>

Reply via email to