PERL   66

survey cgi

Guest on 7th July 2022 08:35:57 AM

  1. #!/usr/local/bin/perl
  2. #############################################################################
  3. # survey.cgi
  4. #############################################################################
  5. #
  6. # Initialization
  7. #
  8. $html_background_color = "#ffffff";
  9. use DBI;
  10.  
  11. #############################################################################
  12. # main
  13. #############################################################################
  14.  
  15. print "Content-type:text/html\n\n";
  16. &translate_CGI_input(*record);
  17. &add_results;
  18. &print_thankyou;
  19.  
  20. #############################################################################
  21. # translate_CGI_input(pointer to returned assoc. array)
  22. #       This function interprets what request method is given, gets cgi data
  23. #       from that method, and unpacks the data.  It takes the data and parses
  24. #       it into an associative array, which is returned.  For handling the
  25. #       checkbox object in forms, the values associated with the key are joined
  26. #       with the \0, so they can be separated.
  27. #############################################################################
  28. sub translate_CGI_input {
  29.  
  30. local(*FORM_DATA) = @_;
  31. local($request_method,$cgi_string,@key_value_pairs,$key_value,$key,$value);
  32.  
  33. $request_method = $ENV{'REQUEST_METHOD'};
  34.  
  35. if ($request_method eq "GET"){
  36.         $cgi_string = $ENV{'QUERY_STRING'};
  37.         }
  38. elsif ($request_method eq "POST"){
  39.         $CONTENT_LENGTH= $ENV{'CONTENT_LENGTH'};
  40.         read(STDIN,$cgi_string,$CONTENT_LENGTH);
  41.         }
  42.  
  43. @key_value_pairs = split(/&/, $cgi_string);
  44.  
  45. foreach $key_value (@key_value_pairs) {
  46.         ($key,$value) = split(/=/, $key_value);
  47.         $value =~ tr/+/ /;
  48.         $value =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack("C",hex($1))/eg;
  49.         if(defined($FORM_DATA{$key})) {
  50.                 $FORM_DATA{$key} = join("\0",$FORM_DATA{$key},$value);
  51.                 }
  52.         else {
  53.                 $FORM_DATA{$key} = $value;
  54.                 }
  55.         }
  56. }
  57.  
  58. #############################################################################
  59. #
  60. # print_thankyou
  61. #
  62. #############################################################################
  63. sub print_thankyou {
  64.  
  65. print <<End_Of_Thankyou;
  66.  
  67. <HTML>
  68. <HEAD>
  69. <TITLE>Thank you for filling out the Reading Room survey.</TITLE>
  70. </HEAD>
  71. <BODY bgcolor="$html_background_color">
  72. <HR>
  73. <center><h2>Thank you for filling out the survey</h2></center>
  74. <HR>
  75. <center><a href="http://alcserv1.psfc.mit.edu/rr/">This link will return you the Reading Room Home page</a></center>
  76. <HR>
  77. </BODY>
  78. </HTML>
  79.  
  80. End_Of_Thankyou
  81. }
  82.  
  83. #############################################################################
  84. # add_results
  85. #############################################################################
  86.  
  87. sub add_results {
  88.  
  89.     if( !defined($record{'quiet'}) ){
  90.         $record{'quiet'} = -1;
  91.     }
  92.  
  93. $SQL_command = "INSERT INTO survey.results ".
  94.                                "(materials,".
  95.                                " materials_comments,".
  96.                                " quiet,".
  97.                                " quiet_comments,".
  98.                                " staff,".
  99.                                " staff_comments,".
  100.                                " workstations,".
  101.                                " workstations_comments,".
  102.                                " copying,".
  103.                                " copying_comments,".
  104.                                " community,".
  105.                                " community_comments,".
  106.                                " showplace,".
  107.                                " showplace_comments,".
  108.                                " misc_comments,".
  109.                                " name,".
  110.                                " status) ".
  111.                                "VALUES ( ".
  112.                                "\"$record{'materials'}\", ".
  113.                                "\"$record{'materials_comments'}\", ".
  114.                                "\"$record{'quiet'}\", ".
  115.                                "\"$record{'quiet_comments'}\", ".
  116.                                "\"$record{'staff'}\", ".
  117.                                "\"$record{'staff_comments'}\", ".
  118.                                "\"$record{'workstations'}\", ".
  119.                                "\"$record{'workstations_comments'}\", ".
  120.                                "\"$record{'copying'}\", ".
  121.                                "\"$record{'copying_comments'}\", ".
  122.                                "\"$record{'community'}\", ".
  123.                                "\"$record{'community_comments'}\", ".
  124.                                "\"$record{'showplace'}\", ".
  125.                                "\"$record{'showplace_comments'}\", ".
  126.                                "\"$record{'misc_comments'}\", ".
  127.                                "\"$record{'name'}\", ".
  128.                                "\"$record{'status'}\" ".
  129.                                ")\;";
  130.  
  131.     connectToDB();
  132.     $sth = $dbh->prepare($SQL_command);
  133.     $sth->execute;
  134.     disconnectFromDB();
  135. }
  136.  
  137. ##############################################################################
  138. # connectToDB
  139. #
  140. # This function connects to the reading room catalog database using DBI.
  141. ##############################################################################
  142. sub connectToDB {
  143.  
  144. $dbh = DBI->connect("DBI:mysql:survey:localhost:3306",
  145.                     "survey_admin",
  146.                     "thesnowman") || die "Cannot connect to SQL Server\n";
  147.  
  148. }
  149.  
  150. ##############################################################################
  151. # disconnectFromDB
  152. #
  153. # This function disconnects the reading room catalog database using DBI.
  154. ##############################################################################
  155. sub disconnectFromDB {
  156.  
  157.     $rc = $dbh->disconnect();
  158.  
  159. }

Raw Paste


Login or Register to edit or fork this paste. It's free.