Pastebin launched a little side project called HostCabi.net, check it out ;-)Don't like ads? PRO users don't see any ads ;-)
Guest

webformmailer.php

By: a guest on Dec 21st, 2012  |  syntax: None  |  size: 4.89 KB  |  hits: 24  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. From webformmailer.php
  2.  
  3. <?php
  4.  
  5. if ( !isset($_SERVER['SPI'])) {
  6.         die();
  7. }
  8.  
  9. if (!isset($_SERVER['DOCUMENT_ROOT'])) {
  10.         echo("CRITICAL: we seem to be running outside of the norm.\n");
  11.         header("Location: http://".$_SERVER["HTTP_HOST"]."/");
  12.         die("CRITICAL: Document root unavailable.\n");
  13. }
  14.  
  15. $request_method = $_SERVER["REQUEST_METHOD"];
  16. if($request_method == "GET") {
  17.         $query_vars = $_GET;
  18. }
  19. elseif ($request_method == "POST") {
  20.         $query_vars = $_POST;
  21. }
  22. reset($query_vars);
  23.  
  24. function customsort($a,$b) {
  25.         // $a is array for form vars, $b is comma seperated case sensitive field order
  26.         // this is case sensitive -- good idea to hrc that.
  27.         $data = array();
  28.         if ( strstr($b,',') == FALSE )  {
  29.                 $b = $b.",";
  30.         }
  31.         $ordering = split(',',$b);
  32.         foreach ($ordering as $orderitem) {
  33.                 if ( ($orderitem != null) && ($orderitem != "") ) {
  34.                         if (isset($a[$orderitem])) {
  35.                                 $data[$orderitem] = $a[$orderitem];
  36.                         }
  37.                 }
  38.         }
  39.         foreach ($a as $key=>$val) {
  40.                 $data[$key] = $a[$key];
  41.         }
  42.         return $data;
  43. }
  44.  
  45. function xmlentities($string) {
  46.         return str_replace ( array('&', '"', "'", '<', '>'), array('&amp;', '&quot;', '&apos;', '&lt;', '&gt;'), $string);
  47. }
  48.  
  49. $t = date("U");
  50.  
  51. $formhomedir = preg_replace('/.*\/home\/content/','',$_SERVER['DOCUMENT_ROOT']);
  52. $formhomedir = explode('/',$formhomedir);
  53. $formhome="/home/content".$formhomedir[0]."/".$formhomedir[1]."/".$formhomedir[2]."/".$formhomedir[3]."/".$formhomedir[4]."/data/";
  54.  
  55. $file_order = ".default";
  56. $file_format = ".text";
  57. $file_interval = ".15m";
  58. $field_order = "";
  59.  
  60. if (isset($query_vars['form_order'])) {
  61.         if ($query_vars['form_order'] != "alpha") {
  62.                 $field_order=$query_vars['form_order'];
  63.                 $file_order=".custom";
  64.                 $query_vars = customsort($query_vars,$field_order);
  65.         }
  66.         else {
  67.                 switch ($query_vars['form_order']) {
  68.                         case "alpha":
  69.                                 uksort($query_vars,'strnatcasecmp');
  70.                                 $file_order=".alpha";
  71.                         break;
  72.                         default:
  73.                                 $file_order=".default";
  74.                         break;
  75.                 }
  76.         }
  77. }
  78.  
  79. if (isset($query_vars['form_format'])) {
  80.         switch ($query_vars['form_format']) {
  81.                 case "csv":
  82.                         $file_format = ".csv";
  83.                 break;
  84.                 case "html":
  85.                         $file_format = ".html";
  86.                 break;
  87.                 case "xml":
  88.                         $file_format = ".xml";
  89.                 break;
  90.                 case "text":
  91.                 case "default":
  92.                 default:
  93.                         $file_format = ".text";
  94.                 break;
  95.         }
  96. }
  97.  
  98. if (isset($query_vars['form_delivery'])) {
  99.         switch ($query_vars['form_delivery']) {
  100.                 case "hourly":
  101.                         $file_interval = ".60m";
  102.                 break;
  103.                 case "hourly_digest":
  104.                         $file_interval = ".60mc";
  105.                 break;
  106.                 case "daily":
  107.                         $file_interval = ".24h";
  108.                 break;
  109.                 case "daily_digest":
  110.                         $file_interval = ".24hc";
  111.                 break;
  112.                 case "digest":
  113.                         $file_interval = ".15mc";
  114.                 break;
  115.                 case "default":
  116.                 default:
  117.                         $file_interval = ".15m";
  118.                 break;
  119.         }
  120. }
  121.  
  122. $file = $formhome."form_".$t.$file_order.$file_format.$file_interval;
  123. $fp = fopen($file,"w");
  124.  
  125. switch ($file_format) {
  126.         case ".csv":
  127.                 $csvkeys = "";
  128.                 $csvvals= "";
  129.                 $firsttime = "";
  130.                 while (list ($key, $val) = each ($query_vars)) {
  131.                         if ( ($key == "form_order") ||
  132.                                 ($key == "form_format") ||
  133.                                 ($key == "form_delivery") ||
  134.                                 ($key == "redirect") ) {
  135.                         }
  136.                         else {
  137.                                 if ($csvkeys != "") {
  138.                                         $firsttime=",";
  139.                                 }
  140.                                 $tmpkey=escapeshellcmd($key);
  141.                                 $csvkeys = $csvkeys.$firsttime."'".$tmpkey."'";
  142.                                 $tmpval=escapeshellcmd($val);
  143.                                 $csvvals = $csvvals.$firsttime."'".$tmpval."'";
  144.                         }
  145.                 }
  146.                 fputs($fp,"$csvkeys\n");
  147.                 fputs($fp,"$csvvals\n");
  148.         break;
  149.         case ".html":
  150.                 fputs($fp,"<table border=\"1\" cellspacing=\"1\" cellpadding=\"2\">\n");
  151.         break;
  152.         case ".xml":
  153.                 fputs($fp,"<form>\n");
  154.         break;
  155. }
  156.                
  157. while (list ($key, $val) = each ($query_vars)) {
  158.         if ($key == "redirect") {
  159.                 $landing_page = $val;
  160.         }
  161.         if ( ($key == "form_order") ||
  162.                 ($key == "form_format") ||
  163.                 ($key == "form_delivery") ||
  164.                 ($key == "redirect") ) {
  165.  
  166.         }
  167.         else {
  168.                 switch ($file_format) {
  169.                         case ".html":
  170.                                 fputs($fp,"\t<tr>\n");
  171.                                 fputs($fp,"\t\t<td><b>$key</b></td>\n");
  172.                                 fputs($fp,"\t\t<td>$val</td>\n");
  173.                                 fputs($fp,"\t</tr>\n");
  174.                                
  175.                         break;
  176.                         case ".csv":
  177.                                 // content is already output
  178.                         break;
  179.                         case ".xml":
  180.                                 fputs($fp,"\t<field>\n");
  181.                                 fputs($fp,"\t\t<fieldname>".xmlentities($key)."</fieldname>\n");
  182.                                 fputs($fp,"\t\t<fieldvalue>".xmlentities($val)."</fieldvalue>\n");
  183.                                 fputs($fp,"\t</field>\n");
  184.                         break;
  185.                         case ".text":
  186.                         default:
  187.                                 fputs($fp,$key.": ".$val."\n");
  188.                         break;
  189.                 }
  190.         }
  191. }
  192.  
  193. switch ($file_format) {
  194.         case ".html":
  195.                 fputs($fp,"</table>\n");
  196.         break;
  197.         case ".xml":
  198.                 fputs($fp,"</form>\n");
  199.         break;
  200. }
  201.  
  202.  
  203. fclose($fp);
  204.  
  205. if ($landing_page != "") {
  206.         header("Location: http://".$_SERVER["HTTP_HOST"]."/$landing_page");
  207. }
  208. else {
  209.         header("Location: http://".$_SERVER["HTTP_HOST"]."/");
  210. }
  211.  
  212.  
  213. ?>