kitap takip scripti

Genel Forum
muratca61
Site Admin
Mesajlar: 35899
Kayıt: Cmt Ara 21, 2024 7:56 am

Re: kitap takip scripti

Mesaj gönderen muratca61 »

Kod:Tümünü seç

bu giriş ekranı güzel olsun lütfen css
muratca61
Site Admin
Mesajlar: 35899
Kayıt: Cmt Ara 21, 2024 7:56 am

Re: kitap takip scripti

Mesaj gönderen muratca61 »

muratca61 yazdı: Pzt Oca 20, 2025 6:19 pm

Kod:Tümünü seç

bu giriş ekranı güzel olsun lütfen css
Tabii! CSS kodlarını ayrı bir dosya olarak düzenleyelim. HTML dosyasını sade tutarak, stil dosyasını harici bir dosyada tutabiliriz. Bu şekilde daha düzenli bir yapı elde ederiz.

Adımlar:
CSS dosyasını ayrı bir dosya olarak oluşturacağız.
HTML dosyasına bu CSS dosyasını dahil edeceğiz.
1. index.php (Giriş Formu ve Kullanıcı Girişi) - HTML

Kod:Tümünü seç

<?php
session_start();

// Giriş kontrolü yapılacaksa
if (isset($_POST['submit'])) {
    // Formdan alınan kullanıcı adı ve şifre
    $username = $_POST['username'];
    $password = $_POST['password'];

    // Kullanıcı adı ve şifre kontrolü
    if ($username == 'root' && $password == '103005ms') {
        // Bağlantı sağlanmışsa session ile kullanıcıyı doğrula
        $_SESSION['logged_in'] = true;
        header('Location: dashboard.php'); // Başarılıysa yönlendirme
        exit;
    } else {
        $error_message = "Hatalı kullanıcı adı veya şifre!";
    }
}
?>

<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Giriş Ekranı</title>
    <!-- CSS dosyasını dahil et -->
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="login-container">
        <h2>Giriş Yap</h2>

        <?php
        // Hata mesajı varsa göster
        if (isset($error_message)) {
            echo "<p class='error-message'>$error_message</p>";
        }
        ?>

        <form action="index.php" method="POST">
            <div class="form-group">
                <label for="username">Kullanıcı Adı</label>
                <input type="text" name="username" required placeholder="Kullanıcı Adınızı Girin">
            </div>

            <div class="form-group">
                <label for="password">Şifre</label>
                <input type="password" name="password" required placeholder="Şifrenizi Girin">
            </div>

            <button type="submit" name="submit">Giriş Yap</button>
        </form>

        <div class="footer">
            <p>&copy; 2025 Web Uygulaması. Tüm Hakları Saklıdır.</p>
        </div>
    </div>
</body>
</html>
2. style.css (CSS Dosyası)

Kod:Tümünü seç

/* Genel stil */
body {
    font-family: 'Arial', sans-serif;
    background: #f0f0f0;
    margin: 0;
    padding: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
}

.login-container {
    background-color: #fff;
    padding: 30px;
    border-radius: 8px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    width: 100%;
    max-width: 400px;
    box-sizing: border-box;
}

h2 {
    text-align: center;
    margin-bottom: 20px;
    color: #333;
}

.form-group {
    margin-bottom: 15px;
}

label {
    font-size: 14px;
    color: #555;
}

input[type="text"], input[type="password"] {
    width: 100%;
    padding: 10px;
    font-size: 16px;
    border: 1px solid #ddd;
    border-radius: 4px;
    box-sizing: border-box;
    transition: border 0.3s ease;
}

input[type="text"]:focus, input[type="password"]:focus {
    border-color: #007BFF;
    outline: none;
}

button {
    width: 100%;
    padding: 10px;
    background-color: #007BFF;
    color: #fff;
    font-size: 16px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    transition: background-color 0.3s ease;
}

button:hover {
    background-color: #0056b3;
}

.error-message {
    color: red;
    font-size: 14px;
    text-align: center;
    margin-bottom: 15px;
}

.footer {
    text-align: center;
    margin-top: 20px;
    font-size: 12px;
    color: #aaa;
}
Açıklamalar:
HTML Dosyasındaki Değişiklikler:

link etiketi ile style.css dosyasını sayfaya dahil ettik.
HTML yapısında herhangi bir stil veya tasarım kodu bulunmuyor, sadece form elemanları ve hata mesajları yer alıyor.
CSS Dosyası:

body: Sayfayı ortalamak için flex kullanıldı ve sayfa arka planı açık gri olarak ayarlandı.
login-container: Formun çevresi beyaz, yumuşak kenarlı ve hafif gölgelendirilmiş.
input ve button: Giriş alanları ve butonun boyutları, renkleri ve geçiş efektleri ayarlandı.
footer: Sayfanın alt kısmında, ufak bir metin alanı ile telif hakkı bilgisi gösteriliyor.
error-message: Hatalı giriş durumunda kırmızı renkli mesaj görüntüleniyor.
Sonuç:
HTML dosyası sadeleşti ve sadece yapısal öğeleri içeriyor.
CSS dosyası tüm stil ve tasarım işlerini üstleniyor.
Daha modüler ve bakımı kolay bir yapıya kavuştuk.
Dosya Yapısı:

Kod:Tümünü seç

/your-project-folder
  ├── index.php
  └── style.css
Böylece, hem HTML dosyasının temiz ve düzenli kalmasını sağladık, hem de CSS ile tasarımı ayrı tutarak modülerliği artırdık. Yardıma ihtiyaç duyarsanız daha fazla geliştirebiliriz!
muratca61
Site Admin
Mesajlar: 35899
Kayıt: Cmt Ara 21, 2024 7:56 am

Re: kitap takip scripti

Mesaj gönderen muratca61 »

Kod:Tümünü seç

burada yapacağımız şudur; burada kitap isimleri girilecek ve bu kitap isimlerinin altında yine kitabın 
bölümleri kullanıcı tarafında girilecek. bu girilen bölümler tamamlanınca tamamlandı olarak işaretlenecek 
ve bu tamamlamalar yüzdelik olarak takibi yapılacak. bunun için genel veritabanı altında kitap adında tabloya kaydolabilir
muratca61
Site Admin
Mesajlar: 35899
Kayıt: Cmt Ara 21, 2024 7:56 am

Re: kitap takip scripti

Mesaj gönderen muratca61 »

muratca61 yazdı: Pzt Oca 20, 2025 6:34 pm

Kod:Tümünü seç

burada yapacağımız şudur; burada kitap isimleri girilecek ve bu kitap isimlerinin altında yine kitabın 
bölümleri kullanıcı tarafında girilecek. bu girilen bölümler tamamlanınca tamamlandı olarak işaretlenecek 
ve bu tamamlamalar yüzdelik olarak takibi yapılacak. bunun için genel veritabanı altında kitap adında tabloya kaydolabilir
Bu durumda, kitap isimlerini ve bölümlerini veritabanına kaydedecek bir yapıyı tasarlamamız gerekiyor. Ayrıca, her bölüm tamamlandığında yüzde takibi yaparak, kitapla ilgili genel ilerlemeyi gösterebilmemiz için bazı ek özellikler eklememiz gerekecek.

1. Veritabanı Yapısı
Aşağıdaki gibi bir veritabanı yapısı öneriyorum:

kitaplar: Kitapların adlarını saklamak için bir tablo.
bolumler: Her kitaba ait bölümleri saklayacak bir tablo.
Veritabanı tasarımının detayları:

kitaplar Tablosu:
id: Kitap id (auto increment)
isim: Kitap adı
tamamlanan_yuzde: Kitabın tamamlanma yüzdesi (Bunu hesaplamak için bölümlerin tamamlanma durumlarına göre dinamik olarak güncelleyeceğiz.)
bolumler Tablosu:
id: Bölüm id (auto increment)
kitap_id: İlgili kitabın id'si (foreign key)
isim: Bölüm adı
tamamlandi: Bölüm tamamlanma durumu (boolean, 0: tamamlanmadı, 1: tamamlandı)
SQL Yapısı:
Veritabanı tasarımını oluşturmak için aşağıdaki SQL sorgularını kullanabiliriz.

Kod:Tümünü seç

CREATE DATABASE genel;

USE genel;

-- Kitaplar Tablosu
CREATE TABLE kitaplar (
    id INT AUTO_INCREMENT PRIMARY KEY,
    isim VARCHAR(255) NOT NULL,
    tamamlanan_yuzde INT DEFAULT 0
);

-- Bölümler Tablosu
CREATE TABLE bolumler (
    id INT AUTO_INCREMENT PRIMARY KEY,
    kitap_id INT,
    isim VARCHAR(255) NOT NULL,
    tamamlandi BOOLEAN DEFAULT 0,
    FOREIGN KEY (kitap_id) REFERENCES kitaplar(id) ON DELETE CASCADE
);
2. Kitap ve Bölüm Ekleme ve Tamamlama
Şimdi, PHP ve MySQL ile kitapları ekleyip bölümler ekleyebilmek, her bölümün tamamlanıp tamamlanmadığını takip etmek ve kitap tamamlanma yüzdesini güncellemek için gerekli kodları yazalım.

1. Kitap Ekleme (add_book.php)
İlk olarak, kitap ekleyebilmek için bir form ve gerekli PHP kodlarını hazırlayalım.

Kod:Tümünü seç

<?php
// Veritabanı bağlantısı
$servername = "localhost";
$username = "root";
$password = "103005ms";
$dbname = "genel";

// Veritabanına bağlantı
$conn = new mysqli($servername, $username, $password, $dbname);

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

if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['kitap_isim'])) {
    // Kitap ismini al
    $kitap_isim = $_POST['kitap_isim'];

    // Kitap verisini ekle
    $sql = "INSERT INTO kitaplar (isim) VALUES ('$kitap_isim')";
    
    if ($conn->query($sql) === TRUE) {
        echo "Kitap başarıyla eklendi.";
    } else {
        echo "Hata: " . $conn->error;
    }
}

$conn->close();
?>

<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Kitap Ekle</title>
</head>
<body>
    <h2>Yeni Kitap Ekle</h2>
    <form method="POST">
        <label for="kitap_isim">Kitap Adı:</label>
        <input type="text" id="kitap_isim" name="kitap_isim" required>
        <button type="submit">Ekle</button>
    </form>
</body>
</html>
2. Bölüm Ekleme (add_section.php)
Şimdi de, kitap ekledikten sonra o kitaba ait bölümleri ekleyebileceğimiz bir sayfa oluşturacağız.

Kod:Tümünü seç

<?php
// Veritabanı bağlantısı
$servername = "localhost";
$username = "root";
$password = "103005ms";
$dbname = "genel";

// Veritabanına bağlantı
$conn = new mysqli($servername, $username, $password, $dbname);

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

if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['bolum_isim']) && isset($_POST['kitap_id'])) {
    // Bölüm ismini ve kitap id'sini al
    $bolum_isim = $_POST['bolum_isim'];
    $kitap_id = $_POST['kitap_id'];

    // Bölüm verisini ekle
    $sql = "INSERT INTO bolumler (kitap_id, isim) VALUES ('$kitap_id', '$bolum_isim')";
    
    if ($conn->query($sql) === TRUE) {
        echo "Bölüm başarıyla eklendi.";
    } else {
        echo "Hata: " . $conn->error;
    }
}

$conn->close();
?>

<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Bölüm Ekle</title>
</head>
<body>
    <h2>Bölüm Ekle</h2>
    <form method="POST">
        <label for="kitap_id">Kitap Seç:</label>
        <select name="kitap_id" id="kitap_id">
            <?php
            // Veritabanından kitapları çek ve listele
            $conn = new mysqli($servername, $username, $password, $dbname);
            $sql = "SELECT * FROM kitaplar";
            $result = $conn->query($sql);

            while ($row = $result->fetch_assoc()) {
                echo "<option value='" . $row['id'] . "'>" . $row['isim'] . "</option>";
            }
            ?>
        </select>
        <br><br>

        <label for="bolum_isim">Bölüm Adı:</label>
        <input type="text" id="bolum_isim" name="bolum_isim" required>
        <button type="submit">Ekle</button>
    </form>
</body>
</html>
3. Bölüm Tamamlama ve Yüzde Takibi
Bölümlerin tamamlanma durumu değiştikçe, kitabın tamamlanma yüzdesini güncellememiz gerekecek. Bölüm tamamlandığında, bölümü tamamlandi olarak işaretleyeceğiz ve kitap için tamamlanma yüzdesini yeniden hesaplayacağız. bu dosyanın adı mark_section_complete.php

Kod:Tümünü seç

<?php
// Veritabanı bağlantısı
$servername = "localhost";
$username = "root";
$password = "103005ms";
$dbname = "genel";

// Veritabanına bağlantı
$conn = new mysqli($servername, $username, $password, $dbname);

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

if (isset($_GET['bolum_id'])) {
    $bolum_id = $_GET['bolum_id'];

    // Bölüm tamamlandı olarak işaretle
    $sql = "UPDATE bolumler SET tamamlandi = 1 WHERE id = $bolum_id";

    if ($conn->query($sql) === TRUE) {
        // Kitap tamamlanma yüzdesini güncelle
        $sql = "SELECT kitap_id FROM bolumler WHERE id = $bolum_id";
        $result = $conn->query($sql);
        $row = $result->fetch_assoc();
        $kitap_id = $row['kitap_id'];

        // Kitaba ait tamamlanan bölümleri say
        $sql = "SELECT COUNT(*) AS toplam_bolum, 
                       SUM(CASE WHEN tamamlandi = 1 THEN 1 ELSE 0 END) AS tamamlanan_bolum 
                FROM bolumler WHERE kitap_id = $kitap_id";
        $result = $conn->query($sql);
        $row = $result->fetch_assoc();

        $tamamlanan_yuzde = ($row['tamamlanan_bolum'] / $row['toplam_bolum']) * 100;

        // Kitap yüzdesini güncelle
        $sql = "UPDATE kitaplar SET tamamlanan_yuzde = $tamamlanan_yuzde WHERE id = $kitap_id";
        $conn->query($sql);

        echo "Bölüm tamamlandı ve kitap yüzdesi güncellendi!";
    } else {
        echo "Hata: " . $conn->error;
    }
}

$conn->close();
?>
Sonuç:
Kitaplar ve Bölümler veritabanına kaydedildi.
Bölüm tamamlandığında, kitabın tamamlanma yüzdesi otomatik olarak hesaplanır ve güncellenir.
Kullanıcılar kitaplar ekleyebilir, bölümleri girebilir ve her bölümün tamamlanma durumunu takip edebilirler.
Bu temel yapıyı daha da geliştirerek, örneğin kullanıcıların giriş yapmasını, kitap ve bölüm düzenlemelerini, detaylı raporları vs. ekleyebilirsiniz.
muratca61
Site Admin
Mesajlar: 35899
Kayıt: Cmt Ara 21, 2024 7:56 am

Re: kitap takip scripti

Mesaj gönderen muratca61 »

başarılı giriş sonrası Bağlantı başarılı!
Hoşgeldiniz!
Veritabanı bağlantınız başarıyla sağlandı. sayfasın var girişler nerede?
muratca61
Site Admin
Mesajlar: 35899
Kayıt: Cmt Ara 21, 2024 7:56 am

Re: kitap takip scripti

Mesaj gönderen muratca61 »

muratca61 yazdı: Pzt Oca 20, 2025 6:44 pm
başarılı giriş sonrası Bağlantı başarılı!
Hoşgeldiniz!
Veritabanı bağlantınız başarıyla sağlandı. sayfasın var girişler nerede?
Eğer başarılı bir giriş sonrası "Bağlantı başarılı!" ve "Hoşgeldiniz!" gibi mesajlar gösteriyorsanız, muhtemelen giriş işlemi sonrası kullanıcının veritabanına başarıyla bağlandığını ve doğrulama işleminin tamamlandığını bildiren bir sayfa oluşturuyorsunuz. Bu sayfa girişin başarılı olduğunu belirten mesajları içeriyor. Ancak, giriş işlemleri ve giriş kontrolü işlemleri genellikle şu adımları içerir:

1. Kullanıcı Girişi
Kullanıcının giriş yapabilmesi için bir form gereklidir. Bu formda kullanıcı adı ve şifre bilgileri alınır. Doğru bilgilerle giriş yapıldığında, kullanıcıya başarılı bir mesaj gösterilir ve ardından yönlendirilir.

2. Başarılı Giriş Sonrası Sayfa
Giriş başarılı olduktan sonra, kullanıcıya veritabanı bağlantısının sağlandığı ve "Hoşgeldiniz!" mesajının verildiği bir sayfa gösterilir.

Aşağıda Adım Adım Giriş ve Sonrası İşlemleri Açıklayayım:
1. login.php (Giriş Formu ve Kontrolü)
Kullanıcı adı ve şifreyi kontrol eden giriş formunu oluşturacağız.

Kod:Tümünü seç

<?php
session_start();
$servername = "localhost";
$username = "root";
$password = "103005ms";
$dbname = "genel";

// Bağlantı kontrolü
$conn = new mysqli($servername, $username, $password, $dbname);

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $user = $_POST['username'];
    $pass = $_POST['password'];

    // Burada kullanıcı adı ve şifreyi kontrol ediyorsunuz (örneğin sabit değerlerle)
    if ($user == 'root' && $pass == '103005ms') {
        // Oturum başlat
        $_SESSION['logged_in'] = true;
        $_SESSION['username'] = $user;
        // Başarılı giriş sonrası yönlendirme
        header('Location: dashboard.php');
        exit;
    } else {
        $error_message = "Hatalı kullanıcı adı veya şifre!";
    }
}
?>

<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Giriş Yap</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="login-container">
        <h2>Giriş Yap</h2>
        <?php
        if (isset($error_message)) {
            echo "<p class='error-message'>$error_message</p>";
        }
        ?>
        <form method="POST">
            <label for="username">Kullanıcı Adı:</label>
            <input type="text" name="username" id="username" required>
            
            <label for="password">Şifre:</label>
            <input type="password" name="password" id="password" required>
            
            <button type="submit">Giriş Yap</button>
        </form>
    </div>
</body>
</html>
2. dashboard.php (Başarılı Giriş Sonrası Sayfa)
Giriş başarılı olduktan sonra kullanıcının yönlendirileceği sayfa. Bu sayfa, veritabanı bağlantısının başarılı olduğunu, kullanıcının hoşgeldiniz mesajını ve veritabanı bağlantısı mesajını içerecek.

Kod:Tümünü seç

<?php
session_start();

// Oturum kontrolü, giriş yapılmamışsa giriş sayfasına yönlendir.
if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] !== true) {
    header('Location: login.php');
    exit;
}

// Veritabanı bağlantısı
$servername = "localhost";
$username = "root";
$password = "103005ms";
$dbname = "genel";

// Veritabanına bağlantı
$conn = new mysqli($servername, $username, $password, $dbname);

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

<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Dashboard</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="dashboard-container">
        <h2>Hoşgeldiniz, <?php echo $_SESSION['username']; ?>!</h2>
        <p>Veritabanı bağlantınız başarıyla sağlandı.</p>
        <p>Bu sayfada kullanıcıya özel içerikler gösterilebilir.</p>
        
        <p><a href="logout.php">Çıkış Yap</a></p>
    </div>
</body>
</html>

<?php
// Bağlantıyı kapat
$conn->close();
?>
3. logout.php (Çıkış Yapma)
Kullanıcı çıkış yaptıktan sonra oturum sonlanacak ve giriş sayfasına yönlendirilecek.

Kod:Tümünü seç

<?php
session_start();

// Oturumu sonlandır
session_unset();
session_destroy();

// Giriş sayfasına yönlendir
header('Location: login.php');
exit;
?>
4. CSS Dosyası (style.css)
CSS dosyasını da biraz güzelleştirelim, böylece sayfa daha şık gözükür.

Kod:Tümünü seç

body {
    font-family: Arial, sans-serif;
    background: #f0f0f0;
    margin: 0;
    padding: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
}

.login-container, .dashboard-container {
    background-color: white;
    padding: 30px;
    border-radius: 8px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    width: 100%;
    max-width: 400px;
    box-sizing: border-box;
}

h2 {
    text-align: center;
    margin-bottom: 20px;
    color: #333;
}

label {
    font-size: 14px;
    color: #555;
}

input[type="text"], input[type="password"] {
    width: 100%;
    padding: 10px;
    font-size: 16px;
    border: 1px solid #ddd;
    border-radius: 4px;
    box-sizing: border-box;
    transition: border 0.3s ease;
}

input[type="text"]:focus, input[type="password"]:focus {
    border-color: #007BFF;
    outline: none;
}

button {
    width: 100%;
    padding: 10px;
    background-color: #007BFF;
    color: white;
    font-size: 16px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    transition: background-color 0.3s ease;
}

button:hover {
    background-color: #0056b3;
}

.error-message {
    color: red;
    font-size: 14px;
    text-align: center;
    margin-bottom: 15px;
}

a {
    color: #007BFF;
    text-decoration: none;
    font-size: 14px;
}

a:hover {
    text-decoration: underline;
}
5. Dosya Yapısı:
Bu dosyaların düzgün çalışabilmesi için aşağıdaki gibi bir dosya yapısına sahip olmalısınız:

Kod:Tümünü seç

/your-project-folder
  ├── login.php
  ├── dashboard.php
  ├── logout.php
  └── style.css
Sonuç:
Giriş Sayfası (login.php): Kullanıcı adı ve şifre formu içerir, doğru bilgilerle giriş yapılır.
Başarılı Giriş Sonrası Sayfa (dashboard.php): Kullanıcıya "Hoşgeldiniz" mesajı, veritabanı bağlantısının başarılı olduğunu belirten mesaj ve çıkış linki sunar.
Çıkış Sayfası (logout.php): Kullanıcı çıkış yaptıktan sonra oturum sona erer ve giriş sayfasına yönlendirilir.
Bu yapıyı daha da geliştirebilirsiniz, örneğin: kullanıcı girişi doğrulaması, şifre hashleme (güvenlik amacıyla), kullanıcı yönetimi gibi özellikler eklenebilir.
muratca61
Site Admin
Mesajlar: 35899
Kayıt: Cmt Ara 21, 2024 7:56 am

Re: kitap takip scripti

Mesaj gönderen muratca61 »

giriş yaptıktan sonra böyle bir sayfa verdi
Hoşgeldiniz,
Warning: Undefined array key "username" in /var/www/html/araclar/kitap takip/dashboard.php on line 35
!
Veritabanı bağlantınız başarıyla sağlandı.

Bu sayfada kullanıcıya özel içerikler gösterilebilir.
muratca61
Site Admin
Mesajlar: 35899
Kayıt: Cmt Ara 21, 2024 7:56 am

Re: kitap takip scripti

Mesaj gönderen muratca61 »

muratca61 yazdı: Pzt Oca 20, 2025 6:50 pm
giriş yaptıktan sonra böyle bir sayfa verdi
Hoşgeldiniz,
Warning: Undefined array key "username" in /var/www/html/araclar/kitap takip/dashboard.php on line 35
!
Veritabanı bağlantınız başarıyla sağlandı.

Bu sayfada kullanıcıya özel içerikler gösterilebilir.
Bu hata, PHP'deki $_SESSION['username'] öğesinin tanımlanmamış olduğunu gösteriyor. Bu durumda, giriş yapmadan doğrudan dashboard.php sayfasına gidilmiş veya oturum (session) doğru şekilde başlatılmamış olabilir. Oturum verilerini doğru şekilde yönetebilmek için aşağıdaki adımları gözden geçirelim:

1. Oturum Başlatma
Öncelikle, session_start() fonksiyonunu her sayfanın başında, giriş yapılan sayfa dahil olmak üzere her sayfada kullanmanız gerekiyor. Bu, PHP'nin oturum verilerini doğru şekilde okuyup yazabilmesi için gereklidir.

dashboard.php dosyasındaki düzenleme:

Kod:Tümünü seç

<?php
session_start(); // Oturum başlatılıyor

// Oturum kontrolü, giriş yapılmamışsa giriş sayfasına yönlendir.
if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] !== true) {
    header('Location: login.php');
    exit;
}

// Veritabanı bağlantısı
$servername = "localhost";
$username = "root";
$password = "103005ms";
$dbname = "genel";

// Veritabanına bağlantı
$conn = new mysqli($servername, $username, $password, $dbname);

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

<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Dashboard</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="dashboard-container">
        <h2>Hoşgeldiniz, <?php echo $_SESSION['username']; ?>!</h2>
        <p>Veritabanı bağlantınız başarıyla sağlandı.</p>
        <p>Bu sayfada kullanıcıya özel içerikler gösterilebilir.</p>
        
        <p><a href="logout.php">Çıkış Yap</a></p>
    </div>
</body>
</html>

<?php
// Bağlantıyı kapat
$conn->close();
?>
2. Giriş Sayfasındaki Düzenlemeler (login.php)
Giriş formunu doldurduktan sonra, giriş başarılı olduğunda oturumu başlatmalı ve kullanıcının adı ile $_SESSION['username'] verisini saklamalısınız.

login.php dosyasındaki düzenleme:

Kod:Tümünü seç

<?php
session_start(); // Oturum başlatılıyor
$servername = "localhost";
$username = "root";
$password = "103005ms";
$dbname = "genel";

// Bağlantı kontrolü
$conn = new mysqli($servername, $username, $password, $dbname);

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $user = $_POST['username'];
    $pass = $_POST['password'];

    // Burada kullanıcı adı ve şifreyi kontrol ediyorsunuz (örneğin sabit değerlerle)
    if ($user == 'root' && $pass == '103005ms') {
        // Oturum başlat
        $_SESSION['logged_in'] = true;
        $_SESSION['username'] = $user;  // Kullanıcı adı oturumda saklanıyor
        // Başarılı giriş sonrası yönlendirme
        header('Location: dashboard.php');
        exit;
    } else {
        $error_message = "Hatalı kullanıcı adı veya şifre!";
    }
}
?>

<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Giriş Yap</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="login-container">
        <h2>Giriş Yap</h2>
        <?php
        if (isset($error_message)) {
            echo "<p class='error-message'>$error_message</p>";
        }
        ?>
        <form method="POST">
            <label for="username">Kullanıcı Adı:</label>
            <input type="text" name="username" id="username" required>
            
            <label for="password">Şifre:</label>
            <input type="password" name="password" id="password" required>
            
            <button type="submit">Giriş Yap</button>
        </form>
    </div>
</body>
</html>
3. Çıkış Yapma (logout.php)
Çıkış yaptıktan sonra oturumun sonlanması gerekiyor. Bunu sağlamak için oturumu sonlandıran bir logout.php sayfası oluşturmalıyız.

logout.php dosyasındaki düzenleme:

Kod:Tümünü seç

<?php
session_start(); // Oturum başlatılıyor

// Oturumu sonlandır
session_unset();
session_destroy();

// Giriş sayfasına yönlendir
header('Location: login.php');
exit;
?>
4. Genel Kontroller ve Açıklamalar:
session_start(): Oturum açılmadan önce her sayfada session_start() kullanmak önemlidir. Bu, PHP'nin oturum verilerini başlatmasına ve okumasına olanak tanır.
Oturum verileri: Giriş yapıldığında $_SESSION['username'] gibi verileri saklayarak kullanıcının oturumunu tanıyabilirsiniz. Bu veri, kullanıcı doğru giriş yaptıysa login.php sayfasında oturuma kaydedilir ve başarılı bir şekilde yönlendirilen dashboard.php sayfasında kullanılabilir.
Giriş kontrolü: dashboard.php sayfasına erişmeden önce, oturumun doğruluğunu kontrol etmeniz gerekiyor. Eğer kullanıcı oturumu açmamışsa, giriş sayfasına yönlendirilir.
Sonuç:
Bu düzenlemelerle birlikte, kullanıcının giriş yaptıktan sonra doğru bir şekilde dashboard.php sayfasına yönlendirileceğini ve oturum verilerinin hatasız bir şekilde işlendiğini görebileceksiniz. Eğer hala hata alıyorsanız, PHP hata raporlamalarını aktif hale getirerek sorunun tam olarak nereden kaynaklandığını belirleyebilirsiniz.

Eğer hata almaya devam ediyorsanız, PHP hata raporlamasını aktif etmek için şu kodu ekleyebilirsiniz:

Kod:Tümünü seç

error_reporting(E_ALL);
ini_set('display_errors', 1);
Bu kodu, her sayfanın en üst kısmına ekleyerek hata mesajlarını görebilirsiniz.
muratca61
Site Admin
Mesajlar: 35899
Kayıt: Cmt Ara 21, 2024 7:56 am

Re: kitap takip scripti

Mesaj gönderen muratca61 »

Kod:Tümünü seç

//login.php
<?php
session_start(); // Oturum başlatılıyor

// Veritabanı bağlantısı
$servername = "localhost";
$username = "root";
$password = "103005ms";
$dbname = "genel";

// Veritabanına bağlantı
$conn = new mysqli($servername, $username, $password, $dbname);

// Hata kontrolü
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $user = $_POST['username'];
    $pass = $_POST['password'];

    // Burada sabit kullanıcı adı ve şifre kontrolü yapılır
    if ($user == 'root' && $pass == '103005ms') {
        // Oturum başlat
        $_SESSION['logged_in'] = true;
        $_SESSION['username'] = $user;  // Kullanıcı adı oturumda saklanıyor
        
        // Başarılı giriş sonrası yönlendirme
        header('Location: dashboard.php');
        exit;
    } else {
        $error_message = "Hatalı kullanıcı adı veya şifre!";
    }
}
?>

<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Giriş Yap</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="login-container">
        <h2>Giriş Yap</h2>
        <?php
        if (isset($error_message)) {
            echo "<p class='error-message'>$error_message</p>";
        }
        ?>
        <form method="POST">
            <label for="username">Kullanıcı Adı:</label>
            <input type="text" name="username" id="username" required>
            
            <label for="password">Şifre:</label>
            <input type="password" name="password" id="password" required>
            
            <button type="submit">Giriş Yap</button>
        </form>
    </div>
</body>
</html>

Kod:Tümünü seç

//dashboard.php
<?php
session_start(); // Oturum başlatılıyor

// Oturum kontrolü, giriş yapılmamışsa giriş sayfasına yönlendir.
if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] !== true) {
    header('Location: login.php');
    exit;
}

// Veritabanı bağlantısı
$servername = "localhost";
$username = "root";
$password = "103005ms";
$dbname = "genel";

// Veritabanına bağlantı
$conn = new mysqli($servername, $username, $password, $dbname);

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

<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Dashboard</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="dashboard-container">
        <h2>Hoşgeldiniz, <?php echo $_SESSION['username']; ?>!</h2>
        <p>Veritabanı bağlantınız başarıyla sağlandı.</p>
        <p>Bu sayfada kullanıcıya özel içerikler gösterilebilir.</p>
        
        <p><a href="logout.php">Çıkış Yap</a></p>
    </div>
</body>
</html>

<?php
// Bağlantıyı kapat
$conn->close();
?>

Kod:Tümünü seç

//style.css
body {
    font-family: Arial, sans-serif;
    background: #f0f0f0;
    margin: 0;
    padding: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
}

.login-container, .dashboard-container {
    background-color: white;
    padding: 30px;
    border-radius: 8px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    width: 100%;
    max-width: 400px;
    box-sizing: border-box;
}

h2 {
    text-align: center;
    margin-bottom: 20px;
    color: #333;
}

label {
    font-size: 14px;
    color: #555;
}

input[type="text"], input[type="password"] {
    width: 100%;
    padding: 10px;
    font-size: 16px;
    border: 1px solid #ddd;
    border-radius: 4px;
    box-sizing: border-box;
    transition: border 0.3s ease;
}

input[type="text"]:focus, input[type="password"]:focus {
    border-color: #007BFF;
    outline: none;
}

button {
    width: 100%;
    padding: 10px;
    background-color: #007BFF;
    color: white;
    font-size: 16px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    transition: background-color 0.3s ease;
}

button:hover {
    background-color: #0056b3;
}

.error-message {
    color: red;
    font-size: 14px;
    text-align: center;
    margin-bottom: 15px;
}

a {
    color: #007BFF;
    text-decoration: none;
    font-size: 14px;
}

a:hover {
    text-decoration: underline;
}
muratca61
Site Admin
Mesajlar: 35899
Kayıt: Cmt Ara 21, 2024 7:56 am

Re: kitap takip scripti

Mesaj gönderen muratca61 »

Kod:Tümünü seç

veritabanı adı:genel
kullanıcı adı:root
şifre:103005ms
burada oluşturulacak tablo adı:kitaplar
bu bilgilerle bir php script oluşturalım. 
-bu scripte kullanıcı kitap isimleri girecek. bu bitabın tamamlanacak bölümleri olacak
-bu bölümler kullanıcı tarafından oluşturulacak. 
-kullanıcı bu bölümleri tamamladıkça yüzdelik olarak her kitap ayrı ayrı 
-ve toplam yüzdelik ayrıca gösterecek.
-görüntü güzel olacak ayrı css oluşturulacak
-oluşturulacak dosya isimlerini vermelisin
Cevapla