PHP Login sayfasında HTTP 500 hatası veriyor

MRsuffix Berat

Decapat
Katılım
11 Ekim 2021
Mesajlar
255
Çözümler
1
Daha fazla  
Sistem Özellikleri
Lenovo Gaming 3
10.Nesil Core i5 10300H
16Gb RAM
1Tb HDD
256SSD
GTX1650Ti 4Gb
Windows 11 64bit
Cinsiyet
Erkek
Merhaba, ben bir kayıt sistemi oluşturmaya çalışıyorum Linux nginx ile. Fakat login.php sayfasına girince HTTP 500 hatası veriyor.
Sayfa kodları.

PHP:
<?php
session_start();

// Veritabanı bağlantısı.
$servername = "localhost";
$username = "xxxxxxxx";
$password = "xxxxxxxx";
$dbname = "xxxxxxxx";

$conn = new mysqli($servername, $username, $password, $dbname);

// Veritabanı bağlantı hatası kontrolü.
if ($conn->connect_error) {
 die("Veritabanı bağlantısı başarısız: " . $conn->connect_error);
}

// Tablo oluşturma - Eğer tablo daha önce oluşturulmamışsa.
$tableName = "users";
$sql = "CREATE TABLE IF NOT EXISTS $tableName (
 id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 username VARCHAR(30) NOT NULL,
 password VARCHAR(30) NOT NULL.
)";
$conn->query($sql);

// Kayıt olma işlemi.
if (isset($_POST['register'])) {
 $username = $_POST['username'];
 $password = $_POST['password'];

 $sql = "INSERT INTO $tableName (username, password) VALUES ('$username', '$password')";
 if ($conn->query($sql) === TRUE) {
 echo "Kayıt işlemi başarılı.";
 } else {
 echo "Kayıt işlemi başarısız: " . $conn->error;
 }
}

// Giriş yapma işlemi.
if (isset($_POST['login'])) {
 $username = $_POST['username'];
 $password = $_POST['password'];

 $sql = "SELECT id, username FROM $tableName WHERE username='$username' AND password='$password'";
 $result = $conn->query($sql);

 if ($result->num_rows == 1) {
 $row = $result->fetch_assoc();
 $_SESSION['user_id'] = $row['id'];
 $_SESSION['username'] = $row['username'];

 header('Location: index.php');
 exit;
 } else {
 echo "Giriş işlemi başarısız.";
 }
}

$conn->close();
?>

<!DOCTYPE html>
<html>
<head>
 <title>Kayıt ve Giriş</title>
</head>
<body>
 <h1>Kayıt ve Giriş</h1>

 <h2>Kayıt Ol</h2>
 <form method="POST" action="">
 <input type="text" name="username" placeholder="Kullanıcı Adı" required><br>
 <input type="password" name="password" placeholder="Şifre" required><br>
 <input type="submit" name="register" value="Kayıt Ol">
 </form>

 <h2>Giriş Yap</h2>
 <form method="POST" action="">
 <input type="text" name="username" placeholder="Kullanıcı Adı" required><br>
 <input type="password" name="password" placeholder="Şifre" required><br>
 <input type="submit" name="login" value="Giriş Yap">
 </form>
</body>
</html>

Hata:

1689265456037.png
 
Bazen backend tarafında bir hata verildiğinde PHP bu hatayı göstermek yerine direkt olarak ekrandaki gibi HTTP error 500 veriyor.
PHP kodunuzun en üstüne aşağıdaki kodu ekleyip yeniden çalıştırır mısınız?

PHP:
error_reporting(E_ALL);
ini_set(‘display_errors’, 1);
ini_set(‘display_startup_errors’, 1);
 
Bazen backend tarafında bir hata verildiğinde PHP bu hatayı göstermek yerine direkt olarak ekrandaki gibi HTTP error 500 veriyor.
PHP kodunuzun en üstüne aşağıdaki kodu ekleyip yeniden çalıştırır mısınız?

PHP:
error_reporting(E_ALL);
ini_set(‘display_errors’, 1);
ini_set(‘display_startup_errors’, 1);

Hala aynı HTTP 500 hatası veriyor.
 
Hala aynı HTTP 500 hatası veriyor.

Kullandığınız localhost'da htaccess dosyası var mı? Aşağıda bir link bıraktım, burada tarayıcı çerezlerini temizlemek gibi bazı öneriler mevcut. Deneyebilir misiniz?

Ayrıca sadece bu sayfada mı bu hatayı veriyor?

 
Kullandığınız Localhost'da htaccess dosyası var mı? Aşağıda bir link bıraktım, burada tarayıcı çerezlerini temizlemek gibi bazı öneriler mevcut. Deneyebilir misiniz?

Ayrıca sadece bu sayfada mı bu hatayı veriyor?


Htaccess dosyası var evet ama HTTP 500 hatası verince belki düzelir diye sonra ekledim.

Kod:
RewriteEngine On.

# .php uzantısını kaldırma.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]

# .html uzantısını kaldırma.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.html [NC,L]

# login.php'yi login şeklinde yeniden yazma.
RewriteRule ^login$ login.php [L]

# registe-login.php'yi register-login şeklinde yeniden yazma.
RewriteRule ^register-login$ register-login.php [L]

# Bilinmeyen sayfalarda 404.php'yi gösterme.
ErrorDocument 404 /404.php

RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.(?:php|html)[\s?/] [NC]
RewriteRule ^ /%1%2 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]
 
// Tablo oluşturma - Eğer tablo daha önce oluşturulmamışsa.
$tableName = "users";
$sql = "CREATE TABLE IF NOT EXISTS $tableName (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL,
password VARCHAR(30) NOT NULL(.)
)";
$conn->query($sql);

Kodu biraz daha inceledim ve bununla ilgili mi tam emin değilim fakat $sql değişkeninin en sonunda fazladan bir nokta var. Onu silip dener misiniz?
 
Kodu biraz daha inceledim ve bununla ilgili mi tam emin değilim fakat $sql değişkeninin en sonunda fazladan bir nokta var. Onu silip dener misiniz?

Her şeyi denedim her satırı teker teker sildim ekledim MySQL ile herhangi bir işlem yapmaya çalıştığımda nginx cevap vermiyor. Sıkıntı nginx te.
Ama nasıl çözerim bilmiyorum.
 

Yeni konular

Geri
Yukarı