W pierwszym pliku mam formularz (w skrócie):
Natomiast w docelowym pobieram dane (m.in.):
++$tbl[$_POST['odp']];
Wszystko działało, póki nie wstawiłem pomiędzy skrypt weryfikujący IP, czyli na początku drugiego pliku dodałem:
require('voter.php'); $voter = new Voter(); if($voter->isPossibleToVote()){ $voter->saveVoteDate(); //kod zapisu głosu } else { //komunikat o odrzuceniu głosu }
Oddzielny plik voter.php wygląda tak:
<?php /** * Class Voter */ class Voter { const FILENAME = 'voting_ips.txt'; public function isPossibleToVote() { $ip = $this->getIp(); if ($ip === null) { return false; //nie można zidentyfikować IP } $ips = $this->read(); return true; //nie głosował jeszcze return true; //głosował, ale czas minął } else { return false; } } public function saveVoteDate() { $ip = $this->getIp(); $ips = $this->read(); $this->write($ips); } /** * @return array */ private function read() { if ($serializedData) { } else { } } else { } } /** * @param array $ips */ { } /** * @return string|null */ private function getIp() { 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR' ); foreach ($ip_keys as $key) { // trim for safety measures // attempt to validate IP if ($this->validateIp($ip)) { return $ip; } } } } } /** * @param string $ip * @return bool */ private function validateIp($ip) { if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) === false ) { return false; } return true; } }
Wstawiałem na początku voter.php przekazywanie wartości w ten sposób:
ale to chyba nie jest tak jak trzeba bo nie działa. Może w innym miejscu powinien być ten wpis.
Jak przekazać dane z formularza dalej, aby nie zostały zgubione po drodze przez voter.php?