После почти 3-х дней поиска и устранения неисправностей я должен попросить совета.
У меня есть маленькая доска с изображениями с 4 изображениями и 4 кнопками «как».Ранее я сделал так, чтобы количество нажатий каждой кнопки сохранялось в .txt файле.Теперь мне нужно сделать так, чтобы человек мог нажать определенную кнопку только один раз .
Это ip.txt
.Число слева - это идентификатор кнопки, справа - IP-адрес человека, который нажал эту кнопку.
click-001||127.0.0.1
click-002||
Это очень просто.Мне нужно убедиться, что он сохраняет ip, когда я нажимаю на моем компьютере, затем сохраняет другой IP, когда я нажимаю на своем планшете - и останавливает , что бы я ни делал дальше.Теперь в течение последних нескольких дней он делал что-нибудь кроме этого!
Мой текущий код с isset
.Это видит первый IP, но не добавляет второй:
$file2 = 'ip.txt'; // path to text file that stores counts
$fh2 = fopen($file2, 'r+');
$ip_addr = $_SERVER['REMOTE_ADDR'];
$lines2 = '';
while(!feof($fh2)) {
$line2 = trim(fgets($fh2));
if ($line2) {
$line2 = explode('||', $line2);
if(isset($line2[0], $line2[1])) {
$item2 = trim($line2[0]);
if(!empty($item2)) {
if($item2 == $id) {
if(empty($line2[1])) {
$lines2 .= "$item2||$ip_addr\r\n";
file_put_contents($file2, $lines2);
} else {
// this is where it always fails
if (!isset($ip_addr)) { $ip_all = $line2[1] . " " . $ip_addr;
$lines2 .= "$item2||$ip_all\r\n";
file_put_contents($file2, $lines2);
} else {
echo "lul";
}
}
}
}
}
}
}
fclose($fh2);
Я также попробовал это с функцией in_array
:
$ip_all = array($line2[1]);
if (!in_array($ip_addr, $ip_all)) {
array_push($ip_all, ',' , $ip_addr);
$ip_fin = implode($ip_all);
$lines2 .= "$item2||$ip_fin\r\n";
file_put_contents($file2, $lines2);
^ Этот также видит первый IP и добавляет второе , но затем не может определить, существует ли уже IP-адрес, и просто продолжает добавлять копии, когда я нажимаю.
Это жестоко.Что я делаю не так и есть ли более простой способ?