Update maryland_voter.php
[clinton/MarylandElectronicPetitionSignature.git] / api / maryland_voter.php
1 <?PHP
2 ini_set('display_errors', 1);
3 ini_set('display_startup_errors', 1);
4 error_reporting(E_ALL);
5
6 $post['ctl00$MainContent$listLanguages'] = "en";
7 $post['listLanguages'] = "en";
8 if (isset($_POST['SearchFirstName'])){
9 //$post['SearchFirstName_field'] = 'ctl00$MainContent$txtSearchFirstName';
10 $post['ctl00$MainContent$txtSearchFirstName'] = $_POST['SearchFirstName'];
11 $post['txtSearchFirstName'] = $_POST['SearchFirstName'];
12 }else{
13 $post['ctl00$MainContent$txtSearchFirstName'] = '';
14 $post['txtSearchFirstName'] = '';
15 }
16 if (isset($_POST['SearchLastName'])){
17 //$post['SearchLastName_field'] = 'ctl00$MainContent$txtSearchLastName';
18 $post['ctl00$MainContent$txtSearchLastName'] = $_POST['SearchLastName'];
19 $post['ctl00$MainContent$txtSearchLastName'] = $_POST['SearchLastName'];
20 }else{
21 $post['ctl00$MainContent$txtSearchLastName'] = '';
22 $post['txtSearchLastName'] = '';
23 }
24 if (isset($_POST['DOBMonth'])){
25 //$post['DOBMonth_field'] = 'ctl00$MainContent$txtDOBMonth';
26 $post['ctl00$MainContent$txtDOBMonth'] = $_POST['DOBMonth'];
27 $post['txtDOBMonth'] = $_POST['DOBMonth'];
28 }else{
29 $post['ctl00$MainContent$txtDOBMonth'] = '';
30 $post['txtDOBMonth'] = '';
31 }
32 if (isset($_POST['DOBDay'])){
33 //$post['DOBDay_field'] = 'ctl00$MainContent$txtDOBDay';
34 $post['ctl00$MainContent$txtDOBDay'] = $_POST['DOBDay'];
35 $post['txtDOBDay'] = $_POST['DOBDay'];
36 }else{
37 $post['ctl00$MainContent$txtDOBDay'] = '';
38 $post['txtDOBDay'] = '';
39 }
40 if (isset($_POST['DOBYear'])){
41 //$post['DOBYear_field'] = 'ctl00$MainContent$txtDOBYear';
42 $post['ctl00$MainContent$txtDOBYear'] = $_POST['DOBYear'];
43 $post['txtDOBYear'] = $_POST['DOBYear'];
44 }else{
45 $post['ctl00$MainContent$txtDOBYear'] = '';
46 $post['txtDOBYear'] = '';
47 }
48 if (isset($_POST['SearchZipCode'])){
49 //$post['SearchZipCode_field'] = 'ctl00$MainContent$txtSearchZipCode';
50 $post['ctl00$MainContent$txtSearchZipCode'] = $_POST['SearchZipCode'];
51 $post['txtSearchZipCode'] = $_POST['SearchZipCode'];
52 }else{
53 $post['ctl00$MainContent$txtSearchZipCode'] = '';
54 $post['txtSearchZipCode'] = '';
55 }
56 if (isset($_POST['SearchHouseNumber'])){
57 //$post['SearchZipCode_field'] = 'ctl00$MainContent$txtSearchZipCode';
58 $post['ctl00$MainContent$txtSearchHouseNumber'] = $_POST['SearchHouseNumber'];
59 $post['txtSearchHouseNumber'] = $_POST['SearchHouseNumber'];
60 }else{
61 $post['ctl00$MainContent$txtSearchHouseNumber'] = '';
62 $post['txtSearchHouseNumber'] = '';
63 }
64 if (isset($_POST['SearchMiddleInitial'])){
65 //$post['SearchZipCode_field'] = 'ctl00$MainContent$txtSearchZipCode';
66 $post['ctl00$MainContent$txtSearchMiddleInitial'] = $_POST['SearchMiddleInitial'];
67 $post['txtSearchMiddleInitial'] = $_POST['SearchMiddleInitial'];
68 }else{
69 $post['ctl00$MainContent$txtSearchMiddleInitial'] = '';
70 $post['txtSearchMiddleInitial'] = '';
71 }
72
73
74 ?>
75
76 <form method='POST'>
77 <table>
78 <tr>
79 <td>SearchFirstName</td><td><input name='SearchFirstName' value='<?PHP echo $post['txtSearchFirstName'];?>'></td>
80 </tr>
81 <tr>
82 <td>SearchLastName</td><td><input name='SearchLastName' value='<?PHP echo $post['txtSearchLastName'];?>'></td>
83 </tr>
84 <tr>
85 <td>DOBMonth</td><td><input name='DOBMonth' value='<?PHP echo $post['txtDOBMonth'];?>'></td>
86 </tr>
87 <tr>
88 <td>DOBDay</td><td><input name='DOBDay' value='<?PHP echo $post['txtDOBDay'];?>'></td>
89 </tr>
90 <tr>
91 <td>DOBYear</td><td><input name='DOBYear' value='<?PHP echo $post['txtDOBYear'];?>'></td>
92 </tr>
93 <tr>
94 <td>SearchZipCode</td><td><input name='SearchZipCode' value='<?PHP echo $post['txtSearchZipCode'];?>'></td>
95 </tr>
96 <tr>
97 <td>SearchHouseNumber*</td><td><input name='SearchHouseNumber' value='<?PHP echo $post['txtSearchHouseNumber'];?>'></td>
98 </tr>
99 <tr>
100 <td>SearchMiddleInitial*</td><td><input name='SearchMiddleInitial' value='<?PHP echo $post['txtSearchMiddleInitial'];?>'></td>
101 </tr>
102 <tr>
103 <td>*Optional</td><td><input type='submit'></td>
104 </tr>
105 </table>
106 </form>
107
108
109 <?PHP
110 function cut_part_out($start,$end,$whole){
111 $parts = explode($start,$whole);
112 $subparts = explode($end,$parts[1]);
113 $out = $subparts[0];
114 return $out;
115 }
116
117 function getPage($url,$cookie,$post){
118 $url = str_replace('[month]',date('F'),$url); // replace month January through December
119 $url = str_replace('[day]',date('j'),$url); // replace day 1 to 31
120 $url = str_replace('[yesterday]',date('j',strtotime('yesterday')),$url); // replace day 1 to 31
121 $url = str_replace('[year]',date('Y'),$url); // replace year Examples: 1999 or 2003
122 $curl = curl_init();
123 curl_setopt ($curl, CURLOPT_URL, $url);
124 curl_setopt ($curl, CURLOPT_USERAGENT, sprintf("McGuire MEPS https://www.md-petition.com/ /%d.0",rand(4,50)));
125 curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
126 curl_setopt ($curl, CURLOPT_HEADER, 1);
127 curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);
128 curl_setopt ($curl, CURLOPT_FOLLOWLOCATION, true);
129 if ($cookie != ''){
130 curl_setopt ($curl, CURLOPT_HTTPHEADER, array("Cookie: ASP.NET_SessionId=$cookie")); // use cookies
131 }
132 /*
133 $postfields = array(
134 'upload_file' => '@file_to_upload.png',
135 'upload_text' => '@text_to_upload'
136 );
137 */
138 if ($post != ''){
139 curl_setopt ($curl, CURLOPT_POSTFIELDS, $post);
140 }
141 $html = curl_exec ($curl);
142 curl_close ($curl);
143 return $html;
144 }
145
146 // start a session to get a cookie
147 $form['url'] = 'https://voterservices.elections.maryland.gov/VoterSearch';
148 $form['html'] = getPage($form['url'],'','');
149
150 // extract the cookie from the header (see CURLOPT_HEADER)
151 $cookie = cut_part_out('ASP.NET_SessionId=',';',$form['html']);
152 // extract the form elements we will need to post with our data
153 $post['__VIEWSTATE'] = cut_part_out('id="__VIEWSTATE" value="','"',$form['html']);
154 $post['__VIEWSTATEGENERATOR'] = cut_part_out('id="__VIEWSTATEGENERATOR" value="','"',$form['html']);
155 $post['__VIEWSTATEENCRYPTED'] = cut_part_out('id="__VIEWSTATEENCRYPTED" value="','"',$form['html']);
156 $post['__EVENTVALIDATION'] = cut_part_out('id="__EVENTVALIDATION" value="','"',$form['html']);
157 // Voter Info Form Elements
158 //$post['Languages_field'] = 'ctl00$MainContent$listLanguages';
159
160 // debug - show full response make sure we have the cookie
161 echo "<li>COOKIE ASP.NET_SessionId $cookie</li>";
162 echo "<li>POST VIEWSTATE $post[__VIEWSTATE]</li>";
163 echo "<li>POST VIEWSTATEGENERATOR $post[__VIEWSTATEGENERATOR]</li>";
164 echo "<li>POST VIEWSTATEENCRYPTED $post[__VIEWSTATEENCRYPTED]</li>";
165 echo "<li>POST EVENTVALIDATION $post[__EVENTVALIDATION]</li>";
166 echo "<pre>";
167 echo print_r($post);
168 echo "</pre>";
169 echo "<hr><hr><hr><h1>Voter Form</h1>";
170 echo htmlspecialchars($form['html']);
171 echo '<hr><hr><hr>';
172 echo $form['html'];
173
174 if ($post['txtSearchFirstName'] != ''){
175 $result['html'] = getPage($form['url'],$cookie,$post);
176 echo "<hr><hr><hr><h1>SBE API RESULTS</h1>";
177 echo htmlspecialchars($result['html']);
178 echo '<hr><hr><hr>';
179 echo $result['html'];
180 }
181 ?>