Published on

PHP'de Veritabani Kontrolü ile Email Hesabı Varsa Hata Döndüren, Yoksa o Hesabı Veritabanina Ekleyen Kodun Yazımı

Authors
  • avatar
    Name
    Alperen Önal
    Twitter

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<form action="" method="POST">
    Eposta: <input type="email" name="email" required> <br>
    Sifre: <input type="password" name="password" required> <br>
    <input type="submit">
</form>
</body>
</html>

<?php
function VeriTaban(){
    $connection = new mysqli("localhost", "root", "", "x"); // veritabanı bağlantımı sağlıyorum. (kendi bilgilerime göre)

    if ($connection->connect_errno) { // baglanti gerçekleşmez ise bu field 0 döndürür ve içeri girilmez.
        echo "baglanti hatasi alindi: " . $connection->connect_error;
        exit();
    } else {
        echo "baglanti başariyla gerçekleşti.<br>";
    }

    $ctr = 0;

    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $mail = $_POST['email'];
        $sifre = $_POST['password'];

        if (!empty($mail) && !empty($sifre)) { // hata almamak için inputların içlerinin dolu olması koşulunu ekliyorum.
            $sqlSorgusu = "SELECT * FROM users WHERE Eposta='$mail'";
            $query = $connection->query($sqlSorgusu);

            while ($row = $query->fetch_array()) {
                if ($row['Eposta'] == $mail) {  // eğer input'dan gelen eposta degerimiz zaten veritabanında tanımlanmış ise.
                    echo "HATA: BU EMAİL HESABI ZATEN KULLANIMDA !";
                    $ctr++;
                }
            }

            if ($ctr == 0) {
                $ekle = "INSERT INTO users (Eposta, Sifre) VALUES ('$mail', '$sifre')"; // insert sorgumuz.

                if ($connection->query($ekle) === TRUE) { // baglanti başarılı ise gir.
                    echo "Veritabanina Kayit Eklendi";
                } else {
                    echo "Hata: " . $ekle . "<br>" . $connection->error;
                }
            }
        }
    }

    $connection->close();
}

VeriTaban(); // Burada istersek fonksiyonumuza parametre olarak veritabanının adresini falan gönderebiliriz. Ama ben parametresiz yaptım.
?>