Ver código fonte

* Auto-detects if form is 'compose.php' and if PHP is giving us bad form
data and will only trim when appropriate (the multipart/form-data form)
* Trimming method doesn't eliminate extra newlines -- just the first one.
* Cleaned up the code a bit.

* This code should be removed somewhat soon after RedHat officially releases
a good binary package and after Konqueror works.

Tyler Akins 24 anos atrás
pai
commit
52cd3aa105
2 arquivos alterados com 15 adições e 8 exclusões
  1. 2 2
      ChangeLog
  2. 13 6
      functions/strings.php

+ 2 - 2
ChangeLog

@@ -1,7 +1,7 @@
 Version 1.0.2 -- DEVELOPMENT
 Version 1.0.2 -- DEVELOPMENT
 ----------------------------
 ----------------------------
-- Added $fix_form_endlines option in strings.php to workaround 
-    Konq/PHP4.0.3 problems
+- Added a workaround for RedHat's 4.0.4pl1-3 binary package  (It's also 
+  the same workaround for Konqueror and other PHP installations?)
 - Select All works through the search
 - Select All works through the search
 - Better escaped string handling from POST variables
 - Better escaped string handling from POST variables
 - Many more code cleanups and optimizations
 - Many more code cleanups and optimizations

+ 13 - 6
functions/strings.php

@@ -20,8 +20,16 @@
             RemoveSlashes($HTTP_GET_VARS);
             RemoveSlashes($HTTP_GET_VARS);
        }
        }
    }
    }
-   
-   if (isset($fix_form_endlines) && $fix_form_endlines) {
+
+   // Auto-detection
+   //
+   // if $send (the form button's name) contains "\n" as the first char
+   // and the script is compose.php, then trim everything.  Otherwise,
+   // we don't have to worry.
+   global $send, $PHP_SELF;
+   if (isset($send) && substr($send, 0, 1) == "\n" &&
+       substr($PHP_SELF, -12) == "/compose.php")
+   {
       if ($REQUEST_METHOD == "POST") {
       if ($REQUEST_METHOD == "POST") {
          TrimArray($HTTP_POST_VARS);
          TrimArray($HTTP_POST_VARS);
       } else {
       } else {
@@ -30,18 +38,17 @@
    }
    }
 
 
    //**************************************************************************
    //**************************************************************************
-   // Trims every element in the array and returns a  new array.  
+   // Trims every element in the array
    //**************************************************************************
    //**************************************************************************
    function TrimArray(&$array) {
    function TrimArray(&$array) {
       foreach ($array as $k => $v) {
       foreach ($array as $k => $v) {
          global $$k;
          global $$k;
          if (is_array($$k)) {
          if (is_array($$k)) {
             foreach ($$k as $k2 => $v2) {
             foreach ($$k as $k2 => $v2) {
-               $newArray[trim($k2)] = trim($v2);
+	       $$k[$k2] = substr($v2, 1);
             }
             }
-            $$k = $newArray;
          } else {
          } else {
-            $$k = trim($v);
+            $$k = substr($v, 1);
          }
          }
       }
       }
    }
    }