2016-11-14 51 views
0

除了最後一個CGI中HTML頁面的背景顏色以外,一切都可以使用。有人可以幫我嗎?我很困難。我不知道爲什麼背景顏色不會改變。(作業)如何使用用戶的輸入和cookie更改HTML背景(使用Perl CGI)?

下面是HTML:

<table border="2" cellspacing="5" cellpadding="5"> 
<tr> 
    <td align="center">Name</td> 
    <td><input type="text" name="customer" size="15"></td> 
</tr> 
<tr> 
    <td align="center">Select Membership Type</td> 
    <td> 
     <input type="radio" name="membership" value="0">Life 
     <input type="radio" name="membership" value="1">Annual 
     <input type="radio" name="membership" value="2">Free Trial 
    </td> 
</tr> 
<tr> 
    <td align="center">Choose Background Color</td> 
    <td> 
     <select name="color">   
      <option value="ye">Yellow 
      <option value="cy">Cyan 
      <option value="ma">Magenta 
      <option value="wh">White 
      <option value="pi">Pink 
      <option value="go">Gold 
      <option value="pa">PapayaWhip 
     </select> 
    </td> 
</tr> 
<tr> 
    <td colspan="2" align="center"><input type="submit" value="Sign Up and Set Options"></td> 
</tr> 
</table> 
</form> 

CGI從HTML上面節省了用戶的Cookie:

我使用一個數組來保存會員類型,和一個散列 使用選項標籤屬性值作爲全色名稱的鍵

my $customer = param('customer'); 
my $chosen_membership = param('membership'); 
my $color = param('color'); 
my @membership_type = ("Life", "Annual", "Free Trial"); 
my %colors = ("ye" => 'Yellow', 
     "cy" => 'Cyan', 
     "ma" => 'Magenta', 
     "wh" => 'White', 
     "pi" => 'Pink', 
     "go" => 'Gold', 
     "pa" => 'Papayawhip'); 

my $chosen_color = $colors{$color}; 

my $mycookie1 = cookie(-name=>'membership', 
        -value=>$membership_type[$chosen_membership], 
        -path=>'/', 
        -expires=>'+7d'); 

my $mycookie2 = cookie(-name=>'customer', 
        -value=>$customer, 
        -path=>'/', 
        -expires=>'+7d'); 

my $mycookie3 = cookie(-name=>"color", 
        -value=>$chosen_color, 
        -path=>'/', 
        -expires=>'+7d');      

print header(-cookie => [$mycookie1, $mycookie2, $mycookie3]); 
print start_html (-title => 'Assignment 7'); 
print "Thank you. Your data has been recorded</br>"; 
print "<a href='test3.cgi'>See member page</a>"; 
print end_html; 

讀取cookie的,並使用從HTML作爲背景色選擇的顏色的頁面

my $membership_name = cookie("membership"); 
my $customer_name = cookie("customer"); 
my $color_name = cookie("color"); 

print header, start_html; 
#what the hell, how to change background color?? 

<body bgcolor="$color_name">; 
print "<h2>Welcome back, $membership_name Member $customer_name.</h2>"; 
print "<h4>Site rather poor, huh? Sorry. We are working on it.</h4>"; 
print end_html; 
+0

我忘了補充一些信息。我很困難。一切正常,但背景顏色不會改變。 –

+1

那麼你到底想做什麼?你試過的結果是什麼?你期望會發生什麼? –

+0

@JTaylor成員陣列和客戶名稱正在成功保存。背景顏色不保存。我使用了'my $ chosen_color = $ colors {$ color};'來保存所選的顏色,並將其保存到我的$ mycookie3 = cookie(-name =>「color」, -value => $ chosen_color,'變量在Cookie中 –

回答

4
<body bgcolor="$color_name">; 

你缺少print和一些報價在這裏。我很驚訝這運行。

什麼你大概的意思是:

print "<body bgcolor='$color_name'>"; 
+0

我忽略了那部分,非常感謝你的幫助 –