version 0.1.9
[fms.git] / src / http / ipagehandler.cpp
index fc77815..c4ebbb9 100644 (file)
@@ -81,7 +81,7 @@ const bool IPageHandler::Handle(shttpd_arg *arg)
                // we have all POST data (or it was 0 to begin with) - generate the page\r
                if(mystate->m_indatalen==mystate->m_indatapos && mystate->m_outdata==NULL)\r
                {\r
-                       //TODO parse POST data and any QUERY_STRING before generating page\r
+                       //parse POST data and any QUERY_STRING before generating page\r
                        std::map<std::string,std::string> args;\r
                        std::vector<std::string> argparts;\r
                        \r
@@ -99,9 +99,13 @@ const bool IPageHandler::Handle(shttpd_arg *arg)
                                StringFunctions::Split((*argi),"=",parts);\r
                                if(parts.size()>0)\r
                                {\r
+                                       // replace + with space before UriDecoding\r
+                                       parts[0]=StringFunctions::Replace(parts[0],"+"," ");\r
                                        args[StringFunctions::UriDecode(parts[0])];\r
                                        if(parts.size()>1)\r
                                        {\r
+                                               // replace + with space before UriDecoding\r
+                                               parts[1]=StringFunctions::Replace(parts[1],"+"," ");\r
                                                args[StringFunctions::UriDecode(parts[0])]=StringFunctions::UriDecode(parts[1]);\r
                                        }\r
                                }\r
@@ -149,3 +153,14 @@ const bool IPageHandler::Handle(shttpd_arg *arg)
                return false;\r
        }\r
 }\r
+\r
+const std::string IPageHandler::SanitizeOutput(const std::string &input)\r
+{\r
+       // must do & first because all other elements have & in them!\r
+       std::string output=StringFunctions::Replace(input,"&","&amp;");\r
+       output=StringFunctions::Replace(output,"<","&lt;");\r
+       output=StringFunctions::Replace(output,">","&gt;");\r
+       output=StringFunctions::Replace(output,"\"","&quot;");\r
+       output=StringFunctions::Replace(output," ","&nbsp;");\r
+       return output;\r
+}\r