SeripoSoft adlı üyeden alıntı: mesajı görüntüle
Tabii ki, projenizi sıfırdan kodlamak için aşamaları ve temel kod örneklerini aşağıda bulabilirsiniz. Bu, projenizin temel altyapısını oluşturmanıza yardımcı olacaktır. Ancak bu örneğin güvenliği ve diğer detayları içermesi için oldukça basit olduğunu unutmayın. Gerçek projede daha fazla güvenlik ve hata işleme eklemeniz gerekecektir.

**Adım 1: Veritabanı Oluşturma**

Öncelikle MySQL veritabanınızı oluşturun ve gerekli tabloları ekleyin. Aşağıda temel bir şema örneği bulunmaktadır:

```sql
CREATE DATABASE ElectionDB;
USE ElectionDB;

CREATE TABLE Users (
id INT AUTO_INCREMENT PRIMARY KEY,
tc_number VARCHAR(11) NOT NULL UNIQUE,
identity_number VARCHAR(11) NOT NULL UNIQUE,
is_voted TINYINT(1) DEFAULT 0
);

CREATE TABLE Candidates (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL
);

CREATE TABLE Votes (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
candidate_id INT,
FOREIGN KEY (user_id) REFERENCES Users(id),
FOREIGN KEY (candidate_id) REFERENCES Candidates(id)
);

CREATE TABLE PollingBooths (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
votes_received INT DEFAULT 0
);
```

**Adım 2: PHP Kodu**

Aşağıda, kullanıcı kaydı, girişi ve oy verme işlemlerini ele alan basit bir PHP kod örneği bulunmaktadır. Bu, projenizin temelini oluşturacaktır.

```php
<?php
session_start();

$host = "localhost";
$db = "ElectionDB";
$username = "your_username";
$password = "your_password";

$conn = new mysqli($host, $username, $password, $db);

if ($conn->connect_error) {
die("Database connection failed: " . $conn->connect_error);
}

// Kullanıcı Kaydı
if (isset($_POST['register'])) {
$tc_number = $_POST['tc_number'];
$identity_number = $_POST['identity_number'];

// Veritabanında kullanıcıyı kontrol et

$sql = "INSERT INTO Users (tc_number, identity_number) VALUES ('$tc_number', '$identity_number')";
if ($conn->query($sql) === TRUE) {
echo "Kullanıcı kaydı başarıyla tamamlandı.";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}

// Kullanıcı Girişi
if (isset($_POST['login'])) {
$tc_number = $_POST['tc_number'];
$identity_number = $_POST['identity_number'];

// Veritabanında kullanıcıyı doğrulayın

$sql = "SELECT * FROM Users WHERE tc_number = '$tc_number' AND identity_number = '$identity_number'";
$result = $conn->query($sql);

if ($result->num_rows == 1) {
$_SESSION['user_id'] = $result->fetch_assoc()['id'];
header("Location: vote.php");
} else {
echo "Geçersiz kimlik bilgileri.";
}
}

// Oy Verme
if (isset($_POST['vote'])) {
$user_id = $_SESSION['user_id'];
$candidate_id = $_POST['candidate_id'];

// Kullanıcının daha önce oy kullanıp kullanmadığını kontrol edin

$sql = "SELECT is_voted FROM Users WHERE id = $user_id";
$result = $conn->query($sql);
$is_voted = $result->fetch_assoc()['is_voted'];

if ($is_voted) {
echo "Zaten oy kullandınız.";
} else {
// Oy verme işlemi
$sql = "INSERT INTO Votes (user_id, candidate_id) VALUES ($user_id, $candidate_id)";
$conn->query($sql);

// Kullanıcının oy kullandığını işaretle
$sql = "UPDATE Users SET is_voted = 1 WHERE id = $user_id";
$conn->query($sql);

// İlgili sandığa oy ekleyin
$sql = "UPDATE PollingBooths SET votes_received = votes_received + 1 WHERE id = $candidate_id";
$conn->query($sql);

echo "Oyunuz başarıyla kaydedildi.";
}
}
?>
```

**Notlar*
- Bu sadece temel bir örnektir ve gerçek projenizde daha fazla işlevsellik ve güvenlik eklemelisiniz.
- Kullanıcı kimlik doğrulama, güvenlik kontrolleri, hata işleme ve daha fazlası gibi unsurları dikkate almalısınız.
- Admin paneli ve diğer özellikleri eklemek için benzer yaklaşımları kullanabilirsiniz.
ilginiz için teşekkür ederim