Secure PHP Development- P147 pptx

5 185 0
Secure PHP Development- P147 pptx

Đang tải... (xem toàn văn)

Thông tin tài liệu

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:db132@db.domain.com/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 . 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& lt;br> <input. 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. 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?

Ngày đăng: 07/07/2014, 07:20

Mục lục

  • Secure PHP Development

    • Front Matter

      • Preface

        • Is This Book for You?

        • How This Book Is Organized

        • Tell Us What You Think

        • Acknowledgments

        • Contents at a Glance

        • Contents

        • Part I

          • Chapter 1: Features of Practical PHP Applications

            • Features of a Practical PHP Application

            • Employing the Features in Applications

            • Summary

            • Chapter 2: Understanding and Avoiding Security Risks

              • Identifying the Sources of Risk

              • Minimizing User-Input Risks

              • Not Revealing Sensitive Information

              • Summary

              • Chapter 3: PHP Best Practices

                • Best Practices for Naming Variables and Functions

                • Best Practices for Function/Method

                • Best Practices for Database

                • Best Practices for User Interface

                • Best Practices for Documentation

                • Best Practices for Web Security

                • Best Practices for Source Configuration Management

Tài liệu cùng người dùng

Tài liệu liên quan