#!D:\Perl\bin\perl.exe use CGI qw/:standard/; use CGI::Cookie; |
# # setprefs.pl # # Sample Perl script that processes the result of # editprefsform.pl to set preferences for each M-Business Anywhere # user. # |
# We grab the username and preferences from the form # submitted to us and we place the results in our # database. # # We also create a cookie with the user's uniqueID and set # that, just in case. |
srand; |
# The first thing we do is grab the preferences from the # submitted form and store them in an array. |
for ($i=0; $i<11; $i++) {
$prefs[$i] = param($i) || "0";
} |
$username = param("firstname");
$username =~ s/~:~/~;~/g; |
# If they have an ID already, we use it. Otherwise, we # give them one. |
%cookies = fetch CGI::Cookie; |
if ($cookies{'moviereviewID'} ) {
$myID = $cookies{'moviereviewID'}->value;
} else {
$myID = getrandomID();
} |
# We create the cookie, with a name, ID, and expires time # of 10 years. |
$tkcookie = new CGI::Cookie(-name=>'moviereviewID',
-value=>$myID,-expires=>'+10y'); |
# We write the user's preferences into the database. |
dbmopen(%prefs, "movieuserprefs", 0644)
|| die "cannot open DBM $!";
$prefstring = $username. "~:~". join ("~:~", @prefs);
$prefs{$myID} = $prefstring; |
dbmclose(%prefs); |
# Now, we use the Set-Cookie HTTP heading to actually set # the cookie. This is what the M-Business Sync Server needs # to set the value of a cookie. |
print "Content-type: text/html\n"; print "Set-Cookie: $tkcookie\n"; |
# Nobody should ever see this form, becuase we're sending # this with SubmitNoResponse. But I keep it around for # online users. |
print <<END_of_Response; |
<HTML>
<HEAD>
<META name="HandheldFriendly" content="true">
<TITLE>Cookie has been set</TITLE>
</HEAD>
<BODY>
Thanks for your submission!
<p>
Please go back to the
<a href="/cgi-bin/movies2/frontpage.pl">
Front Page to read more movie reviews.
<p> |
END_of_Response |
# This used to be a bad idea because srand used time() as # its seed. In later versions of Perl, it doesn't. |
sub getrandomID {
return (time(). sprintf("%07d",(int(rand(5000000)))));
} |
# And now, the important legal message... # # Copyright (c) 2007, iAnywhere Solutions, Inc., # all rights reserved. # # IANYWHERE MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT # THE SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR # PURPOSE, OR NON-INFRINGEMENT. IANYWHERE SHALL NOT BE # LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT # OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR # ITS DERIVATIVES. |
| Send feedback about this page using email. | Copyright © 2008, iAnywhere Solutions, Inc. |