Aleyküm selam, bunu veritabanından yapmak yerine ip adresini php tarafında alıp bunu x isimli sessiona 86400 saniyeliğine kayıt edin. Sonrasında bir if sorgusu ile x isimli session yok ise veritabanına kayıt işlemi yaptırabilirsiniz.
Hocam bu işlemi ya mysql ya da php tarafından yapmanız gerekiyor. Mysql'de yapmak için phpmyadmin den şu sql komutu girmeniz gerekiyor:
ALTER TABLE 'tablo_ismi' ADD UNIQUE 'unique_index'('birinci_uniq', 'ikinci_uniq');Ancak ben
@Mücahit; hocama katılıyorum ve bu işlem backend tarafından yapılmasının daha olacağını düşünüyorum. Yalnız session ile değil de veritabanından sorgu şeklinde yapılsa daha iyi olabilir düşüncesindeyim.
- Önce işlem yapılacak olan tablodan ip ve son güncelleme verisi çekilir
- Sonra son güncelleme tarihinden bugünün tarihi çıkartılır
- Eğer aradaki fark 24 saatten yani 1 günden fazlaysa
- İlgili tabloya kişinin ip adresi atanır ve son güncelleme tarihine bugünün tarihi atanır
Yazmış olduğum kod:
$id = [B]islem_yapilacak_id[/B];
$ip = [B]islem_yapilacak_ip[/B];
$ipbul = $conn->query("SELECT * FROM [B]tablo_ismi[/B] WHERE id='$id'");
$ipbul = $ipbul ->fetch(PDO::FETCH_ASSOC);
$buguntarihi= date('d/m/Y H:i:s');
$fark = ($buguntarihi - $ipbul['songuncellemetarihi']) / 86400;
if(fark>1){ //1 günden yani 24 saatten fazlaysa
try{
$update = $conn->prepare("UPDATE [B]tablo_ismi[/B] SET
ip=:frm_ip,
songuncellemetarihi =:frm_songuncellemetarihi
WHERE id=:frm_id");
$update = $update->execute(array(
"frm_id" => $id ,
"frm_songuncellemetarihi " => $buguntarihi,
"frm_ip" => $ip
));
echo "Successful";
header('Location: index.php');
} catch ( PDOException $e ){
print $e->getMessage();
echo "Transaction failed";
}
}PDO kodları için kendime şöyle bir doküman oluşturmuştum. Belki işinize yarar:
https://github.com/asametyildirim/Ph.../tree/main/PDO
Teşekkür ederim deniyorum inşallah yapabilirim