X
Administrator
- Katılım
- 12 Ağu 2024
- Mesajlar
- 3
- Tepkime puanı
- 0
PHP, hızlı geliştirme süresi ve yaygın kullanılabilirlik sayesinde web geliştirme dünyasında çok popüler bir dildir. Bu makalede, PHP geliştiricileri için faydalı olabilecek temel ve ileri düzey kod snippet'larını detaylandıracağız.
Bu kod parçası, form verilerini almak, temizlemek ve XSS súldırılarına karşı koruma sağlamak için kullanılabilir.
1. PHP ile Form Verişi Alma
Web geliştirme sürecinde, formlardan veri alma işlemi sıkça kullanılır.
Kod:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = htmlspecialchars($_POST['name']); // XSS koruması
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
echo "Ad: $name<br>E-posta: $email";
}
?>
Detaylar
- htmlspecialchars: HTML karakterlerini kodlar.
- filter_var: Veriyi filtreler ve sanitize eder.
2. PHP ile Dosya Yükleme
Dosya yükleme işlemi, kullanıcılardan medya veya belge almanız gereken durumlarda kullanılır.
Kod:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['file'])) {
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
echo "Dosya yükleme başarılı: $target_file";
} else {
echo "Dosya yükleme hatası!";
}
}
?>
Detaylar
- move_uploaded_file: Yüklenen dosyayı güvenli bir konuma taşır.
- $_FILES: Yüklenen dosya hakkında bilgi sağlar.
3. Veritabanı Bağlantısı ve Veri Çekme (PDO ile)
Veritabanı işlemleri PHP projelerinin ayrılmaz bir parçasıdır. PDO, güvenli ve esnek bir veritabanı bağlantısı sağlar.
Kod:
<?php
try {
$pdo = new PDO("mysql:host=localhost;dbname=testdb", "username", "password");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row['name'] . " - " . $row['email'] . "<br>";
}
} catch (PDOException $e) {
echo "Bağlantı hatası: " . $e->getMessage();
}
?>
Detaylar
- PDO: Farklı veritabanlarıyla çalışmak için soyutlama sağlar.
- setAttribute: Hata modunu ayarlamak gibi ek ayarlar için kullanılır.
4. E-posta Gönderme (PHPMailer)
E-posta gönderim işlemi genellikle PHP'nin mail() fonksiyonu ile yapılsa da PHPMailer daha modern ve güvenli bir seçenektir.
Kod:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'smtp.example.com';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'password';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->setFrom('[email protected]', 'Mailer');
$mail->addAddress('[email protected]', 'Receiver');
$mail->isHTML(true);
$mail->Subject = 'Test Email';
$mail->Body = 'Bu bir test e-postasıdır.';
$mail->send();
echo "E-posta gönderildi!";
} catch (Exception $e) {
echo "E-posta gönderim hatası: " . $mail->ErrorInfo;
}
?>
Detaylar
- PHPMailer: SMTP kullanarak e-posta göndermek için en yaygın kütüphanelerden biridir.
- composer: PHPMailer kurulumunu yapmak için Composer kullanabilirsiniz.
5. JSON Veri İşleme
API'larla çalışırken JSON verileri çok kullanılır.
Kod:
<?php
$data = ["name" => "Ali", "email" => "[email protected]"];
$jsonData = json_encode($data);
echo $jsonData;
$decodedData = json_decode($jsonData, true);
print_r($decodedData);
?>
Detaylar
- json_encode: PHP dizisini JSON formatına çevirir.
- json_decode: JSON formatındaki veriyi PHP dizisine çevirir.
6. Session ve Cookie Kullanımı
Oturum yönetimi kullanıcı takibi ve güvenliğik için kritik bir unsurdur.
Kod:
<?php
// Session başlatma
session_start();
$_SESSION['username'] = 'Ali';
echo "Kullanıcı: " . $_SESSION['username'];
// Cookie ayarlama
setcookie("user", "Ali", time() + (86400 * 30), "/"); // 30 gün
if (isset($_COOKIE['user'])) {
echo "Cookie: " . $_COOKIE['user'];
}
?>
Detaylar
- session_start: Oturum başlatmak için zorunludur.
- setcookie: Tarayıcı tarafında cookie ayarlar.
7. Güvenlik: SQL Injection Koruması
SQL sorgularının güvenli hale getirilmesi kritik bir zorunluluktur.
Kod:
<?php
$pdo = new PDO("mysql:host=localhost;dbname=testdb", "username", "password");
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute(['email' => $userEmail]);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
?>
Detaylar
- prepare ve execute: SQL sorgularını parametrik hale getirerek enjeksiyon riskini azaltır.