PHP Garip Hata

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Süper Üye
Katılım
21 Eyl 2020
Mesajlar
646
Çözümler
4
Tepki puanı
43
Ödüller
5
Sosyal
5 HİZMET YILI
kontrol.php
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.
 
Uzman Üye
Katılım
20 Ocak 2018
Mesajlar
211
Çözümler
1
Tepki puanı
14
Ödüller
7
8 HİZMET YILI
yardımcı olayım düzeltip atayım sana kod satırını
Post automatically merged:

yardımcı olayım düzeltip atayım sana kod satırını
PHP:
<?php
$servername = 'localhost';
$username = 'root';
$password = '';
$dbname = 'id19189709_secim';
$ip = $_SERVER['REMOTE_ADDR'];
$partyNumber = $_POST['party'];
$voteCookie = 'vote';
$response = array();
$dosya = 'ips.txt';


// Function to check if the user has already voted
function hasVoted($partyNumber, $votes)
{
    return in_array($partyNumber, $votes);
}


if (isset($_COOKIE[$voteCookie])) {
    $votes = json_decode($_COOKIE[$voteCookie], true);


    if (hasVoted($partyNumber, $votes)) {
        $response['allowed'] = false;
    } else {
        $response['allowed'] = true;
        $votes[] = $partyNumber;
        setcookie($voteCookie, json_encode($votes), time() + 86400, '/'); // Update cookie with new vote
    }
} 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);
            setcookie($voteCookie, json_encode($votes), time() + 86400, '/'); // Set new vote cookie for 24 hours
            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);
}
?>
bir bu kodu dene
 
tr1p
Süper Üye
Katılım
28 Mar 2020
Mesajlar
640
Çözümler
1
Tepki puanı
63
Ödüller
6
Yaş
25
6 HİZMET YILI
Kac kiside aldin bu hatayi? Yani kac kisi kullaniyor da boyle bir hata aliyorsun?
 
Uzman Üye
Katılım
16 Tem 2020
Mesajlar
250
Çözümler
2
Tepki puanı
23
Ödüller
5
Yaş
25
5 HİZMET YILI
hangileri emin değilim ama php.ini de aşım ayarları var onları yükseltmeyi deneyebilirsiniz

yardımcı olayım düzeltip atayım sana kod satırını
Post automatically merged:


PHP:
<?php
$servername = 'localhost';
$username = 'root';
$password = '';
$dbname = 'id19189709_secim';
$ip = $_SERVER['REMOTE_ADDR'];
$partyNumber = $_POST['party'];
$voteCookie = 'vote';
$response = array();
$dosya = 'ips.txt';


// Function to check if the user has already voted
function hasVoted($partyNumber, $votes)
{
    return in_array($partyNumber, $votes);
}


if (isset($_COOKIE[$voteCookie])) {
    $votes = json_decode($_COOKIE[$voteCookie], true);


    if (hasVoted($partyNumber, $votes)) {
        $response['allowed'] = false;
    } else {
        $response['allowed'] = true;
        $votes[] = $partyNumber;
        setcookie($voteCookie, json_encode($votes), time() + 86400, '/'); // Update cookie with new vote
    }
} 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);
            setcookie($voteCookie, json_encode($votes), time() + 86400, '/'); // Set new vote cookie for 24 hours
            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);
}
?>
bir bu kodu dene
hocam chat gptyi kullanmasını arkadaş da biliyordur bence
 
Uzman Üye
Katılım
20 Ocak 2018
Mesajlar
211
Çözümler
1
Tepki puanı
14
Ödüller
7
8 HİZMET YILI
hangileri emin değilim ama php.ini de aşım ayarları var onları yükseltmeyi deneyebilirsiniz


hocam chat gptyi kullanmasını arkadaş da biliyordur bence
çözüm sundum by chat gpt plus olduğu için en güncel kod satırını araştırıp veriyor sana web destekli
 
Süper Üye
Katılım
21 Eyl 2020
Mesajlar
646
Çözümler
4
Tepki puanı
43
Ödüller
5
Sosyal
5 HİZMET YILI
Kac kiside aldin bu hatayi? Yani kac kisi kullaniyor da boyle bir hata aliyorsun?
2 kişi bile aynı anda verse oluyor
Post automatically merged:

yardımcı olayım düzeltip atayım sana kod satırını
Post automatically merged:


PHP:
<?php
$servername = 'localhost';
$username = 'root';
$password = '';
$dbname = 'id19189709_secim';
$ip = $_SERVER['REMOTE_ADDR'];
$partyNumber = $_POST['party'];
$voteCookie = 'vote';
$response = array();
$dosya = 'ips.txt';


// Function to check if the user has already voted
function hasVoted($partyNumber, $votes)
{
    return in_array($partyNumber, $votes);
}


if (isset($_COOKIE[$voteCookie])) {
    $votes = json_decode($_COOKIE[$voteCookie], true);


    if (hasVoted($partyNumber, $votes)) {
        $response['allowed'] = false;
    } else {
        $response['allowed'] = true;
        $votes[] = $partyNumber;
        setcookie($voteCookie, json_encode($votes), time() + 86400, '/'); // Update cookie with new vote
    }
} 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);
            setcookie($voteCookie, json_encode($votes), time() + 86400, '/'); // Set new vote cookie for 24 hours
            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);
}
?>
bir bu kodu dene
İşe yaramadı hatta hiçbirini kaydetmedi
 
Son düzenleme:
Tutti mi chiedono perché ho imparato questa lingua
Süper Üye
Katılım
17 Mar 2016
Mesajlar
634
Çözümler
5
Tepki puanı
112
Ödüller
11
10 HİZMET YILI
yardımcı olayım düzeltip atayım sana kod satırını
Post automatically merged:


PHP:
<?php
$servername = 'localhost';
$username = 'root';
$password = '';
$dbname = 'id19189709_secim';
$ip = $_SERVER['REMOTE_ADDR'];
$partyNumber = $_POST['party'];
$voteCookie = 'vote';
$response = array();
$dosya = 'ips.txt';


// Function to check if the user has already voted
function hasVoted($partyNumber, $votes)
{
    return in_array($partyNumber, $votes);
}


if (isset($_COOKIE[$voteCookie])) {
    $votes = json_decode($_COOKIE[$voteCookie], true);


    if (hasVoted($partyNumber, $votes)) {
        $response['allowed'] = false;
    } else {
        $response['allowed'] = true;
        $votes[] = $partyNumber;
        setcookie($voteCookie, json_encode($votes), time() + 86400, '/'); // Update cookie with new vote
    }
} 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);
            setcookie($voteCookie, json_encode($votes), time() + 86400, '/'); // Set new vote cookie for 24 hours
            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);
}
?>
bir bu kodu dene
$sql = "UPDATE parties SET votes = votes + 1 WHERE id = $partyNumber";
Bu satırda hatan var, votes = votes+1 demişsin bu işlemi bunun içinde yapamazsın dışında yapıp tek tırnak ile belirtmen gerekiyor, örneğin:
PHP:
$newVotes = $votes+1;
$sql = "UPDATE parties SET votes = '$newVotes' WHERE id = $partyNumber";
 
Süper Üye
Katılım
21 Eyl 2020
Mesajlar
646
Çözümler
4
Tepki puanı
43
Ödüller
5
Sosyal
5 HİZMET YILI
$sql = "UPDATE parties SET votes = votes + 1 WHERE id = $partyNumber";
Bu satırda hatan var, votes = votes+1 demişsin bu işlemi bunun içinde yapamazsın dışında yapıp tek tırnak ile belirtmen gerekiyor, örneğin:
PHP:
$newVotes = $votes+1;
$sql = "UPDATE parties SET votes = '$newVotes' WHERE id = $partyNumber";
PHP:
<?php
$servername = 'localhost';
$username = 'root';
$password = '';
$dbname = 'id19189709_secim';
$ip = $_SERVER['REMOTE_ADDR'];
$partyNumber = $_POST['party'];
$voteCookie = 'vote';
$response = array();
$dosya = 'ips.txt';


// Function to check if the user has already voted
function hasVoted($partyNumber, $votes)
{
    return in_array($partyNumber, $votes);
}


if (isset($_COOKIE[$voteCookie])) {
    $votes = json_decode($_COOKIE[$voteCookie], true);


    if (hasVoted($partyNumber, $votes)) {
        $response['allowed'] = false;
    } else {
        $response['allowed'] = true;
        $votes[] = $partyNumber;
        setcookie($voteCookie, json_encode($votes), time() + 86400, '/'); // Update cookie with new vote
    }
} 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);
        }


        $newVotes = $votes+1;
        $sql = "UPDATE parties SET votes = '$newVotes' WHERE id = $partyNumber";


        if ($conn->query($sql) === TRUE) {
            $response['allowed'] = true;
            $votes = array($partyNumber);
            setcookie($voteCookie, json_encode($votes), time() + 86400, '/');
            saveIP($ip, $partyNumber);
        } else {
            $response['allowed'] = false;
        }


        $conn->close();
    }
}

function saveIP($ip, $partyNumber)
{
    $file = 'ip_list.txt';
    file_put_contents($file, $ip . " - " . $partyNumber . PHP_EOL, FILE_APPEND | LOCK_EX);
}
echo json_encode($response);
?>
Bunu denedim yine olmadı oylar kaydolmuyor
Post automatically merged:

Tamam çözdüm sorun IP'leri dosyaya yazmaktaymış. IP'leri database'de tutunca çözüldü bu arada kodda çok fazla sql açığı var kullanmayın kullanacaksanız.
 
Son düzenleme:
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst