Tải bản đầy đủ (.pdf) (5 trang)

Secure PHP Development- P147 pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (103.51 KB, 5 trang )

3. Install the VOTE applications. From the ch20 directory of the CD-ROM,
extract ch20.tar.gz in %DocumentRoot%. This will create a directory
called vote in your document root. Configure %DocumentRoot%/vote/
apps/vote.conf
for path and database settings. The applications are
installed in the %DocumentRoot%/vote/apps directory, and the templates
are stored in %DocumentRoot%/vote/apps/templates.
Your MySQL server is hosted on the intranet Web server; therefore, it can
be accessed via localhost. However, if this is not the case, you can easily
modify the database URLs in each application’s configuration files. For
example, the vote.conf file has a MySQL database access URL such as the
following:
$VOTE_DB_URL = ‘mysql://root:foobar@localhost/VOTE’;
Suppose, for example, that your database server is called db.domain.com,
and that the username and password for accessing the VOTE database are
admin and db123, respectively. (You will create both during this installa-
tion process.) In such a case, you would modify the database access URL
in the vote.conf configuration file as follows:
$VOTE_DB_URL =
‘mysql://admin:/VOTE’;
4. Set file/directory permissions. Make sure you have changed file and direc-
tory permissions such that your internet Web server can access all the files.
Once you have performed the preceding steps, you are ready to test your application.
Testing the Voting Tool
The first step in testing y our vote application is to develop a poll form. In this sam-
ple case, we will develop a simple poll form that asks voters whether they like the
current Web site. This form, which is provided on the CD-ROM in (ch20/apps/
vote/sample_polls/website_poll.html
), is shown in Figure 20-3.
Figure 20-3: A sample Web site poll form.
706 Part V: Internet Applications


26 549669 ch20.qxd 4/4/03 9:27 AM Page 706
If you examine the source of this Web form, you will notice the following HTML
form code:
<form action=”/vote/apps/vote.php” target=_blank method=”POST”>
<font face=”Verdana” size=”1”>How do you rate this site? <p>
<input type=radio name=”vote” value=”1”>Great, very informative<br>
<input type=radio name=”vote” value=”2”>Good, has good info <br>
<input type=radio name=”vote” value=”3”>OK, needs a bit of improvement<br>
<input type=radio name=”vote” value=”4”>Poor, needs a lot of improvement
<p>
<input type=submit value=”Vote”>
<input type=hidden name=”poll_id” value=”1”>
</font>
</form>
Notice that the form action line is set to /vote/apps/vote.php, as it is needed to
call the vote application. In addition, note that each vote radio button is called
“vote” and has a numeric value (1–4). This is needed to collect vote data. Finally,
note a hidden form field called poll_id, which is set to 1. This number identifies the
form in the vote.conf file’s $choicesPerPoll array, which is shown here:
$choicesPerPoll = array(
//POLL ID => NUMBER OF CHOICES
1 => 4,
2 => 7
);
This array in vote.conf determines the maximum number of options per polling
form. Here, our Web site polling form (poll_id 1) has four options, as shown in the
aforementioned HTML form, so the $choicesPerPoll array has the same number
specified.
Now, if you select any of the voting options for the Web site form and click
the Vote button, your vote will be stored in the VOTES table in the VOTE database.

You will be given a cookie so that you cannot vote again until the COOKIE_
EXPIRATION_TIME
time specified in vote.conf expires.
As soon as you click the Vote button, you will see a pop-up window that shows
the current poll results (i.e., including your vote). This page is shown using a
results template stored in the templates directory (%DocumentRoot%/vote/
apps/templates
). The name of the template is specific to each poll_id. For exam-
ple, a poll form with poll_id must have a template called 001.html in the
%DocumentRoot/%vote/apps/templates directory. Because each poll has its own
results template, you can customize each poll’s results as desired.
Chapter 20: Web Site Tools 707
26 549669 ch20.qxd 4/4/03 9:27 AM Page 707
The basic structure of a results template is as follows:
<! BEGIN mainBlock >
{1_VOTE_COUNT} {1_VOTE_PERCENT}
{2_VOTE_COUNT} {2_VOTE_PERCENT}

{n_VOTE_COUNT} {n_VOTE_PERCENT}
{TOTAL_VOTES}
<! END mainBlock >
Each of the tags within the braces is replaced with respective vote data. For
example, {1_VOTE_COUNT} is replaced with the total number of votes cast for
option #1 in a poll. The {1_VOTE_PERCENT} tag is replaced with the percentage of
votes cast for option #1 in a poll. The {TOTAL_VOTES} tag is replaced with the
grand total of votes cast in a poll. Figure 20-4 shows a sample results page for the
Web site poll described in the preceding example.
Figure 20-4: A sample Web site’s poll results.
So far, our example poll form has used multiple radio button options. However, the
vote tool also supports multiple checkbox options, for polls in which you want visitors

to cast multiple votes that identify their preferences from a group of items. For exam-
ple, Figure 20-5 shows a poll form that asks users to select one or more languages.
This form can be found in the sample_polls directory as language_poll.html.
708 Part V: Internet Applications
26 549669 ch20.qxd 4/4/03 9:27 AM Page 708
Figure 20-5: A sample language poll form using checkboxes.
The source for this form looks as follows:
<form action=”/vote/apps/vote.php” target=_blank method=”POST”>
What languages do you write code? (check all that applies)<p>
<input type=checkbox name=”vote[]” value=”1”>PHP<br>
<input type=checkbox name=”vote[]” value=”2”>Perl<br>
<input type=checkbox name=”vote[]” value=”3”>C<br>
<input type=checkbox name=”vote[]” value=”4”>C++<br>
<input type=checkbox name=”vote[]” value=”5”>Java<br>
<input type=checkbox name=”vote[]” value=”6”>Python<br>
<input type=checkbox name=”vote[]” value=”7”>Smalltalk<br>
<input type=submit value=”Vote”<br>
<input type=hidden name=”poll_id” value=”2”>
Here, notice that the vote field name is not vote but vote[], to indicate that we
are returning an array of options. The values are still numeric.
When this poll form is submitted with multiple selections, each vote is added in
the database. Figure 20-6 shows an example results page (displayed using tem-
plates/002.html
).
Chapter 20: Web Site Tools 709
26 549669 ch20.qxd 4/4/03 9:27 AM Page 709
Figure 20-6: A favorite language poll results page.
Summary
In this chapter, you learned how to develop a vote application that could be used to
poll your Web site visitors about issues related to your Web site or other matters

about which you are interested to know their opinions. This is a nifty tool to have
for most Web sites.
710 Part V: Internet Applications
26 549669 ch20.qxd 4/4/03 9:27 AM Page 710

×