Öncelikle PHP Curl kütüphanesini kurmanız ve projenize dahil etmeniz gerekir.
Daha sonra, istediğiniz web sitesinin URL'sini belirterek bir CURL isteği yapabilirsiniz.
CURLOPT_RETURNTRANSFER seçeneğini ayarlayarak, istek sonucunu bir değişkende tutabilir ve içeriğini işleyebilirsiniz.
Aşağıda basit bir örnek verilmiştir:
// Kurulum
$ch = curl_init();
// URL ayarlamak
curl_setopt($ch, CURLOPT_URL, "https://erhanurgun.com.tr/");
// Cevapları değişkende tutmak için seçeneği ayarlamak
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// İstek yapmak
$output = curl_exec($ch);
// İşlemler bittiğinde kaynakları serbest bırakmak
curl_close($ch);
// İçeriği işlemek
// ...
Aşağıda ki örnekte, bir formun verilerini içeren bir POST isteği yapılmaktadır.
İstek sonucunu bir değişkende tutarak, içeriğini işleyebilir ve istediğiniz verilere ulaşabilirsiniz.
// Form verilerini ayarlamak
$data = array(
'field1' => 'value1',
'field2' => 'value2',
// ...
);
// Kurulum
$ch = curl_init();
// URL ayarlamak
curl_setopt($ch, CURLOPT_URL, "https://erhanurgun.com.tr/www/submit.php");
// POST isteğini ayarlamak
curl_setopt($ch, CURLOPT_POST, 1);
// Form verilerini ayarlamak
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
// Cevapları değişkende tutmak için seçeneği ayarlamak
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// İstek yapmak
$output = curl_exec($ch);
// İşlemler bittiğinde bağlantıyı sonlandırma
curl_close($ch);
// İçeriği işlemek
// ...
PHP Curl kütüphanesinin diğer seçeneklerini ve fonksiyonlarını da kullanarak daha gelişmiş ve özelleştirilmiş istekler yapabilirsiniz.
Daha fazla bilgi için PHP Curl kütüphanesiyle ilgili dokümantasyona bakabilirsiniz
Link: (https://www.php.net/manual/tr/book.curl.php)
Bu sorunu aşmak için birkaç yöntem var.
- Editörün içerisindeki kodları temizleme özelliğini varsa kullanabilirsiniz.
- Editörün içerisindeki kodları temizleme özelliği yoksa, kopyaladığınız metni notepad, notepad++ gibi herhangi bir programda açıp, yazılan kodları yapıştırdığınız da temiz bir metin oluşturabilirsiniz, sonra bu metni editörün içerisine yapıştırabilirsiniz.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Form Posts</title>
<style>
/* Selector Specificity: (1, 0, 0) */
#pdoForm {
background-color: red;
width: 250px;
padding: 10px;
}
/* Selector Specificity: (1, 0, 1) */
form#ajaxForm {
background-color: blue;
width: 200px;
padding: 10px;
}
</style>
</head>
<body>
<!-- PdoFormu -->
<form action="pdo.php" method="POST" id="pdoForm">
<input type="text" name="first_name" placeholder="Ad"><br><br>
<input type="text" name="last_name" placeholder="Soyad"><br><br>
<!-- Ajax Formu -->
<form method="POST" id="ajaxForm" style="background-color: purple; width: 200px; padding: 10px;">
<input type="text" name="username" placeholder="Kullanıcı Adı"><br><br>
<input type="password" name="password" placeholder="Şifre"><br><br>
<button type="submit" id="ajaxSubmit" name="btn_ajax" value="1">Ajax Gönder</button><br><br>
</form>
<button type="submit" id="pdoSubmit" name="btn_pdo" value="1">Pdo Gönder</button>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
// eğer ajaxSubmit'a tıklandıysa
$('#ajaxSubmit').click(function(e) {
// formu submit etme
e.preventDefault();
// ajaxForm'daki verileri al
let data = $('#ajaxForm').serialize();
// ajaxForm'daki verileri ajax.php'ye gönder
console.log(data);
$.ajax({
type: 'POST',
url: 'ajax.php',
data: data,
success: function(response) {
let data = JSON.parse(response);
console.log(data);
}
});
});
</script>
</body>
</html>

Normalde bu şekilde ayrı ayrı alıp POST edebiliyor olman gerekirdi ama gel gör ki ne yazık ki içi içe olan form'a basit bir CSS dahi işlemiyor !!!
Doğal olarak bu durum POST işlemi içinde aynı...
Ama illa ki bunun da vardır bir çözümü...
Yapsa yapsa @tayfunerbilen hocam yapar bunu :)
<?php
// PHPMailer ile çoklu mail gönderme işlemi yapan sınıf
require_once 'class.phpmailer.php'; // PHPMailer sınıfını dahil ediyoruz
require_once 'class.smtp.php'; // SMTP sınıfını dahil ediyoruz
class Mailer { // Mailer sınıfı oluşturuyoruz
private $mail; // Mailer sınıfı içinde kullanacağımız mail değişkeni
public function __construct() { // Mailer sınıfı oluşturulduğunda çalışacak olan fonksiyon
$this->mail = new PHPMailer(); // Mailer sınıfı içindeki mail değişkenine PHPMailer sınıfını atıyoruz
$this->mail->IsSMTP(); // SMTP kullanacağımızı belirtiyoruz
$this->mail->SMTPAuth = true; // SMTP kullanıcı adı ve şifre ile giriş yapacağımızı belirtiyoruz
$this->mail->SMTPSecure = 'ssl'; // SSL bağlantısı kullanacağımızı belirtiyoruz
$this->mail->Host = 'smtp.gmail.com'; // SMTP sunucusunun adresini belirtiyoruz
$this->mail->Port = 465; // SMTP sunucusunun portunu belirtiyoruz
$this->mail->Username = '[email protected]'; // SMTP kullanıcı adını belirtiyoruz
$this->mail->Password = '************'; // SMTP şifresini belirtiyoruz
$this->mail->SetFrom('[email protected]', 'Gönderen Adı'); // Gönderen adresini ve adını belirtiyoruz
$this->mail->CharSet = 'UTF-8'; // Karakter setini belirtiyoruz
}
public function send($to, $subject, $message) { // Tekil mail gönderme işlemi yapan fonksiyon
$this->mail->Subject = $subject; // Mail konusunu belirtiyoruz
$this->mail->MsgHTML($message); // Mail içeriğini belirtiyoruz
$this->mail->AddAddress($to); // Mail adresini belirtiyoruz
if (!$this->mail->Send()) { // Mail gönderme işlemi başarısız olursa
return false; // false değeri döndürüyoruz
} else { // Mail gönderme işlemi başarılı olursa
return true; // true değeri döndürüyoruz
}
}
public function sendMultiple($to, $subject, $message) { // Çoklu mail gönderme işlemi yapan fonksiyon
$this->mail->Subject = $subject; // Mail konusunu belirtiyoruz
$this->mail->MsgHTML($message); // Mail içeriğini belirtiyoruz
foreach ($to as $address) { // Mail adreslerini döngüye alıyoruz
$this->mail->AddAddress($address); // Mail adresini belirtiyoruz
}
if (!$this->mail->Send()) { // Mail gönderme işlemi başarısız olursa
return false; // false değeri döndürüyoruz
} else { // Mail gönderme işlemi başarılı olursa
return true; // true değeri döndürüyoruz
}
}
}
// Mail gönderme işlemi
$mailer = new Mailer(); // Mailer sınıfını oluşturuyoruz
$to = '[email protected]'; // Tekil mail gönderme işlemi için mail adresi
$subject = 'PHPMailer ile Tekli Mail Gönderme'; // Mail konusu
$message = 'PHPMailer ile tekli mail gönderme işlemi yaptık.'; // Mail içeriği
if ($mailer->send($to, $subject, $message)) { // Tekil mail gönderme işlemi başarılı olursa
echo 'E-posta başarıyla gönderildi.'; // Ekrana mesaj yazdırıyoruz
} else { // Tekil mail gönderme işlemi başarısız olursa
echo 'E-posta gönderilemedi.'; // Ekrana mesaj yazdırıyoruz
}
// Çoklu mail gönderme işlemi
$to = [ // Çoklu mail gönderme işlemi için mail adreslerini diziye atıyoruz
'[email protected]',
'[email protected]',
'[email protected]'
];
$subject = 'PHPMailer ile Çoklu Mail Gönderme';
$message = 'PHPMailer ile çoklu mail gönderme işlemi yaptık.';
if ($mailer->sendMultiple($to, $subject, $message)) {
echo 'E-posta başarıyla gönderildi.';
} else {
echo 'E-posta gönderilemedi.';
}
?>
PHP hic bir zaman olmez!
PHP'yi Tayfun hocam gibi derinlemesine ogrenebilirsen Laravel, Codeigniter vb. bir cok kutupheneyi dahi insa edebilirsin!
Laravel ile ekmek kazanan biri olarak soyluyorum, PHP olmez ve kendi capinda hakki yenemeyecek duzeyde islere vesile olan bir dil!
Eger PHP'yi tam manasiyla olmasa dahi cogunlukla ogrenememis olsaydim suan laravel icin paket yazamiyor olurdum!
<?php
/*
PDO ile veritabanı bağlantısını kur
'users' tablosundaki 'id' değeriyle ve 'posts' tablosundaki 'user_id' değeri eşleşen verileri çek
search inputa girilen değeri ilişkili tabloların 'name' ve 'title' alanlarına göre ara
*/
// Veritabanı bağlantısı
try {
$db = new PDO("mysql:host=localhost;dbname=database;charset=utf8", "root", "");
} catch ( PDOException $e ){
print $e->getMessage();
}
// search inputa girilen değeri al
$search = $_GET['search'];
// Verileri çek
$statement = $db->prepare("SELECT * FROM users LEFT JOIN posts ON users.id = posts.user_id WHERE users.name LIKE ? OR posts.title LIKE ?");
$statement->execute(["%$search%", "%$search%"]);
$results = $statement->fetchAll(PDO::FETCH_ASSOC);
// Verileri ekrana yazdır
foreach ($results as $result) {
echo $result['name'] . ' - ' . $result['title'] . '<br>';
}
Ornek olarak boyle bir sey ariyorsunuz anladigim kadariyla
<?php
require_once 'db.php';
if(isset($_POST['submit'])){
$baslik = $_POST['baslik'];
$aciklama = $_POST['aciklama'];
$kategori = $_POST['kategori'];
$resim = $_FILES['resim']['name'];
$resim_tmp = $_FILES['resim']['tmp_name'];
$sql = "INSERT INTO galeri (baslik,aciklama,kategori) VALUES ('$baslik','$aciklama','$kategori')";
$query = $db->prepare($sql);
$query->execute();
$last_id = $db->lastInsertId(); // son eklenen verinin id'sini alıyoruz
foreach($resim as $key => $value){
$sql = "INSERT INTO resimler (resim,galeri_id) VALUES ('$value','$last_id')";
$query = $db->prepare($sql);
$query->execute();
}
if($query){
echo "Kayıt başarılı";
}else{
echo "Kayıt başarısız";
}
}
<?php
// 1. PDO veritabanı bağlantısı
try {
$db = new PDO("mysql:host=localhost;dbname=premium", "root", "");
} catch ( PDOException $e ){
print $e->getMessage();
}
// 2. Kullanıcı bilgilerini al
$query = $db->prepare("SELECT * FROM users WHERE id = ?");
$query->execute([1]);
$user = $query->fetch(PDO::FETCH_ASSOC);
// 3. Kullanıcı premium değilse ve bitiş tarihi geçmişse premium sütununu 0 yap
if($user['premium'] == 0 && $user['premium_end'] < time()){
$query = $db->prepare("UPDATE users SET premium = 0 WHERE id = ?");
$update = $query->execute([1]);
}
// 4. Kullanıcı premium ise ve bitiş tarihi geçmişse premium sütununu 0 yap
if($user['premium'] == 1 && $user['premium_end'] < time()){
$query = $db->prepare("UPDATE users SET premium = 0 WHERE id = ?");
$update = $query->execute([1]);
}
// 5. Kullanıcı tek seferlik premium ise ve bitiş tarihi geçmişse premium sütununu 0 yap
if($user['premium'] == 2 && $user['premium_end'] < time()){
$query = $db->prepare("UPDATE users SET premium = 0 WHERE id = ?");
$update = $query->execute([1]);
}
// 6. Kullanıcı tekrar premium almak istiyorsa premium sütununu 1 yap
if($user['premium'] == 0 && $user['premium_end'] > time()){
$query = $db->prepare("UPDATE users SET premium = 1 WHERE id = ?");
$update = $query->execute([1]);
}
Kod uzerinden ornekle gostermek gerekirse basitce bu sekilde denebilir
PHP Kodu:
<!--
1. PHP ile 10 dakikada bir tıklanabilen buton oluştur
2. kalan süreyi saat dakika saniye olarak bir div içerisinde göster
3. süre bittiğinde butonu tekrar tıklanabilir hale getir
-->
<?php
$lastTime = time(); // 1. butonun son tıklanma zamanını al
$lastTime = $lastTime + 600; // 1. butonun son tıklanma zamanına 10 dakika ekle
$lastTime = date("Y-m-d H:i:s", $lastTime); // 1. butonun son tıklanma zamanını tarih formatına çevir
$now = time(); // 2. şu anki zamanı al
$end = strtotime($lastTime); // 2. butonun son tıklanma zamanını tarih formatından çıkar
$diff = $end - $now; // 2. butonun son tıklanma zamanından şu anki zamanı çıkar
// $hours = floor($diff / 3600); // 2. kalan süreyi saat olarak al
$mins = floor($diff / 60 % 60); // 2. kalan süreyi dakika olarak al
$secs = floor($diff % 60); // 2. kalan süreyi saniye olarak al
// echo $hours . " saat " . $mins . " dakika " . $secs . " saniye";
// echo $mins . " dakika " . $secs . " saniye";
?>
HTML Kodu:
<div id="time"></div> <!-- 2. kalan süreyi saat dakika saniye olarak bir div içerisinde göster -->
<button id="btn">Tıkla</button> <!-- 1. butonu oluştur -->
<script>
let btn = document.getElementById("btn"); // 1. butonu seç
let time = document.getElementById("time"); // 2. kalan süreyi saat dakika saniye olarak bir div içerisinde göster
let mins = <?php echo $mins; ?>; // 2. dakika olarak al
let secs = <?php echo $secs; ?>; // 2. saniye olarak al
btn.addEventListener("click", () => { // 1. butona tıklandığında
btn.disabled = true; // 1. butonu tıklanamaz hale getir
let timer = setInterval(() => { // 2. süre bittiğinde butonu tekrar tıklanabilir hale getir
if (mins == 0 && secs == 0) {
btn.disabled = false; // 2. butonu tekrar tıklanabilir hale getir
clearInterval(timer); // 2. süre bittiğinde butonu tekrar tıklanabilir hale getir
} else {
if (secs == 0) { // 2. saniye 0 ise
mins--; // 2. dakikayı 1 azalt
secs = 59; // 2. saniyeyi 59 yap
} else {
secs--; // 2. saniyeyi 1 azalt
}
time.innerHTML = mins + " dakika " + secs + " saniye"; // 2. kalan süreyi saat dakika saniye olarak bir div içerisinde göster
}
}, 1000); // 2. süre bittiğinde butonu tekrar tıklanabilir hale getir
});
</script>
Umarım yardımı dokunur
<!--
1. JS ile 10 dakikada bir tıklanabilen buton oluşturuyoruz
2. kalan süreyi saat dakika saniye olarak bir div içerisinde gösteriyoruz
3. süre bittiğinde butonu tekrar tıklanabilir hale getiriyoruz
-->
<button id="btn">Tıkla</button>
<br><br>
<div id="time"></div>
<script>
let btn = document.getElementById("btn"); // butonu seçtik
let time = document.getElementById("time"); // div'i seçtik
let timeLeft = 600; // 10 dakika = 600 saniye
let timer = null; // timer değişkeni oluşturduk
btn.addEventListener("click", () => { // butona tıklandığında
if (timer == null) { // timer boşsa
btn.disabled = true; // butonu devre dışı bırak
timer = setInterval(() => { // timer değişkenine setInterval fonksiyonunu atadık
timeLeft--; // her saniyede 1 azalttık
// let hour = Math.floor(timeLeft / 3600); // saat
let minute = Math.floor((timeLeft % 3600) / 60); // dakika
let second = timeLeft % 60; // saniye
// time.innerHTML = `Kalan Süre: ${hour} : ${minute} : ${second}`;
time.innerHTML = `Kalan Süre: ${minute} : ${second}`; // dakika saniye olarak yazdırdık
if (timeLeft == 0) { // süre bittiğinde
clearInterval(timer); // timer'ı durdurduk
timer = null; // timer değişkenini boşalttık
btn.disabled = false; // butonu tekrar tıklanabilir hale getirdik
timeLeft = 600; // süreyi tekrar 600 saniye yaptık
}
}, 1000); // her saniyede bir çalıştır
}
});
</script>