SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
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
<?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?