David M. Boren
Hectopat
- Katılım
- 12 Haziran 2016
- Mesajlar
- 61
Daha fazla
- Cinsiyet
- Erkek
Merhabalar,
Anket modülü geliştiriyorum, IP numaralarını anketin seçeneğine göre kaydedeceğim. Atıyorum sitede 3 tane anket varsa, kullanııcı sadece 1. ankete oy verdiyse 1. anket için IP tabloma veri eklenmeli ki. Kullanıcı isterse 2 ve 3. anketlere de oy verebilsin diye. Amacım tam olarak bu yani. Ama eklemeyi yaparken nedense bir kere ekleyince 2 ve 3. anketlere de oy verilmiş gözüküyor. Bu sorunu nasıl çözerim? Yardımcı olabilir misiniz?
Anketin listelendiği ve IP'leri kaydettiğim sayfanın kaynak kodları ve IP tablosunun yapısına dair bir ekran görüntüsünü POST'un sonuna bıraktım:
IP Tablosunun Yapısı:
Anket modülü geliştiriyorum, IP numaralarını anketin seçeneğine göre kaydedeceğim. Atıyorum sitede 3 tane anket varsa, kullanııcı sadece 1. ankete oy verdiyse 1. anket için IP tabloma veri eklenmeli ki. Kullanıcı isterse 2 ve 3. anketlere de oy verebilsin diye. Amacım tam olarak bu yani. Ama eklemeyi yaparken nedense bir kere ekleyince 2 ve 3. anketlere de oy verilmiş gözüküyor. Bu sorunu nasıl çözerim? Yardımcı olabilir misiniz?
Anketin listelendiği ve IP'leri kaydettiğim sayfanın kaynak kodları ve IP tablosunun yapısına dair bir ekran görüntüsünü POST'un sonuna bıraktım:
PHP:
<?php include("config.php"); ?>
<?php
$current_date = date("d-m-Y"); // Bugünün tarihini al
$del = $db->prepare("DELETE FROM survey_ip WHERE surveyip_tarih != ?");
$del->execute(array(
$current_date
));
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
if ($_POST["anket-submit"]) {
$cevap_id =$_POST["anket"];
$option = $db->prepare("SELECT options_kategori FROM options WHERE options_id = ?");
$option->execute(array($cevap_id));
$satir=$option->fetch(PDO::FETCH_ASSOC);
$altKategori = $satir["options_kategori"];
$option = $db->prepare("SELECT * FROM survey WHERE survey_id = ?");
$option->execute(array($altKategori));
$satir=$option->fetchALL(PDO::FETCH_ASSOC);
$anaKat = $satir["survey_id"];
$sql = $db->prepare("SELECT surveyip_ip FROM survey_ip");
$sql->execute(array());
$row=$sql->fetch(PDO::FETCH_ASSOC);
if ($row["surveyip_ip"] != $ip) {
/*
INSERT işlemini yapmaya çalışıyoruz, aşağıda insert başarılı mı? diye sorguluyoruz ama else kısmı çalışıyor, yani INSERT başarısız oluyor...
*/
$query = $db->prepare("INSERT INTO survey_ip SET
surveyip_ip = ?,
surveyip_tarih = ?,
surveyip_options = ?");
$insert = $query->execute(array(
$ip,$current_date,$anaKat
));
if ($isnert) {
echo "başarılı!";
} else {
echo "başarısız!";
}
$sql2 = $db->prepare("SELECT * FROM options WHERE options_id = ?");
$sql2->execute(array($cevap_id));
$row2=$sql2->fetch(PDO::FETCH_ASSOC);
$cevap_toplam = $row2["options_toplam"] + 1;
$guncelle = $db->prepare("UPDATE options SET options_toplam=? WHERE options_id = ?");
$guncelle->execute(array($cevap_toplam,$cevap_id));
$sql2 = $db->prepare("SELECT * FROM options WHERE options_id = ?");
$sql2->execute(array($cevap_id));
$row2=$sql2->fetch(PDO::FETCH_ASSOC);
echo $row2["options_toplam"];
} else {
echo "Zaten daha önce bu ankete oy verdiniz! Ankate günde sadece 1 kere oy verebilirsiniz...";
}
}
?>
<?php
$sql = $db->prepare("SELECT * FROM survey");
$sql->execute(array());
$query=$sql->fetchALL(PDO::FETCH_ASSOC);
foreach( $query as $row ) {
$soru_id = $row["survey_id"];
?>
<form action="" method="POST">
Soru: <strong><?php echo $row['survey_baslik']; ?></strong><br />
<?php
$sql1 = $db->prepare("SELECT * FROM options WHERE options_kategori = ?");
$sql1->execute(array($soru_id));
$query1=$sql1->fetchALL(PDO::FETCH_ASSOC);
foreach( $query1 as $row1 ) {
?>
<input type="radio" name="anket" value="<?php echo $row1["options_id"]; ?>" />
<?php echo $row1["options_baslik"]; ?><br />
<?php
}
?>
<input type="hidden" value="<?php echo $soru_id; ?>" />
<button type="submit" name="anket-submit" value="1">Kaydet</button>
</form>
<?php } ?>
IP Tablosunun Yapısı:
Son düzenleme: