<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);
if (isset($_SESSION['isLogged']) && $_SESSION['isLogged'] === true) {
echo json_encode(['status' => 'redirect', 'url' => BASE_URL . '/Home']);
exit; // Sonlandır
}
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require '/xampp/htdocs/PHPMailer/src/Exception.php';
require '/xampp/htdocs/PHPMailer/src/PHPMailer.php';
require '/xampp/htdocs/PHPMailer/src/SMTP.php';
// PDO bağlantısı
global $DBSettings;
$pdo = new PDO("odbc:DRIVER={$DBSettings['driver']};SERVER={$DBSettings['server']};DATABASE={$DBSettings['game_db']};charset=UTF-8", $DBSettings['uid'], $DBSettings['pass']);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Çıkış tamponlamasını başlat
ob_start();
// JSON yanıt türünü belirt
header('Content-Type: application/json');
// Kullanıcı kaydı işlemi
if (isset($_POST['strUserID'])) {
$strUserID = trim($_POST['strUserID']);
$Mail = trim($_POST['Mail']);
$Password = trim($_POST['Password']);
$RePassword = trim($_POST['RePassword']);
$PhoneNumber = trim($_POST['PhoneNumber']);
// Form doğrulama
if (!$strUserID || !$Mail || !$Password || !$RePassword || !$PhoneNumber) {
echo json_encode(['status' => 'error', 'message' => 'Lütfen tüm alanları doldurunuz.']);
ob_end_flush();
exit;
} else if ($Password !== $RePassword) {
echo json_encode(['status' => 'error', 'message' => 'Lütfen iki şifrenizi de aynı giriniz.']);
ob_end_flush();
exit;
}
// Kullanıcı, telefon ve mail var mı kontrol et
$stmt = $pdo->prepare("SELECT COUNT(*) as count FROM DATA WHERE strUserID = :strUserID");
$stmt->execute([':strUserID' => $strUserID]);
if ($stmt->fetchColumn() > 0) {
echo json_encode(['status' => 'error', 'message' => 'Bu kullanıcı adı zaten kullanılıyor.']);
ob_end_flush();
exit;
}
$stmt = $pdo->prepare("SELECT COUNT(*) as count FROM DATA WHERE PhoneNumber = :PhoneNumber");
$stmt->execute([':PhoneNumber' => $PhoneNumber]);
if ($stmt->fetchColumn() > 0) {
echo json_encode(['status' => 'error', 'message' => 'Bu telefon numarası zaten kayıtlı.']);
ob_end_flush();
exit;
}
$stmt = $pdo->prepare("SELECT COUNT(*) as count FROM DATA WHERE Mail = :Mail");
$stmt->execute([':Mail' => $Mail]);
if ($stmt->fetchColumn() > 0) {
echo json_encode(['status' => 'error', 'message' => 'Bu e-posta adresi zaten kayıtlı.']);
ob_end_flush();
exit;
}
// 6 basamaklı rastgele bir kod oluştur
$verificationCode = rand(100000, 999999);
// Kullanıcının e-postasına doğrulama kodunu gönder
$mail = new PHPMailer(true);
try {
// E-posta ayarları
$mail->isSMTP();
$mail->Host = 'SMTP';
$mail->SMTPAuth = true;
$mail->Username = 'USER';
$mail->Password = 'PASS';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465;
$mail->setFrom('MAİL', 'Kayıt Onayı');
$mail->addAddress($Mail);
$mail->isHTML(true);
$mail->Subject = 'Kayıt Onayı';
$mail->Body = "Kayıt işleminizi tamamlamak için doğrulama kodunuz: {$verificationCode}";
if (!$mail->send()) {
echo json_encode(['status' => 'error', 'message' => 'Email gönderimi başarısız. Hata: ' . $mail->ErrorInfo]);
ob_end_flush();
exit;
}
// Kullanıcının bilgilerini ve doğrulama kodunu veritabanına kaydet
$stmt = $pdo->prepare("INSERT INTO DATA (strUserID, Mail, Password, PhoneNumber, VerificationCode, isVerified) VALUES (:strUserID, :Mail, :Password, :PhoneNumber, :VerificationCode, 0)");
$stmt->execute([
':strUserID' => $strUserID,
':Mail' => $Mail,
':Password' => password_hash($Password, PASSWORD_BCRYPT), // Şifreyi hashle
':PhoneNumber' => $PhoneNumber,
':VerificationCode' => $verificationCode
]);
echo json_encode(['status' => 'success', 'message' => 'Kayıt başarılı! E-postanıza gönderilen doğrulama kodunu giriniz.']);
ob_end_flush();
exit;
} catch (Exception $e) {
echo json_encode(['status' => 'error', 'message' => 'E-posta gönderimi başarısız. Hata: ' . $e->getMessage()]);
ob_end_flush();
exit;
}
}
if (json_last_error() !== JSON_ERROR_NONE) {
echo json_encode(['status' => 'error', 'message' => 'JSON encode hatası: ' . json_last_error_msg()]);
ob_end_flush();
exit;
}
// Kullanıcı doğrulama işlemi
if (isset($_POST['verificationCode'])) {
$inputCode = trim($_POST['verificationCode']);
$strUserID = $_SESSION['strAccountID'];
// Veritabanından doğrulama kodunu kontrol et
$stmt = $pdo->prepare("SELECT VerificationCode, isVerified FROM DATA WHERE strUserID = :strUserID");
$stmt->execute([':strUserID' => $strUserID]);
$checkCode = $stmt->fetch(PDO::FETCH_ASSOC);
if ($checkCode['isVerified'] == 1) {
echo json_encode(['status' => 'error', 'message' => 'Bu hesap zaten doğrulanmış.']);
ob_end_flush();
exit;
} else if ($checkCode['VerificationCode'] == $inputCode) {
// Kullanıcıyı doğrula
$stmt = $pdo->prepare("UPDATE DATA SET isVerified = 1 WHERE strUserID = :strUserID");
$stmt->execute([':strUserID' => $strUserID]);
// Oyun veritabanına kullanıcıyı ekleyelim
$GetHash = $pdo->query("SELECT dbo.HashPasswordString('{$Password}') as HashPW")->fetch(PDO::FETCH_OBJ);
$stmt = $pdo->prepare("INSERT INTO USER (strAccountID, strPasswd) VALUES (:strUserID, :strPasswd)");
$stmt->execute([
':strUserID' => $strUserID,
':strPasswd' => $GetHash->HashPW
]);
$_SESSION['isLogged'] = true;
$_SESSION['strUserID'] = $strUserID;
echo json_encode(['status' => 'success', 'message' => 'Hesabınız başarıyla doğrulandı.']);
ob_end_flush();
exit;
} else {
echo json_encode(['status' => 'error', 'message' => 'Geçersiz doğrulama kodu.']);
ob_end_flush();
exit;
}
}
ob_end_flush();
?> sabahtan beri çözemidim json.parse
6
●198
- 23-10-2024, 17:48:32Sabahtan beri çözemiyorum json.parse verip duruyor çıldırmak üzereyim lütfen yardım
- 23-10-2024, 17:58:46Hatayı da yazarsan iyi olur. Bu şekilde dener misin?

<?php session_start(); error_reporting(E_ALL); ini_set('display_errors', 1); // JSON response için yardımcı fonksiyon function sendJsonResponse($status, $message, $data = null) { header('Content-Type: application/json'); $response = ['status' => $status, 'message' => $message]; if ($data !== null) { $response['data'] = $data; } echo json_encode($response); exit; } if (isset($_SESSION['isLogged']) && $_SESSION['isLogged'] === true) { sendJsonResponse('redirect', '', ['url' => BASE_URL . '/Home']); } use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require '/xampp/htdocs/PHPMailer/src/Exception.php'; require '/xampp/htdocs/PHPMailer/src/PHPMailer.php'; require '/xampp/htdocs/PHPMailer/src/SMTP.php'; try { global $DBSettings; $pdo = new PDO("odbc:DRIVER={$DBSettings['driver']};SERVER={$DBSettings['server']};DATABASE={$DBSettings['game_db']};charset=UTF-8", $DBSettings['uid'], $DBSettings['pass']); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { sendJsonResponse('error', 'Veritabanı bağlantı hatası: ' . $e->getMessage()); } // Kullanıcı kaydı işlemi if (isset($_POST['strUserID'])) { try { $strUserID = trim($_POST['strUserID']); $Mail = trim($_POST['Mail']); $Password = trim($_POST['Password']); $RePassword = trim($_POST['RePassword']); $PhoneNumber = trim($_POST['PhoneNumber']); // Form doğrulama if (!$strUserID || !$Mail || !$Password || !$RePassword || !$PhoneNumber) { sendJsonResponse('error', 'Lütfen tüm alanları doldurunuz.'); } if ($Password !== $RePassword) { sendJsonResponse('error', 'Lütfen iki şifrenizi de aynı giriniz.'); } // Kullanıcı var mı kontrol $stmt = $pdo->prepare("SELECT COUNT(*) FROM DATA WHERE strUserID = ?"); $stmt->execute([$strUserID]); if ($stmt->fetchColumn() > 0) { sendJsonResponse('error', 'Bu kullanıcı adı zaten kullanılıyor.'); } // Telefon var mı kontrol $stmt = $pdo->prepare("SELECT COUNT(*) FROM DATA WHERE PhoneNumber = ?"); $stmt->execute([$PhoneNumber]); if ($stmt->fetchColumn() > 0) { sendJsonResponse('error', 'Bu telefon numarası zaten kayıtlı.'); } // Mail var mı kontrol $stmt = $pdo->prepare("SELECT COUNT(*) FROM DATA WHERE Mail = ?"); $stmt->execute([$Mail]); if ($stmt->fetchColumn() > 0) { sendJsonResponse('error', 'Bu e-posta adresi zaten kayıtlı.'); } // Doğrulama kodu oluştur $verificationCode = rand(100000, 999999); // Mail gönderimi $mail = new PHPMailer(true); $mail->isSMTP(); $mail->Host = 'SMTP'; $mail->SMTPAuth = true; $mail->Username = 'USER'; $mail->Password = 'PASS'; $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mail->Port = 465; $mail->setFrom('MAİL', 'Kayıt Onayı'); $mail->addAddress($Mail); $mail->isHTML(true); $mail->Subject = 'Kayıt Onayı'; $mail->Body = "Kayıt işleminizi tamamlamak için doğrulama kodunuz: {$verificationCode}"; if (!$mail->send()) { sendJsonResponse('error', 'Email gönderimi başarısız: ' . $mail->ErrorInfo); } // Kullanıcı bilgilerini session'a kaydet $_SESSION['temp_user'] = [ 'strUserID' => $strUserID, 'Password' => $Password ]; // Veritabanına kaydet $stmt = $pdo->prepare("INSERT INTO DATA (strUserID, Mail, Password, PhoneNumber, VerificationCode, isVerified) VALUES (?, ?, ?, ?, ?, 0)"); $stmt->execute([ $strUserID, $Mail, password_hash($Password, PASSWORD_BCRYPT), $PhoneNumber, $verificationCode ]); sendJsonResponse('success', 'Kayıt başarılı! E-postanıza gönderilen doğrulama kodunu giriniz.'); } catch (Exception $e) { sendJsonResponse('error', 'İşlem sırasında bir hata oluştu: ' . $e->getMessage()); } } // Doğrulama kodu kontrolü if (isset($_POST['verificationCode'])) { try { if (!isset($_SESSION['temp_user'])) { sendJsonResponse('error', 'Oturum bilgisi bulunamadı. Lütfen tekrar kayıt olun.'); } $inputCode = trim($_POST['verificationCode']); $strUserID = $_SESSION['temp_user']['strUserID']; $Password = $_SESSION['temp_user']['Password']; $stmt = $pdo->prepare("SELECT VerificationCode, isVerified FROM DATA WHERE strUserID = ?"); $stmt->execute([$strUserID]); $checkCode = $stmt->fetch(PDO::FETCH_ASSOC); if ($checkCode['isVerified'] == 1) { sendJsonResponse('error', 'Bu hesap zaten doğrulanmış.'); } if ($checkCode['VerificationCode'] != $inputCode) { sendJsonResponse('error', 'Geçersiz doğrulama kodu.'); } // Hesabı doğrula $stmt = $pdo->prepare("UPDATE DATA SET isVerified = 1 WHERE strUserID = ?"); $stmt->execute([$strUserID]); // Oyun veritabanına ekle $GetHash = $pdo->query("SELECT dbo.HashPasswordString('{$Password}') as HashPW")->fetch(PDO::FETCH_OBJ); $stmt = $pdo->prepare("INSERT INTO USER (strAccountID, strPasswd) VALUES (?, ?)"); $stmt->execute([ $strUserID, $GetHash->HashPW ]); $_SESSION['isLogged'] = true; $_SESSION['strUserID'] = $strUserID; unset($_SESSION['temp_user']); sendJsonResponse('success', 'Hesabınız başarıyla doğrulandı.'); } catch (Exception $e) { sendJsonResponse('error', 'Doğrulama sırasında bir hata oluştu: ' . $e->getMessage()); } }ob_start() ve ob_end_flush() PHP'de çıktı tamponlaması (output buffering) için kullanılan fonksiyonlardır. Normal şartlarda bunlar faydalıdır, ancak JSON çıktısı verirken bazı sorunlara yol açabilirler:
<?php ob_start(); // ... kodlar ... // Bir yerde hata yakalandı echo json_encode(['status' => 'error', 'message' => 'Hata mesajı']); ob_end_flush(); // ... başka kodlar ... // Başka bir yerde echo json_encode(['status' => 'success', 'message' => 'Başarılı']); ob_end_flush();
Bu durumda buffer'da iki farklı JSON çıktısı birikebilir ve sonuç şöyle olabilir:
{"status":"error","message":"Hata mesajı"}{"status":"success","message":"Başarılı"}Bu geçersiz bir JSON formatıdır ve parse edilemez. - 23-10-2024, 20:14:13SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON datalookout adlı üyeden alıntı: mesajı görüntüle
hocam json kullanmasamda normal echo ile döndürsemde html olarak geliyor yanıtlar ama yanıt geliyor {"status":"error","message":"Bu kullanu0131cu0131 adu0131 zaten kullanu0131lu0131yor."} tabi html da birlikte geldiği için json parse ye düşüyor - 23-10-2024, 20:53:35CREATIVE35 adlı üyeden alıntı: mesajı görüntüle
<?php session_start(); error_reporting(E_ALL); ini_set('display_errors', 1); // JSON yanıt türünü en başta belirt header('Content-Type: application/json'); ob_start(); // Eğer kullanıcı zaten giriş yapmışsa yönlendir if (isset($_SESSION['isLogged']) && $_SESSION['isLogged'] === true) { echo json_encode(['status' => 'redirect', 'url' => BASE_URL . '/Home']); ob_end_flush(); exit; } use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require '/xampp/htdocs/PHPMailer/src/Exception.php'; require '/xampp/htdocs/PHPMailer/src/PHPMailer.php'; require '/xampp/htdocs/PHPMailer/src/SMTP.php'; try { // PDO bağlantısı global $DBSettings; $pdo = new PDO( "odbc:DRIVER={$DBSettings['driver']};SERVER={$DBSettings['server']};DATABASE={$DBSettings['game_db']};charset=UTF-8", $DBSettings['uid'], $DBSettings['pass'] ); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Kullanıcı kaydı işlemi if (isset($_POST['strUserID'])) { $strUserID = trim($_POST['strUserID']); $Mail = trim($_POST['Mail']); $Password = trim($_POST['Password']); $RePassword = trim($_POST['RePassword']); $PhoneNumber = trim($_POST['PhoneNumber']); // Form doğrulama if (empty($strUserID) || empty($Mail) || empty($Password) || empty($RePassword) || empty($PhoneNumber)) { throw new Exception('Lütfen tüm alanları doldurunuz.'); } if ($Password !== $RePassword) { throw new Exception('Lütfen iki şifrenizi de aynı giriniz.'); } // Kullanıcı, telefon ve mail kontrolü $checks = [ ['field' => 'strUserID', 'value' => $strUserID, 'message' => 'Bu kullanıcı adı zaten kullanılıyor.'], ['field' => 'PhoneNumber', 'value' => $PhoneNumber, 'message' => 'Bu telefon numarası zaten kayıtlı.'], ['field' => 'Mail', 'value' => $Mail, 'message' => 'Bu e-posta adresi zaten kayıtlı.'] ]; foreach ($checks as $check) { $stmt = $pdo->prepare("SELECT COUNT(*) FROM DATA WHERE {$check['field']} = :value"); $stmt->execute([':value' => $check['value']]); if ($stmt->fetchColumn() > 0) { throw new Exception($check['message']); } } // Doğrulama kodu oluştur $verificationCode = rand(100000, 999999); // E-posta gönderimi $mail = new PHPMailer(true); $mail->isSMTP(); $mail->Host = 'SMTP'; $mail->SMTPAuth = true; $mail->Username = 'USER'; $mail->Password = 'PASS'; $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mail->Port = 465; $mail->setFrom('MAİL', 'Kayıt Onayı'); $mail->addAddress($Mail); $mail->isHTML(true); $mail->Subject = 'Kayıt Onayı'; $mail->Body = "Kayıt işleminizi tamamlamak için doğrulama kodunuz: {$verificationCode}"; $mail->send(); // Kullanıcı kaydı $stmt = $pdo->prepare("INSERT INTO DATA (strUserID, Mail, Password, PhoneNumber, VerificationCode, isVerified) VALUES (:strUserID, :Mail, :Password, :PhoneNumber, :VerificationCode, 0)"); $stmt->execute([ ':strUserID' => $strUserID, ':Mail' => $Mail, ':Password' => password_hash($Password, PASSWORD_BCRYPT), ':PhoneNumber' => $PhoneNumber, ':VerificationCode' => $verificationCode ]); $_SESSION['strAccountID'] = $strUserID; // Doğrulama için kullanıcı ID'sini sakla echo json_encode(['status' => 'success', 'message' => 'Kayıt başarılı! E-postanıza gönderilen doğrulama kodunu giriniz.']); } // Doğrulama kodu kontrolü elseif (isset($_POST['verificationCode'])) { if (!isset($_SESSION['strAccountID'])) { throw new Exception('Oturum zaman aşımına uğradı. Lütfen tekrar kayıt olun.'); } $inputCode = trim($_POST['verificationCode']); $strUserID = $_SESSION['strAccountID']; $stmt = $pdo->prepare("SELECT VerificationCode, isVerified FROM DATA WHERE strUserID = :strUserID"); $stmt->execute([':strUserID' => $strUserID]); $checkCode = $stmt->fetch(PDO::FETCH_ASSOC); if (!$checkCode) { throw new Exception('Kullanıcı bulunamadı.'); } if ($checkCode['isVerified'] == 1) { throw new Exception('Bu hesap zaten doğrulanmış.'); } if ($checkCode['VerificationCode'] != $inputCode) { throw new Exception('Geçersiz doğrulama kodu.'); } // Kullanıcıyı doğrula $stmt = $pdo->prepare("UPDATE DATA SET isVerified = 1 WHERE strUserID = :strUserID"); $stmt->execute([':strUserID' => $strUserID]); // Oyun veritabanına kullanıcı ekleme $GetHash = $pdo->query("SELECT dbo.HashPasswordString('{$Password}') as HashPW")->fetch(PDO::FETCH_OBJ); $stmt = $pdo->prepare("INSERT INTO USER (strAccountID, strPasswd) VALUES (:strUserID, :strPasswd)"); $stmt->execute([ ':strUserID' => $strUserID, ':strPasswd' => $GetHash->HashPW ]); $_SESSION['isLogged'] = true; $_SESSION['strUserID'] = $strUserID; echo json_encode(['status' => 'success', 'message' => 'Hesabınız başarıyla doğrulandı.']); } } catch (Exception $e) { echo json_encode(['status' => 'error', 'message' => $e->getMessage()]); } ob_end_flush();Bu şekilde denermisin? - 23-10-2024, 20:59:02malesef sayfayı açar açmaz submit yapmadanPropJoe adlı üyeden alıntı: mesajı görüntüle
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data - 23-10-2024, 21:01:17Gerekli eklentilerin kurulu olduğuna eminmisin?CREATIVE35 adlı üyeden alıntı: mesajı görüntüle
<?php session_start(); error_reporting(E_ALL); ini_set('display_errors', 1); // JSON yanıt türünü en başta belirt header('Content-Type: application/json'); // Sayfa ilk yüklendiğinde bir işlem yapılmıyorsa boş bir JSON objesi döndür if ($_SERVER['REQUEST_METHOD'] !== 'POST') { echo json_encode(['status' => 'idle']); exit; } use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require '/xampp/htdocs/PHPMailer/src/Exception.php'; require '/xampp/htdocs/PHPMailer/src/PHPMailer.php'; require '/xampp/htdocs/PHPMailer/src/SMTP.php'; // Eğer kullanıcı zaten giriş yapmışsa yönlendir if (isset($_SESSION['isLogged']) && $_SESSION['isLogged'] === true) { echo json_encode(['status' => 'redirect', 'url' => BASE_URL . '/Home']); exit; } try { // PDO bağlantısı global $DBSettings; $pdo = new PDO( "odbc:DRIVER={$DBSettings['driver']};SERVER={$DBSettings['server']};DATABASE={$DBSettings['game_db']};charset=UTF-8", $DBSettings['uid'], $DBSettings['pass'] ); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Kullanıcı kaydı işlemi if (isset($_POST['strUserID'])) { $strUserID = trim($_POST['strUserID']); $Mail = trim($_POST['Mail']); $Password = trim($_POST['Password']); $RePassword = trim($_POST['RePassword']); $PhoneNumber = trim($_POST['PhoneNumber']); // Form doğrulama if (empty($strUserID) || empty($Mail) || empty($Password) || empty($RePassword) || empty($PhoneNumber)) { throw new Exception('Lütfen tüm alanları doldurunuz.'); } if ($Password !== $RePassword) { throw new Exception('Lütfen iki şifrenizi de aynı giriniz.'); } // Kullanıcı, telefon ve mail kontrolü $checks = [ ['field' => 'strUserID', 'value' => $strUserID, 'message' => 'Bu kullanıcı adı zaten kullanılıyor.'], ['field' => 'PhoneNumber', 'value' => $PhoneNumber, 'message' => 'Bu telefon numarası zaten kayıtlı.'], ['field' => 'Mail', 'value' => $Mail, 'message' => 'Bu e-posta adresi zaten kayıtlı.'] ]; foreach ($checks as $check) { $stmt = $pdo->prepare("SELECT COUNT(*) FROM DATA WHERE {$check['field']} = :value"); $stmt->execute([':value' => $check['value']]); if ($stmt->fetchColumn() > 0) { throw new Exception($check['message']); } } // Doğrulama kodu oluştur $verificationCode = rand(100000, 999999); // E-posta gönderimi $mail = new PHPMailer(true); $mail->isSMTP(); $mail->Host = 'SMTP'; $mail->SMTPAuth = true; $mail->Username = 'USER'; $mail->Password = 'PASS'; $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mail->Port = 465; $mail->setFrom('MAİL', 'Kayıt Onayı'); $mail->addAddress($Mail); $mail->isHTML(true); $mail->Subject = 'Kayıt Onayı'; $mail->Body = "Kayıt işleminizi tamamlamak için doğrulama kodunuz: {$verificationCode}"; $mail->send(); // Kullanıcı kaydı $stmt = $pdo->prepare("INSERT INTO DATA (strUserID, Mail, Password, PhoneNumber, VerificationCode, isVerified) VALUES (:strUserID, :Mail, :Password, :PhoneNumber, :VerificationCode, 0)"); $stmt->execute([ ':strUserID' => $strUserID, ':Mail' => $Mail, ':Password' => password_hash($Password, PASSWORD_BCRYPT), ':PhoneNumber' => $PhoneNumber, ':VerificationCode' => $verificationCode ]); $_SESSION['strAccountID'] = $strUserID; // Doğrulama için kullanıcı ID'sini sakla echo json_encode(['status' => 'success', 'message' => 'Kayıt başarılı! E-postanıza gönderilen doğrulama kodunu giriniz.']); } // Doğrulama kodu kontrolü elseif (isset($_POST['verificationCode'])) { if (!isset($_SESSION['strAccountID'])) { throw new Exception('Oturum zaman aşımına uğradı. Lütfen tekrar kayıt olun.'); } $inputCode = trim($_POST['verificationCode']); $strUserID = $_SESSION['strAccountID']; $stmt = $pdo->prepare("SELECT VerificationCode, isVerified FROM DATA WHERE strUserID = :strUserID"); $stmt->execute([':strUserID' => $strUserID]); $checkCode = $stmt->fetch(PDO::FETCH_ASSOC); if (!$checkCode) { throw new Exception('Kullanıcı bulunamadı.'); } if ($checkCode['isVerified'] == 1) { throw new Exception('Bu hesap zaten doğrulanmış.'); } if ($checkCode['VerificationCode'] != $inputCode) { throw new Exception('Geçersiz doğrulama kodu.'); } // Kullanıcıyı doğrula $stmt = $pdo->prepare("UPDATE DATA SET isVerified = 1 WHERE strUserID = :strUserID"); $stmt->execute([':strUserID' => $strUserID]); // Oyun veritabanına kullanıcı ekleme $GetHash = $pdo->query("SELECT dbo.HashPasswordString('{$Password}') as HashPW")->fetch(PDO::FETCH_OBJ); $stmt = $pdo->prepare("INSERT INTO USER (strAccountID, strPasswd) VALUES (:strUserID, :strPasswd)"); $stmt->execute([ ':strUserID' => $strUserID, ':strPasswd' => $GetHash->HashPW ]); $_SESSION['isLogged'] = true; $_SESSION['strUserID'] = $strUserID; echo json_encode(['status' => 'success', 'message' => 'Hesabınız başarıyla doğrulandı.']); } } catch (Exception $e) { echo json_encode(['status' => 'error', 'message' => $e->getMessage()]); } catch (PDOException $e) { echo json_encode(['status' => 'error', 'message' => 'Veritabanı hatası: ' . $e->getMessage()]); }Bunu deneyin bakalım. - 23-10-2024, 22:12:13sorunu çözdüm teşekkür ederim ilgilenen arkadaşlara kodumda ilk başta hata yokmuş routerden bir sıkıntı oluştuğu için yaşadığım bir şeymiş

