Witam
W pierwszym pliku mam formularz (w skrócie):
<form method="post" action="dopisz.php"> <BUTTON name="odp" type="submit" value="b">
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();
$ips[$ip] = date('Y-m-d H:i:s');
$this->write($ips);
}
/**
* @return array
*/
private function read()
{
if ($serializedData) {
} else {
}
} else {
}
}
/**
* @param array $ips
*/
private function write
(array $ips) {
file_put_contents
(self::FILENAME, serialize($ips), LOCK_EX
); }
/**
* @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) {
foreach (explode(',', $_SERVER[$key]) as $ip) { // trim for safety measures
// attempt to validate IP
if ($this->validateIp($ip)) {
return $ip;
}
}
}
}
return isset($_SERVER['REMOTE_ADDR']) ?
$_SERVER['REMOTE_ADDR'] : null; }
/**
* @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:
<form method="post" action="dopisz.php"> <input type="hidden" name="odp" value="POST">
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?