farukk1661
Picopat
- Katılım
- 8 Aralık 2024
- Mesajlar
- 136
- Çözümler
- 2
Daha fazla
- Sistem Özellikleri
- Anakart : Gigabyte B450-M S2H
İşlemci: AMD Ryzen 5 5500
RAM : Corsair vengeance RGB pro16GB 3600Mhz
Ekran Kartı : Sapphire nitro plus RX 6600XT
- Cinsiyet
- Erkek
- Meslek
- İşsiz
Bütün kodların doğruluğundan neredeyse eminim, hata nerede?
HTML:
//kayit.html
<form id="register-form" action="kayit.php" method="post">
<div class="form-group animate-fade-in">
<label for="register-username">Kullanıcı Adı:</label>
<input
type="text"
id="register-username"
name="username"
required
minlength="3"
maxlength="50"
/>
</div>
<div class="form-group animate-fade-in">
<label for="register-email">E-posta:</label>
<input type="email" id="register-email" name="email" required />
</div>
<div class="form-group animate-fade-in">
<label for="register-password">Şifre:</label>
<input
type="password"
id="register-password"
name="password"
required
minlength="6"
/>
</div>
<div class="message-container">
<div id="hataMesaji" class="error-message"></div>
<div id="basariMesaji" class="success-message"></div>
</div>
<button type="submit" class="btn btn-primary">Kayıt Ol</button>
</form>
HTML:
//giris.html
<form id="login-form" action="giris.php" method="post">
<div class="form-group animate-fade-in">
<label for="login-username" data-translate="login-form-username"
>Kullanıcı Adı veya E-posta:</label
>
<input
type="text"
id="login-username"
name="kullanici_adi_veya_email"
required
/>
</div>
<div class="form-group animate-fade-in">
<label for="login-password" data-translate="login-form-password"
>Şifre:</label
>
<input
type="password"
id="login-password"
name="sifre"
required
/>
</div>
<!-- Hata ve başarı mesajları için alanlar -->
<div class="message-container">
<div id="hataMesaji" class="error-message"></div>
<div id="basariMesaji" class="success-message"></div>
</div>
<button
type="submit"
class="btn btn-primary animate-button"
data-translate="login-form-button"
>
Giriş Yap
</button>
</form>
PHP:
<?php
// config.php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', '');
define('DB_NAME', 'fmlauncher_db');
try {
$conn = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME, DB_USER, DB_PASS);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$conn->exec("SET NAMES utf8mb4"); // Türkçe karakter desteği için
$conn->exec("SET CHARACTER SET utf8mb4"); // Türkçe karakter desteği için
} catch (PDOException $e) {
die("Veritabanı bağlantı hatası: " . $e->getMessage());
}
PHP:
<?php
// giris.php
header('Content-Type: application/json');
session_start();
require_once 'config.php';
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
echo json_encode(['success' => false, 'message' => 'Invalid request method']);
exit;
}
$username_or_email = filter_input(INPUT_POST, 'kullanici_adi_veya_email', FILTER_SANITIZE_STRING);
$password = $_POST['sifre'];
if (empty($username_or_email) || empty($password)) {
echo json_encode(['success' => false, 'message' => 'Tüm alanları doldurunuz']);
exit;
}
try {
$stmt = $conn->prepare("SELECT id, username, password FROM users WHERE username = :username OR email = :email");
$stmt->execute([
':username' => $username_or_email,
':email' => $username_or_email
]);
$user = $stmt->fetch();
if ($user && password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
echo json_encode(['success' => true, 'message' => 'Giriş başarılı']);
} else {
echo json_encode(['success' => false, 'message' => 'Kullanıcı adı/email veya şifre hatalı']);
}
} catch (PDOException $e) {
echo json_encode(['success' => false, 'message' => 'Bir hata oluştu']);
}
PHP:
<?php
// Hata ayıklama için
error_reporting(E_ALL);
ini_set('display_errors', 1);
header('Content-Type: application/json');
require_once 'config.php';
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
echo json_encode(['success' => false, 'message' => 'Geçersiz istek metodu']);
exit;
}
// POST verilerini al ve kontrol et
$username = isset($_POST['username']) ? trim($_POST['username']) : '';
$email = isset($_POST['email']) ? trim($_POST['email']) : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';
// Gelen verileri logla (geliştirme aşamasında)
error_log('POST Data: ' . print_r($_POST, true));
// Boş alan kontrolü
if (empty($username) || empty($email) || empty($password)) {
echo json_encode(['success' => false, 'message' => 'Tüm alanları doldurunuz']);
exit;
}
// Email formatı kontrolü
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo json_encode(['success' => false, 'message' => 'Geçerli bir email adresi giriniz']);
exit;
}
// Şifre uzunluğu kontrolü
if (strlen($password) < 6) {
echo json_encode(['success' => false, 'message' => 'Şifre en az 6 karakter olmalıdır']);
exit;
}
try {
// Kullanıcı adı veya email kontrolü
$stmt = $conn->prepare("SELECT COUNT(*) FROM kullanicilar WHERE kullanici_adi = ? OR email = ?");
$stmt->execute([$username, $email]);
if ($stmt->fetchColumn() > 0) {
echo json_encode(['success' => false, 'message' => 'Bu kullanıcı adı veya email zaten kullanımda']);
exit;
}
// Yeni kullanıcı kaydı
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
$stmt = $conn->prepare("INSERT INTO kullanicilar (kullanici_adi, email, sifre) VALUES (?, ?, ?)");
$stmt->execute([$username, $email, $hashedPassword]);
echo json_encode(['success' => true, 'message' => 'Kayıt başarıyla tamamlandı']);
} catch (PDOException $e) {
error_log("Database Error: " . $e->getMessage());
echo json_encode(['success' => false, 'message' => 'Veritabanı hatası oluştu: ' . $e->getMessage()]);
}
JavaScript:
//script.js
// Tema Yönetimi
const themeToggle = document.getElementById("theme-toggle");
const body = document.body;
const logoImg = document.querySelector(".logo img");
function updateLogo(theme) {
logoImg.src = `assets/logo-${theme}.png`;
}
function updateLogoText(isDarkTheme) {
const logoText = document.querySelector(".logo-text");
logoText.style.color = isDarkTheme ? "#fff" : "#333";
}
function applyThemePreference() {
const storedTheme = localStorage.getItem("theme");
const prefersDarkMode = window.matchMedia(
"(prefers-color-scheme: dark)"
).matches;
const isDarkTheme =
storedTheme === "dark" || (!storedTheme && prefersDarkMode);
if (isDarkTheme) {
body.classList.add("dark-theme");
themeToggle.classList.replace("fa-moon", "fa-sun");
updateLogo("dark");
} else {
body.classList.remove("dark-theme");
themeToggle.classList.replace("fa-sun", "fa-moon");
updateLogo("light");
}
updateLogoText(isDarkTheme);
}
themeToggle.addEventListener("click", () => {
const isDarkTheme = body.classList.contains("dark-theme");
if (isDarkTheme) {
body.classList.remove("dark-theme");
themeToggle.classList.replace("fa-sun", "fa-moon");
localStorage.setItem("theme", "light");
updateLogo("light");
} else {
body.classList.add("dark-theme");
themeToggle.classList.replace("fa-moon", "fa-sun");
localStorage.setItem("theme", "dark");
updateLogo("dark");
}
updateLogoText(!isDarkTheme);
});
// Form işlemleri yardımcı fonksiyonları
function clearMessages(errorElement, successElement) {
if (errorElement) {
errorElement.style.display = "none";
errorElement.textContent = "";
}
if (successElement) {
successElement.style.display = "none";
successElement.textContent = "";
}
}
function showMessage(element, message, isError = false) {
if (element) {
element.textContent = message;
element.style.display = "block";
if (isError) {
console.error("Error:", message);
}
}
}
// Kayıt Formu İşlemleri
const registerForm = document.getElementById("register-form");
if (registerForm) {
registerForm.addEventListener("submit", function (event) {
event.preventDefault();
const hataMesaji = document.getElementById("hataMesaji");
const basariMesaji = document.getElementById("basariMesaji");
clearMessages(hataMesaji, basariMesaji);
fetch("kayit.php", {
method: "POST",
body: new FormData(this),
})
.then((response) => response.json())
.then((data) => {
if (data.success) {
showMessage(basariMesaji, data.message);
setTimeout(() => {
window.location.href = "giris.html";
}, 2000);
} else {
showMessage(hataMesaji, data.message, true);
}
})
.catch((error) => {
showMessage(
hataMesaji,
"Bir hata oluştu. L.tfen tekrar deneyin.",
true
);
});
});
}
// Giriş Formu İşlemleri
const loginForm = document.getElementById("login-form");
if (loginForm) {
loginForm.addEventListener("submit", function (event) {
event.preventDefault();
const hataMesaji = document.getElementById("hataMesaji");
const basariMesaji = document.getElementById("basariMesaji");
clearMessages(hataMesaji, basariMesaji);
fetch("giris.php", {
method: "POST",
body: new FormData(this),
})
.then((response) => response.json())
.then((data) => {
if (data.success) {
showMessage(basariMesaji, data.message);
setTimeout(() => {
window.location.href = "index.html";
}, 1000);
} else {
showMessage(hataMesaji, data.message, true);
}
})
.catch((error) => {
showMessage(
hataMesaji,
"Bir hata oluştu. L.tfen tekrar deneyin.",
true
);
});
});
}
// İletişim Formu İşlemleri
const contactForm = document.getElementById("contact-form");
if (contactForm) {
contactForm.addEventListener("submit", function (event) {
event.preventDefault();
const hataMesaji = document.getElementById("hataMesaji");
const basariMesaji = document.getElementById("basariMesaji");
clearMessages(hataMesaji, basariMesaji);
fetch("iletisim.php", {
method: "POST",
body: new FormData(this),
})
.then((response) => response.json())
.then((data) => {
if (data.success) {
showMessage(basariMesaji, data.message);
this.reset();
} else {
showMessage(hataMesaji, data.message, true);
}
})
.catch((error) => {
showMessage(
hataMesaji,
"Bir hata oluştu. L.tfen tekrar deneyin.",
true
);
});
});
}
// Sayfa yüklendiğinde tema tercihini uygula
document.addEventListener("DOMContentLoaded", applyThemePreference);
Son düzenleyen: Moderatör: