root / drupal7 / sites / all / modules / recaptcha / recaptcha-php / examples / example-captcha.php @ be58a50c
1 | be58a50c | Assos Assos | <?php
|
---|---|---|---|
2 | /**
|
||
3 | * Working sample code to accompany the library. The instructions here assume
|
||
4 | * you've just cloned the repo. If you've installed via composer, you will want
|
||
5 | * to adjust the path to the autoloader.
|
||
6 | *
|
||
7 | * 1. Run the server. For example, under Linux you can probably use:
|
||
8 | * /usr/bin/php -S "localhost:8000" "examples/example-captcha.php"
|
||
9 | * 2. Point your browser at http://localhost:8000
|
||
10 | * 3. Follow the instructions
|
||
11 | *
|
||
12 | * @copyright Copyright (c) 2015, Google Inc.
|
||
13 | * @link http://www.google.com/recaptcha
|
||
14 | *
|
||
15 | * Permission is hereby granted, free of charge, to any person obtaining a copy
|
||
16 | * of this software and associated documentation files (the "Software"), to deal
|
||
17 | * in the Software without restriction, including without limitation the rights
|
||
18 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||
19 | * copies of the Software, and to permit persons to whom the Software is
|
||
20 | * furnished to do so, subject to the following conditions:
|
||
21 | *
|
||
22 | * The above copyright notice and this permission notice shall be included in
|
||
23 | * all copies or substantial portions of the Software.
|
||
24 | *
|
||
25 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
26 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
27 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
28 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
29 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||
30 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||
31 | * THE SOFTWARE.
|
||
32 | */
|
||
33 | // Initiate the autoloader. The file should be generated by Composer.
|
||
34 | // You will provide your own autoloader or require the files directly if you did
|
||
35 | // not install via Composer.
|
||
36 | require_once __DIR__ . '/../vendor/autoload.php'; |
||
37 | |||
38 | // Register API keys at https://www.google.com/recaptcha/admin
|
||
39 | $siteKey = ''; |
||
40 | $secret = ''; |
||
41 | |||
42 | // reCAPTCHA supported 40+ languages listed here: https://developers.google.com/recaptcha/docs/language
|
||
43 | $lang = 'en'; |
||
44 | ?>
|
||
45 | <html>
|
||
46 | <head>
|
||
47 | <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> |
||
48 | <title>reCAPTCHA Example</title> |
||
49 | <link rel="shortcut icon" href="//www.gstatic.com/recaptcha/admin/favicon.ico" type="image/x-icon"/> |
||
50 | <style type="text/css"> |
||
51 | body {
|
||
52 | margin: 1em 5em 0 5em;
|
||
53 | font-family: sans-serif;
|
||
54 | }
|
||
55 | fieldset {
|
||
56 | display: inline;
|
||
57 | padding: 1em;
|
||
58 | }
|
||
59 | </style>
|
||
60 | </head>
|
||
61 | <body>
|
||
62 | <h1>reCAPTCHA Example</h1> |
||
63 | <?php if ($siteKey === '' || $secret === ''): ?> |
||
64 | <h2>Add your keys</h2> |
||
65 | <p>If you do not have keys already then visit <tt> |
||
66 | <a href = "https://www.google.com/recaptcha/admin"> |
||
67 | https://www.google.com/recaptcha/admin</a></tt> to generate them. |
||
68 | Edit this file and set the respective keys in <tt>$siteKey</tt> and |
||
69 | <tt>$secret</tt>. Reload the page after this.</p> |
||
70 | <?php
|
||
71 | elseif (isset($_POST['g-recaptcha-response'])): |
||
72 | // The POST data here is unfiltered because this is an example.
|
||
73 | // In production, *always* sanitise and validate your input'
|
||
74 | ?>
|
||
75 | <h2><tt>POST</tt> data</h2> |
||
76 | <tt><pre><?php var_export($_POST); ?></pre></tt> |
||
77 | <?php
|
||
78 | // If the form submission includes the "g-captcha-response" field
|
||
79 | // Create an instance of the service using your secret
|
||
80 | $recaptcha = new \ReCaptcha\ReCaptcha($secret); |
||
81 | |||
82 | // If file_get_contents() is locked down on your PHP installation to disallow
|
||
83 | // its use with URLs, then you can use the alternative request method instead.
|
||
84 | // This makes use of fsockopen() instead.
|
||
85 | // $recaptcha = new \ReCaptcha\ReCaptcha($secret, new \ReCaptcha\RequestMethod\SocketPost());
|
||
86 | |||
87 | // Make the call to verify the response and also pass the user's IP address
|
||
88 | $resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']); |
||
89 | |||
90 | if ($resp->isSuccess()): |
||
91 | // If the response is a success, that's it!
|
||
92 | ?>
|
||
93 | <h2>Success!</h2> |
||
94 | <p>That's it. Everything is working. Go integrate this into your real project.</p> |
||
95 | <p><a href="/">Try again</a></p> |
||
96 | <?php
|
||
97 | else:
|
||
98 | // If it's not successfull, then one or more error codes will be returned.
|
||
99 | ?>
|
||
100 | <h2>Something went wrong</h2> |
||
101 | <p>The following error was returned: <?php |
||
102 | foreach ($resp->getErrorCodes() as $code) { |
||
103 | echo '<tt>' , $code , '</tt> '; |
||
104 | } |
||
105 | ?></p> |
||
106 | <p>Check the error code reference at <tt><a href="https://developers.google.com/recaptcha/docs/verify#error-code-reference">https://developers.google.com/recaptcha/docs/verify#error-code-reference</a></tt>. |
||
107 | <p><strong>Note:</strong> Error code <tt>missing-input-response</tt> may mean the user just didn't complete the reCAPTCHA.</p> |
||
108 | <p><a href="/">Try again</a></p> |
||
109 | <?php
|
||
110 | endif;
|
||
111 | else:
|
||
112 | // Add the g-recaptcha tag to the form you want to include the reCAPTCHA element
|
||
113 | ?>
|
||
114 | <p>Complete the reCAPTCHA then submit the form.</p> |
||
115 | <form action="/" method="post"> |
||
116 | <fieldset>
|
||
117 | <legend>An example form</legend> |
||
118 | <p>Example input A: <input type="text" name="ex-a" value="foo"></p> |
||
119 | <p>Example input B: <input type="text" name="ex-b" value="bar"></p> |
||
120 | |||
121 | <div class="g-recaptcha" data-sitekey="<?php echo $siteKey; ?>"></div> |
||
122 | <script type="text/javascript" |
||
123 | src="https://www.google.com/recaptcha/api.js?hl=<?php echo $lang; ?>"> |
||
124 | </script> |
||
125 | <p><input type="submit" value="Submit" /></p> |
||
126 | </fieldset>
|
||
127 | </form>
|
||
128 | <?php endif; ?> |
||
129 | </body>
|
||
130 | </html> |