Süper Üye
kontrol.php
Yukarıdaki kod normalde önce çerez sonra ip kontrolü yapıp oy kaydı yapıyor ama birden fazla kişi aynı anda oy verince çoğu kişinin oyu geçersiz oluyor.
PHP:
<?php
$servername = 'localhost';
$username = 'root';
$password = '';
$dbname = 'id19189709_secim';
$ip = $_SERVER['REMOTE_ADDR'];
$partyNumber = $_POST['party'];
$voteCookie = 'vote';
$response = array();
$dosya = 'ips.txt';
if (isset($_COOKIE[$voteCookie])) {
$votes = json_decode($_COOKIE[$voteCookie], true);
if (in_array($partyNumber, $votes)) {
$response['allowed'] = false;
} else {
$response['allowed'] = true;
$votes[] = $partyNumber;
}
} else {
$kaydedilmisIPler = file_get_contents($dosya);
if (strpos($kaydedilmisIPler, $ip) !== false) {
header('Location: ./error2.php');
exit;
}
else{
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die('Veritabanı bağlantısı başarısız: ' . $conn->connect_error);
}
$sql = "UPDATE parties SET votes = votes + 1 WHERE id = $partyNumber";
if ($conn->query($sql) === TRUE) {
$response['allowed'] = true;
$votes = array($partyNumber);
$ip = $_SERVER['REMOTE_ADDR'];
setcookie($voteCookie, json_encode($votes), 1689465600, '/');
saveIP($ip, $partyNumber);
} else {
$response['allowed'] = false;
}
$conn->close();
}
}
echo json_encode($response);
function saveIP($ip, $partyNumber) {
$file = 'ip_list.txt';
file_put_contents($file, $ip . " - " . $partyNumber . PHP_EOL, FILE_APPEND | LOCK_EX);
}
Yukarıdaki kod normalde önce çerez sonra ip kontrolü yapıp oy kaydı yapıyor ama birden fazla kişi aynı anda oy verince çoğu kişinin oyu geçersiz oluyor.