CodeBlanks Logo Icon CodeBlanks

Meydan okuma - Dosya ve oturum

PHP kursu · Orta seviye · Ders 112/115

Dosya yazma/okuma ve oturumla basit bir not defteri uygulaması yazarsın.

Meydan okuma - Dosya ve oturum

Bu meydan okumada basit bir not defteri uygulaması yazacaksın. saveNote(string $note): void fonksiyonu notu bir dosyaya yazar; readNotes(): string fonksiyonu dosyanın tüm içeriğini döndürür. Oturum açan kullanıcının adını $_SESSION süper globalinde tutarsın.

Dosyaya yazmak için file_put_contents, okumak için file_get_contents kullanırsın. FILE_APPEND bayrağı her yeni notu dosyanın sonuna ekler; bu bayrak olmadan her yazma dosyanın üzerine yazar. session_start her çıktıdan önce çağrılır.

file_put_contents ve file_get_contents

file_put_contents üç temel argüman alır: dosya yolu, yazılacak metin ve isteğe bağlı bayrak. FILE_APPEND ile ekleme modunu açar; bu bayrak olmadan fonksiyon dosyayı sıfırlar. Her notu yeni satırla bitirerek aralarını ayırırsın.

file_get_contents dosyanın tüm içeriğini tek dize olarak döndürür. Dosya yoksa false döner; bu yüzden ?: "" ile boş dize varsayılanı vermek güvenlidir. session_start çağrısı sayfanın başında yapılır.

Uygulama saveNote ve readNotes fonksiyonlarını yaz

Önce session_start() çağrısı yap. saveNote(string $note): void fonksiyonunu tanımla; file_put_contents("notes.txt", $note . "\n") çağrısıyla notu dosyaya yazsın. readNotes(): string fonksiyonunu tanımla; file_get_contents("notes.txt") ?: "" ile dosyayı okusun. Sonra $_SESSION["user"] = "Ayşe" ata, saveNote("Toplantı notu") çağır ve echo $_SESSION["user"] . ": " . readNotes() ile çıktı ver.

Örnek çözümü göster
session_start'ı en başa çağır; iki fonksiyonu tanımla; $_SESSION["user"]'a değer verip echo ile yaz.
Örnek çözüm:
<?php
// saveNote ve readNotes fonksiyonlarını yaz
session_start();

function saveNote(string $note): void {
    file_put_contents("notes.txt", $note . "\n");
}

function readNotes(): string {
    return file_get_contents("notes.txt") ?: "";
}

$_SESSION["user"] = "Ayşe";
saveNote("Toplantı notu");
echo $_SESSION["user"] . ": " . readNotes();

Kendini test et

  1. session_start() ne zaman çağrılmalı?

    • Her çıktıdan önce
    • Sayfanın en sonunda
    • Her echo'dan sonra
    • Yalnızca hata durumunda
    Cevabı göster

    Her çıktıdan önce — Doğru. session_start() çıktıdan önce çağrılır; oturum çerezi bir HTTP başlığı olarak gönderilir.

  2. FILE_APPEND bayrağını ekle

    file_put_contents("notes.txt", $note . "\n", ____);
    Cevabı göster
    file_put_contents("notes.txt", $note . "\n", FILE_APPEND);
  3. Fonksiyonları görevlerine eşle

    file_put_contents
    dosyaya yazar
    file_get_contents
    dosyadan okur
    session_start
    oturumu başlatır
    $_SESSION
    oturum verisi tutar

Orta seviye bölümündeki tüm dersler