Kategoriler
PHP

PHP ile Excel çıktısı oluşturmak

Veri tabanı veya tablo özeliğine sahip verileri Excel dosyasına aktarmak isteyebilirsiniz. Bu işlem için aşağıdaki kodu kullanabilirsiniz. Bu kod sayesinde PHP ile Excel çıktısı oluşturabilirsiniz.

[code]<?php
function IKExcel($data=array(),$filename=’IKExcel’)
{
header(‘Content-Encoding: UTF-8’);
header(‘Content-Type: text/plain; Charset=UTF-8’);
header(‘Content-Disposition: attachment; Filename=’.$filename.’.xls’);
echo(“\xEF\xBB\xBF”); // UTF-8 BOM

echo(‘<table border=”1″>’);
foreach($data as $row)
{
echo(‘<tr>’);
foreach($row as $column)
{
echo(‘<td>’.$column.'</td>’);
}
echo(‘</tr>’);
}
echo(‘</table>’);
}

$data = array();
$data[] = array(
‘Site’,
‘Daily Time on Site’,
‘Daily Pageviews per Visitor’,
‘% of Traffic From Search’,
‘Total Sites Linking In’
);
$data[] = array(
‘Google.com’,
‘7:34’,
9.10,
‘3.30%’,
‘2,682,141’
);
$data[] = array(
‘Youtube.com’,
‘8:39’,
4.93,
‘12.60%’,
‘2,087,670’
);
$data[] = array(
‘Facebook.com’,
‘9:44’,
4.04,
‘7.30%’,
‘5,516,862’
);

IKExcel($data,”alexa”);
?>[/code]

Excel dosyasını CSV formatında çıktı almak için aşağıdaki kodu kullanabilirsiniz.

[code]<?php
function IKExcel($data=array(),$filename=’IKExcel’)
{
header(‘Content-Encoding: UTF-8’);
header(‘Content-Type: text/plain; Charset=UTF-8’);
header(‘Content-Disposition: attachment; Filename=’.$filename.’.csv’);
echo(“\xEF\xBB\xBF”); // UTF-8 BOM

foreach($data as $row)
{
echo(implode(“;”,$row));
echo(“\n”);
}
}

$data = array();
$data[] = array(
‘Site’,
‘Daily Time on Site’,
‘Daily Pageviews per Visitor’,
‘% of Traffic From Search’,
‘Total Sites Linking In’
);
$data[] = array(
‘Google.com’,
‘7:34’,
9.10,
‘3.30%’,
‘2,682,141’
);
$data[] = array(
‘Youtube.com’,
‘8:39’,
4.93,
‘12.60%’,
‘2,087,670’
);
$data[] = array(
‘Facebook.com’,
‘9:44’,
4.04,
‘7.30%’,
‘5,516,862’
);

IKExcel($data);
?>[/code]

Kategoriler
JS

JavaScript ile yapışkan nesne oluşturmak

Bir çok web sitede kaydırma çubuğunu aşağı çektikçe bazı nesnelerin üste sabit durduğunu görürsünüz. Bu işlemin mantığı kaydırma çubuğunu belirli bir seviyeye geldiğinde nesne pozisyonu sabit kalır. Bunu javascript ile yapabilirsiniz. Bu işlemi iki türlü yapabilirsiniz. Birincisi, objeye style değeri vermek. İkincisi, class atamak.

Birinci yöntem;

[code]<div id=”sticky”></div>
<script>
window.onscroll = function() {
var nesne = document.getElementById(“sticky”);
var sticky = nesne.offsetTop;
if (window.pageYOffset > sticky) {
nesne.style.position = “fixed”;
} else {
nesne.style.position = “”;
}
}
</script>[/code]

İkinci yöntem;

[code]<style>
.sticky {
position: fixed;
top: 0px
}
</style>
<script>
window.onscroll = function() {
var nesne = document.getElementById(“myHeader”);
var sticky = nesne.offsetTop;
if (window.pageYOffset > sticky) {
nesne.classList.add(“sticky”);
} else {
nesne.classList.remove(“sticky”);
}
}
</script>[/code]

Her iki yöntemde de dikkat edilmesi gereken bir husus var. “sticky” nesnesi sabitlendiği zaman; “sticky” nesnenin sonrasındaki nesne, “sticky” nesnenin yüksekliği kadar altında kalır. Bu yüzden, “sticky” nesnesi sabitlendiğinde, “sticky” nesnenin sonrasındaki nesnenin padding veya margin değeri (“sticky” nesnenin yüksekliğinden biraz fazla) vermek gerekiyor.

Kategoriler
CSS

CSS ile yapışkan nesne oluşturmak

Bir çok web sitede kaydırma çubuğunu aşağı çektikçe bazı nesnelerin üste sabit durduğunu görürsünüz. Bu işlemin mantığı kaydırma çubuğunu belirli bir seviyeye geldiğinde nesne pozisyonu sabit kalır. Bunu javascript ile yapabileceğiniz gibi css ile çok basit bir şekilde yapabilirsiniz. Bu işlem için CSS’in olanak sağladığı sticky elemanı ile yapabilirsiniz.

Yapışkan özelliğe sahip olmasını istediğiniz nesneye position özelliğine sticky değeri vermeniz yeterlidir;

[code]<style>
.sticky {
position: sticky;
top: 0;
background-color: green;
padding: 50px;
font-size: 25px;
}
</style>
<div class=”sticky”>Kaydırma pozisyonuna ulaştığınızda ekrana yapışacak olan nesne</div>[/code]

Kategoriler
PHP

PHP ile E-Posta Kontrolü

PHP’de input edilen mail adresinin geçerli olup olmadığını kontrol etmeniz gerekebilir. Peki mail kontrolünü nasıl yapmanız gerekiyor? Bu işlemi yapmak için PHP’nin sağlamış olduğu filter_var() fonksiyonu kullanabilirsiniz. Bu fonksiyon girilen mail adresinin geçerli olduğu durumda true, geçersiz olduğu durumda false döndürür.

[code]<?php
$eposta = “[email protected]”;
$kontrol = filter_var($eposta,FILTER_VALIDATE_EMAIL);
if($kontrol)
{
echo(“Mail geçerli.”);
}
else
{
echo(“Mail geçersiz.”);
}
?>[/code]

Kategoriler
PHP

PHP

Hypertext Preprocessor anlamına gelen PHP, özellikle web geliştirme için uygun olan ve HTML’ye gömülebilen, sunucu taraflı çalışan, yaygın olarak kullanılan bir Açık Kaynak genel amaçlı betik dilidir. Söz dizimi C, Java ve Perl dillerinden almış ve öğrenmesi kolaydır. Dilin ana amacı, web geliştiricilerinin dinamik olarak oluşturulmuş web sayfalarını hızlı bir şekilde yazmasına olanak sağlamaktır, ancak PHP ile daha fazlasını yapabilirsiniz.

PHP, Rasmus Lerdorf tarafında küçük bir açık kaynak projesi olarak başladı ve 1994’te PHP ilk versiyonunu ortaya çıkardı.

  • PHP, “PHP: Hypertext Preprocessor” için yinelenen bir kısaltmadır.
  • PHP, HTML’ye gömülü bir sunucu tarafı komut dosyası dilidir. Dinamik içeriği, veritabanlarını, oturum izlemeyi yönetmek, hatta tüm e-ticaret sitelerini bile oluşturmak için kullanılır.
  • MySQL, PostgreSQL, Oracle, Sybase, Informix ve Microsoft SQL Server gibi birçok popüler veri tabanına entegre edilmiştir.
  • PHP, özellikle Unix tarafında bir Apache modülü olarak derlendiğinde, uygulamasında keyifli bir şekilde zippidir. MySQL sunucusu, bir kez başlatıldığında, kayıt ayarlarında büyük sonuç kümeleriyle bile çok karmaşık sorguları çalıştırır.
  • PHP, POP3, IMAP ve LDAP gibi çok sayıda büyük protokolü destekler. PHP4, Java ve dağıtılmış nesne mimarileri (COM ve CORBA) için destek ekledi, n-katmanlı geliştirme ilk kez bir olasılık haline getirdi.
  • PHP Sözdizimi C gibi dir.
  • PHP dosyaları metin, HTML, CSS, JavaScript ve PHP kodu içerebilir.
  • PHP kodu sunucuda çalıştırılır ve sonuç tarayıcıya düz HTML olarak döndürülür.
  • PHP dosyalarının uzantısı “.php”

PHP’nin yaygın kullanımı

  • PHP, sistem işlevlerini, yani oluşturduğu, açabilen, okuyabilen, yazabilen ve kapatabilen bir sistemdeki dosyalardan gerçekleştirir.
  • PHP formları işleyebilir, yani dosyalardan veri toplayabilir, verileri bir dosyaya kaydedebilir, veri gönderebilir ve verileri kullanıcıya gönderebilir.
  • Veritabanınızdaki öğeleri PHP ile ekleyebilir, silebilir ve değiştirebilirsiniz.
  • Çerez değişkenlerine erişin ve çerezleri ayarlayın.
  • PHP’yi kullanarak, kullanıcıların web sitenizin bazı sayfalarına erişmesini kısıtlayabilirsiniz.
  • Verileri şifreleyebilir.

Temel PHP Sözdizimi

Bir PHP betiği belgenin herhangi bir yerine yerleştirilebilir.

Bir PHP betiği <?php ile başlar ve ?> ile biter:

[code]<?php
// PHP kodları
?>[/code]

PHP dosyaları için varsayılan dosya uzantısı “.php” dir.

Bir PHP dosyası normalde HTML etiketlerini ve bazı PHP kodlama kodunu içerir.

Aşağıda, basit bir PHP dosyası örneğimiz var, bir PHP betiği ile “Merhaba Dünya!” bir web sayfasında:

[code]<!DOCTYPE html>
<html>
<body>
<?php
echo “Merhaba Dünya!”;
?>
</body>
</html>[/code]

PHP’de yorumlar

PHP kodundaki bir yorum, programın bir parçası olarak okunmayan / yürütülen bir satırdır. Tek amacı, kod arayan biri tarafından okunmaktır.

Yorumlar şu amaçlarla kullanılabilir:

  • Başkalarının ne yaptığını anlamasına izin verir
  • Yaptığınız şeyi kendinize hatırlatır – Programcıların çoğu, bir ya da iki yıl sonra kendi işlerine geri dönmeyi deneyimlediler ve yaptıkları şeyi yeniden bulmaları gerekti. Yorumlar, kodu yazarken ne düşündüğünüzü size hatırlatabilir

PHP yorum yapmanın çeşitli yollarını destekler:

[code]<!DOCTYPE html>
<html>
<body>
<?php
// Bu tek satırlı bir yorumdur
# Bu aynı zamanda tek satırlı bir yorumdur
/*
Bu, birden çok satıra
yayılan çok satırlı
bir yorum bloğu
*/
// Kod satırındaki parçaları dışarıda bırakmak için yorumları da kullanabilirsiniz.
$x = 5 /* + 15 */ + 5;
echo $x;
?>
</body>
</html>[/code]

PHP Durum Hassasiyeti

PHP’de, tüm anahtar kelimeler (ör., Else, while, echo vb.), Sınıflar, işlevler ve kullanıcı tanımlı işlevler büyük / küçük harf duyarlı DEĞİLDİR.

Aşağıdaki örnekte, aşağıdaki üç echo ifadesi geçerlidir (ve eşittir):

[code]<!DOCTYPE html>
<html>
<body>
<?php
ECHO “Merhaba Dünya!<br>”;
echo “Merhaba Dünya!<br>”;
EcHo “Merhaba Dünya!<br>”;
?>
</body>
</html>[/code]

PHP Değişkenler

Değişkenler bilgi depolamak için kullanılan araçtır.Bir değişken $ işareti ile başlar, ardından değişkenin adıyla devam eder:

[code]<?php
$txt = “Merhaba Dünya!”;
$x = 5;
$y = 10.5;
?>[/code]

Yukarıdaki ifadelerin uygulanmasından sonra, $txt değişkeni, Hello world! Değerini tutacak, $x değişkeni 5 değerini tutacak ve $y değişkeni değeri 10.5 tutacaktır.

Not: Bir değişkene bir metin değeri atadığınızda, değeri tırnak içine alın.

Not: Diğer programlama dillerinden farklı olarak PHP’nin bir değişken bildirme komutu yoktur. İlk önce bir değer atadığınız an oluşturulur.

Bir değişken kısa bir ada sahip olabilir (x ve y gibi) veya daha açıklayıcı bir ad (isim, uye, video) olabilir.

PHP değişkenleri için kurallar:

  • Bir değişken $ işareti ile başlar, ardından değişkenin adı ile devam eder.
  • Değişken ad bir harf veya alt çizgi karakteri ile başlamalıdır.
  • Bir değişken adı bir sayı ile başlayamaz.
  • Değişken ad sadece alfa sayısal karakterler ve alt çizgiler içerebilir. (A-z, 0-9 ve _)
  • Değişken adlar büyük / küçük harfe duyarlıdır. ($ age ve $ AGE iki farklı değişkentir)

PHP echo deyimi genellikle ekrana veri çıkışı için kullanılır.

Aşağıdaki örnek, metin çıktısını ve bir değişkeni nasıl gösterecek:

[code]<?php
$txt = “IKWeb”;
echo “Merhaba $txt!”;
?>[/code]

Aşağıdaki örnek, yukarıdaki örnekle aynı çıktıyı üretecektir:

[code]<?php
$txt = “IKWeb”;
echo “Merhaba ” . $txt . “!”;
?>[/code]

Aşağıdaki örnek iki değişkenin toplamını verecektir:

[code]<?php
$x = 5;
$y = 4;
echo $x + $y;
?>[/code]

Yukarıdaki örnekte, PHP’ye hangi veri tipinin değişken olduğunu söylememize gerek olmadığını fark ettik.

PHP, değerine bağlı olarak değişkeni otomatik olarak doğru veri türüne dönüştürür.

C, C ++ ve Java gibi diğer dillerde programcı, kullanmadan önce değişkenin adını ve türünü bildirmelidir.

Kategoriler
AJAX

AJAX

AJAX Giriş

AJAX ile yapabilecekleriniz:

  • Bir web sunucusundaki verileri oku – sayfa yüklendikten sonra
  • Sayfayı yeniden yüklemeden bir web sayfasını güncelle
  • Verileri bir web sunucusuna gönder – arka planda

AJAX Asenkron JavaScript ve XML anlamına gelir. Bir programlama dili değildir. Bir web sayfasından web sunucularına erişmek için kullanılan bir tekniktir.

[code]var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function(){
if (this.readyState==4 && this.status==200){
document.getElementById(“ajax”).innerHTML = this.responseText;
}
};
xhttp.open(“GET”,”ajax.html”,true);
xhttp.send();[/code]

AJAX Nedir?

AJAX = Asenkron JavaScript ve XML.

AJAX bir programlama dili değildir. AJAX sadece aşağıdakilerin bir kombinasyonunu kullanır:

  • Bir tarayıcı yerleşik XMLHttpRequest nesnesi (bir web sunucusundan veri istemek için)
  • JavaScript ve HTML DOM (verileri görüntülemek veya kullanmak için)

[code]AJAX yanıltıcı bir isim. AJAX uygulamaları veri taşımak için XML kullanabilir, ancak verileri düz metin veya JSON metin olarak taşımak eşit derecede yaygındır.[/code]

AJAX, web sayfalarının sahnelerin arkasında bir web sunucusu ile veri alışverişi yapılarak eşzamansız olarak güncellenmesini sağlar. Bu, tüm sayfayı yeniden yüklemeden bir web sayfasının bölümlerini güncellemenin mümkün olduğu anlamına gelir.

AJAX Nasıl Çalışır?

1. Bir web sayfasında bir olay meydana gelir (sayfa yüklenir, bir düğmeye tıklanır)
2. Bir XMLHttpRequest nesnesi JavaScript tarafından oluşturulur
3. XMLHttpRequest nesnesi bir web sunucusuna istek gönderir
4. Sunucu isteği işliyor
5. Sunucu web sayfasına bir cevap gönderir
6. Cevap, JavaScript tarafından okunur
7. Uygun eylem (sayfa güncelleme gibi) JavaScript tarafından gerçekleştirilir

AJAX – XMLHttpRequest Nesnesi

AJAX’ın kilit taşı XMLHttpRequest nesnesidir.

XMLHttpRequest Nesnesi

Tüm modern tarayıcılar XMLHttpRequest nesnesini destekler. XMLHttpRequest nesnesi, sahnelerin arkasında bir web sunucusuyla veri alışverişi yapmak için kullanılabilir. Bu, tüm sayfayı yeniden yüklemeden bir web sayfasının bölümlerini güncellemenin mümkün olduğu anlamına gelir.

XMLHttpRequest Nesnesi Oluşturma

Tüm modern tarayıcılarda (Chrome, Firefox, IE7 +, Edge, Safari, Opera) yerleşik bir XMLHttpRequest nesnesi vardır.

Bir XMLHttpRequest nesnesi oluşturmak için söz dizimi:

degisken = new XMLHttpRequest();

Örneğin;

var xhttp = new XMLHttpRequest();

Domainler Arasında Erişim

Güvenlik nedenleriyle, modern tarayıcılar alan adları arasında erişim izni vermez. Bu, hem web sayfasının hem de yüklemeye çalıştığı XML dosyasının aynı sunucuda bulunması gerektiği anlamına gelir.

Eski Tarayıcılar (IE5 ve IE6)

Internet Explorer’ın eski sürümleri (5/6), XMLHttpRequest nesnesi yerine bir ActiveX nesnesi kullanır:

degisken = new ActiveXObject (“Microsoft.XMLHTTP”);

IE5 ve IE6’yı işlemek için, tarayıcının XMLHttpRequest nesnesini destekleyip desteklemediğini ya da bir ActiveX nesnesi oluşturup oluşturmadığını kontrol edin:

[code]if (window.XMLHttpRequest) {
// modern tarayıcılar için
xmlhttp = new XMLHttpRequest();
} else {
// IE tarayıcıları için
xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”);
}[/code]

XMLHttpRequest Nesne Yöntemleri

Yöntem Açıklama
new XMLHttpRequest() Yeni bir XMLHttpRequest nesnesi oluşturur
abort() Mevcut isteği iptal eder
getAllResponseHeaders() Başlık bilgilerini döndürür
getResponseHeader() Belirli başlık bilgilerini döndürür
open(method, url, async, user, psw) İsteği belirtir

method: istek türü GET veya POST
url: dosya konumu
async: true (asenkron) veya false (senkron)
user: isteğe bağlı kullanıcı adı
psw: isteğe bağlı şifre

send() İsteği sunucuya gönderir
GET istekleri için kullanılır
send(string) İsteği sunucuya gönderir.
POST istekleri için kullanılır
setRequestHeader() Gönderilecek başlığa bir etiket/değer çifti ekler

XMLHttpRequest Nesne Özellikleri

Özellik Açıklama
onreadystatechange ReadyState özelliği değiştiğinde çağrılacak bir işlevi tanımlar.
readyState XMLHttpRequest’in durumunu tutar.

0: istek başlatılmadı
1: sunucu bağlantısı kuruldu
2: istek alındı
3: işleme talebi
4: İstek bitti ve yanıt hazır

responseText Yanıt verisini bir dize olarak döndürür
responseXML Yanıt verilerini XML verileri olarak döndürür
status Bir isteğin durum numarasını döndürür

200: “Tamam”
403 yasak”
404 Bulunamadı”
Tam liste için Http Mesajları Referansını inceleyin.

statusText Durum metnini döndürür (ör. “OK” veya “Not Found”)

AJAX – Sunucuya İstek Gönderme

XMLHttpRequest nesnesi, bir sunucuyla veri alışverişinde kullanılır.

Sunucuya İstek Gönderme

Bir sunucuya bir istek göndermek için, XMLHttpRequest nesnesinin open() ve send() yöntemlerini kullanırız:

[code]xhttp.open(“GET”, “ajax.txt”, true);
xhttp.send();[/code]

Yöntem Açıklama
open(method, url, async) İstek türünü belirtir

method: istek türü: GET veya POST
url: sunucu (dosya) konumu
async: true (asenkron) veya false (senkron)

send() İsteği sunucuya gönderir (GET için kullanılır)
send(string) İsteği sunucuya gönderir (POST için kullanılır)

GET veya POST?

GET, POST ‘tan daha basit ve hızlıdır ve çoğu durumda kullanılabilir.

Ancak, her zaman aşağıdaki durumlarda POST isteklerini kullanın:

  • Ön belleğe alınmış bir dosya bir seçenek değildir (sunucudaki bir dosyayı veya veri tabanını güncelleyin).
  • Sunucuya büyük miktarda veri gönderme (POST, boyut sınırlaması yoktur).
  • Kullanıcı girişi (bilinmeyen karakterler içerebilen) gönderme POST, GET ‘den daha sağlam ve güvenlidir.

GET İstekleri

Basit bir GET isteği:

[code]xhttp.open(“GET”, “ajax.php”, true);
xhttp.send();[/code]

Yukarıdaki örnekte, önbelleğe alınmış bir sonuç alabilirsiniz. Bunu önlemek için URL’ye benzersiz bir kimlik ekleyin:

[code]xhttp.open(“GET”, “ajax.php?t=” + Math.random(), true);
xhttp.send();[/code]

GET yöntemiyle bilgi göndermek isterseniz, bilgileri URL’ye ekleyin:

[code]xhttp.open(“GET”, “ajax.php?fname=Web&lname=Teknoloji”, true);
xhttp.send();[/code]

POST İstekleri

Basit bir POST isteği:

[code]xhttp.open(“POST”, “ajax.php”, true);
xhttp.send();[/code]

HTML formu gibi verileri POST yapmak için setRequestHeader() ile bir HTTP başlığı ekleyin. send() yönteminde göndermek istediğiniz verileri belirtin:

[code]xhttp.open(“POST”, “ajax.php”, true);
xhttp.setRequestHeader(“Content-type”, “application/x-www-form-urlencoded”);
xhttp.send(“fname=Web&lname=Teknoloji”);[/code]

Yöntem Açıklama
setRequestHeader(header, value) İstek için HTTP üstbilgileri ekler

header: başlık adını belirtir
value: başlık değerini belirtir

URL – Bir Sunucuda Bir Dosya

open() yönteminin url parametresi, sunucudaki bir dosyanın adresi:

xhttp.open(“GET”, “ajax.php”, true);

Dosya, .txt ve .xml gibi herhangi bir dosya veya .asp ve .php gibi sunucu komut dosyaları olabilir (yanıtı geri göndermeden önce sunucuda eylemler gerçekleştirebilir).

Eşzamansız – True veya False?

Sunucu istekleri eşzamansız olarak gönderilmelidir.

open() yönteminin async parametresi true olarak ayarlanmalıdır:

[code]xhttp.open(“GET”, “ajax.php”, true);[/code]

Eşzamansız olarak gönderildiğinde, JavaScript’in sunucu yanıtını beklemesi gerekmez, ancak bunun yerine şunları yapabilirsiniz:

  • sunucu yanıtını beklerken diğer komut dosyalarını yürütme
  • yanıt hazır olduktan sonra yanıtla başa çıkmak

Onreadystatechange Özelliği

XMLHttpRequest nesnesi ile, istek bir cevap aldığında çalıştırılacak bir işlev tanımlayabilirsiniz.

Işlev XMLHttpResponse nesnesinin onreadystatechange özelliğinde tanımlanır:

[code]xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById(“demo”).innerHTML = this.responseText;
}
};
xhttp.open(“GET”, “ajax.txt”, true);
xhttp.send();[/code]

Aşağıda onreadystatechange hakkında daha fazla bilgi edineceksiniz.

Senkronize İstek

Senkronize bir istek yürütmek için, open() yöntemindeki üçüncü parametreyi false olarak değiştirin:

[code]xhttp.open(“GET”, “ajax.txt”, false);[/code]

Bazen hızlı test için async = false kullanılır. Ayrıca eski JavaScript kodunda senkronize istekleri de bulacaksınız.

Kod, sunucu tamamlanmasını bekleyeceğinden, bir onreadystatechange işlevine gerek yoktur:

[code]xhttp.open(“GET”, “ajax.txt”, false);
xhttp.send();
document.getElementById(“demo”).innerHTML = xhttp.responseText;[/code]

[code]Senkronize XMLHttpRequest (async = false), sunucu yanıtı hazır olana kadar JavaScript’in çalışmayı durdurması nedeniyle önerilmez. Sunucu meşgul veya yavaşsa, uygulama askıda kalacak veya duracaktır.

Senkronize XMLHttpRequest, web standardından kaldırılma sürecindedir, ancak bu işlem uzun yıllar sürebilir.

Modern geliştirici araçları, eşzamanlı istekleri kullanma konusunda uyarmaları konusunda teşvik edilir ve gerçekleştiğinde InvalidAccessError istisnası atabilir.[/code]

AJAX – Sunucu Yanıtı

Onreadystatechange Özelliği

ReadyState özelliği, XMLHttpRequest’in durumunu tutar. Onreadystatechange özelliği, readyState değiştiğinde yürütülecek bir işlevi tanımlar. Status özelliği ve statusText özelliği, XMLHttpRequest nesnesinin durumunu tutar.

Özellik Açıklama
onreadystatechange ReadyState özelliği değiştiğinde çağrılacak bir işlevi tanımlar.
readyState XMLHttpRequest’in durumunu tutar.
0: istek başlatılmadı
1: sunucu bağlantısı kuruldu
2: istek alındı
3: işleme talebi
4: İstek bitti ve yanıt hazır
status 200: “OK”
403: “Forbidden”
404: “Page not found”
Tam liste için Http Mesajları Referansını inceleyin.
statusText Durum metnini döndürür (ör. “OK” veya “Not Found”)

ReadyState her değiştiğinde onreadystatechange işlevi çağrılır.

ReadyState 4 ve durum 200 olduğunda, yanıt hazırdır:

[code]var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById(“demo”).innerHTML =
this.responseText;
}
};
xhttp.open(“GET”, “ajax.txt”, true);
xhttp.send();[/code]

[code]Onreadystatechange olayı, readyState’deki her değişiklik için bir kez olmak üzere dört kez (1-4) tetiklenir.[/code]

Geri Çağırma Fonksiyonu Kullanma

Geri arama işlevi, başka bir işleve parametre olarak iletilen bir işlevdir. Bir web sitesinde birden fazla AJAX göreviniz varsa, XMLHttpRequest nesnesini yürütmek için bir işlev ve her AJAX görevi için bir geri arama işlevi oluşturmanız gerekir. Fonksiyon çağrısı, URL’yi ve yanıt hazır olduğunda hangi fonksiyonu çağırması gerektiğini içermelidir.

[code]ajaxload(“url-1“, fonksiyon1);

ajaxload(“url-2“, fonksiyon2);

function ajaxload(url, cFunction) {
var xhttp;
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
cFunction(this);
}
};
xhttp.open(“GET”, url, true);
xhttp.send();
}

function fonksiyon1(xhttp) {
document.getElementById(“demo1”).innerHTML = xhttp.responseText;
}
function fonksiyon2(xhttp) {
document.getElementById(“demo2”).innerHTML = xhttp.responseText;
}[/code]

Sunucu Yanıtı Özellikleri

Özellik Açıklama
responseText yanıt verisini bir dizge olarak al
responseXML yanıt verilerini XML verileri olarak alın

Sunucu Yanıtı Yöntemleri

Yöntem Açıklama
getResponseHeader() Sunucu kaynağından belirli başlık bilgilerini döndürür
getAllResponseHeaders() Tüm başlık bilgilerini sunucu kaynağından döndürür

ResponseText Özelliği

ResponseText özelliği sunucu yanıtını bir JavaScript dizesi olarak döndürür ve buna göre kullanabilirsiniz:

[code]document.getElementById(“demo”).innerHTML = xhttp.responseText;[/code]

ResponseXML Özelliği

XML HttpRequest nesnesinin yerleşik XML ayrıştırıcısı vardır. ResponseXML özelliği, sunucu yanıtını bir XML DOM nesnesi olarak döndürür. Bu özelliği kullanarak, yanıtı bir XML DOM nesnesi olarak çözümleyebilirsiniz:

[code]<p id=”demo”></p>
<script>
var xhttp, xmlDoc, txt, x, i;
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
xmlDoc = this.responseXML;
x = xmlDoc.getElementsByTagName(“ARTIST”);
for (i = 0; i < x.length; i++) {
txt = txt + x[i].childNodes[0].nodeValue + “<br>”;
}
document.getElementById(“demo”).innerHTML = txt;
}
};
xhttp.open(“GET”, “ajax.xml”, true);
xhttp.send();
</script>[/code]

GetAllResponseHeaders () Yöntemi

GetAllResponseHeaders () yöntemi, sunucu yanıtından tüm başlık bilgilerini döndürür.

[code]var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById(“demo”).innerHTML = this.getAllResponseHeaders();
}
};[/code]

GetResponseHeader () Yöntemi

GetResponseHeader () yöntemi, sunucu yanıtından belirli başlık bilgilerini döndürür.

[code]var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById(“demo”).innerHTML = this.getResponseHeader(“content-type”);
}
};[/code]

AJAX XML Örneği

AJAX bir XML dosyası ile interaktif iletişim için kullanılabilir. Aşağıdaki örnek, bir web sayfasının AJAX ile bir XML dosyasından nasıl bilgi alabileceğini gösterecektir:

Bir kullanıcı yukarıdaki “yükle” düğmesine tıkladığında, loadDoc () işlevi yürütülür.

LoadDoc () işlevi bir XMLHttpRequest nesnesi oluşturur, sunucu yanıtı hazır olduğunda yürütülecek işlevi ekler ve isteği sunucuya gönderir.

Sunucu yanıtı hazır olduğunda, bir HTML tablosu oluşturulur, düğümler (ögeler) XML dosyasından ayıklanır ve son olarak XML verileriyle doldurulmuş HTML tablosuyla “demo” öğesini günceller:

[code]function ajax() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
fonksiyon(this);
}
};
xhttp.open(“GET”, “ajax.xml”, true);
xhttp.send();
}
function fonksiyon(xml) {
var i;
var xmlDoc = xml.responseXML;
var table=”<tr><th>Yazı</th><th>Link</th></tr>”;
var x = xmlDoc.getElementsByTagName(“POST”);
for (i = 0; i <x.length; i++) {
table += “<tr><td>” +
x[i].getElementsByTagName(“TITLE”)[0].childNodes[0].nodeValue +
“</td><td>” +
x[i].getElementsByTagName(“LINK”)[0].childNodes[0].nodeValue +
“</td></tr>”;
}
document.getElementById(“demo”).innerHTML = table;
}[/code]

[code]<?xml version=”1.0″ encoding=”UTF-8″?>
<POSTS>
<POST>
<TITLE>AJAX</TITLE>
<LINK>https://www.teknokur.net/ajax</LINK>
<KATEGORI>AJAX</KATEGORI>
<TARIH>2018-10-10</TARIH>
</POST>
<POST>
<TITLE>PHP</TITLE>
<LINK>https://www.teknokur.net/php</LINK>
<KATEGORI>PHP</KATEGORI>
<TARIH>2018-10-10</TARIH>
</POST>
</POSTS>[/code]

AJAX PHP Örneği

Aşağıdaki örnek, bir kullanıcı giriş alanındaki karakterleri yazarken web sayfasının bir web sunucusuyla nasıl iletişim kurabileceğini gösterir:

Yukarıdaki örnekte, kullanıcı giriş alanında bir karakter yazdığında “ara()” adlı bir işlev çalıştırılır.

Fonksiyon onkeyup olayı tarafından tetiklenir.

İşte HTML kodu:

[code]<html>
<head>
<script>
function ara(str) {
if (str.length == 0) {
document.getElementById(“txtHint”).innerHTML = “”;
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById(“sonuc”).innerHTML = this.responseText;
}
};
xmlhttp.open(“GET”, “ara.php?q=” + str, true);
xmlhttp.send();
}
}
</script>
</head>
<body>
<p><b>Arama Motoru:</b></p>
<form>
Anahtar Kelime: <input type=”text” onkeyup=”ara(this.value)”>
</form>
<p>Sonuç: <span id=”sonuc”></span></p>
</body>
</html>[/code]

Kod açıklaması:

İlk olarak, giriş alanının boş olup olmadığını kontrol edin (str.length == 0). Öyleyse, sonuc yer tutucunun içeriğini temizleyin ve işlevden çıkın.

Ancak, giriş alanı boş değilse, aşağıdakileri yapın:

  • Bir XMLHttpRequest nesnesi oluştur
  • Sunucu yanıtı hazır olduğunda yürütülecek işlevi oluşturun.
  • İsteği sunucudaki bir PHP dosyasına (ara.php) gönderin.
  • Q parametresi eklendiğine dikkat edin ara.php?q=”+str
  • Str değişkeni giriş alanının içeriğini tutar

PHP Dosyası – “ara.php”

PHP dosyası bir dizi isimi kontrol eder ve ilgili isimleri tarayıcıya döndürür:

[code]<?php
// anahtar kelimeler
$a[] = “web”;
$a[] = “teknoloji”;
$a[] = “teknokur”;
$a[] = “internet”;
$a[] = “www”;
// q parametresini URL’den al
$q = $_GET[“q”];
$hint = “”;
// $q boş değil ise diziden tüm ipuçlarını arama
if ($q !== “”) {
$q = strtolower($q);
$len=strlen($q);
foreach($a as $name) {
if (stristr($q, substr($name, 0, $len))) {
if ($hint === “”) {
$hint = $name;
} else {
$hint .= “, $name”;
}
}
}
}
// Hiçbir ipucu bulunmadıysa veya çıktı değerleri doğru değilse çıktı “sonuç yok”
echo $hint === “” ? “sonuç yok” : $hint;
?>[/code]

Kategoriler
PHP

PHP ile T.C. Kimlik No Sorgulamak

T.C. Kimlik No, Türkiye Cumhuriyeti vatandaşlarına verilen 11 basamaktan oluşan benzersiz numaradır. Birler ve onlar basamağı doğrulama sayısıdır. T.C. Kimlik Numarası olup olmadığı hakkında bilgi vermektedir. Diğer basamaktaki sayılar ise bir algoritma ile hesaplanmaktadır.

İlk 10 rakamın toplamının birler basamağı tc kimlik numaranın 11. rakamı vermektedir.
1, 3, 5, 7 ve 9. rakamın toplamının 7 katı ile 2, 4, 6 ve 8. rakamın toplamının 9 katı olan bu sayıların toplamının birler basamağı tc kimlik numaranın 10. rakamı vermektedir.
1, 3, 5, 7 ve 9. rakamın toplamının 8 katı tc kimlik numaranın 11. rakamı vermektedir.

PHP T.C. Kimlik No sorgulama kodu şu şekildedir;

[code]<?php
function tckimlikno($tckimlikno)
{
$olmazlar=array(‘11111111110′,’22222222220′,’33333333330′,’44444444440′,’55555555550′,’66666666660′,’7777777770′,’88888888880′,’99999999990’);
if($tckimlikno[0]==0 or !is_int($tckimlikno) or strlen($tckimlikno)!=11)
{
return(false);
}
else
{
$s13579 = null;
$s2468 = null;
$s123456789on = null;
for($a=1; $a<=9; $a=$a+2)
{
$s13579 = $s13579 + $tckimlikno[$a-1];
}
for($a=2; $a<=8; $a=$a+2)
{
$s2468 = $s2468 + $tckimlikno[$a-1];
}
for($a=1; $a<=10; $a=$a+1)
{
$s123456789on = $s123456789on + $tckimlikno[$a-1];
}
if(($s13579*7+$s2468*9)%10 != $tckimlikno[9] || $s123456789on%10 != $tckimlikno[10])
{
return(false);
}
else
{
foreach($olmazlar as $olmaz)
{
if($tckimlikno==$olmaz)
{
return(false);
}
}
return(true);
}
}
}

$tckimlikno = ‘10000000146’;
$sonuc = tckimlikno($tckimlikno);
if($sonuc)
{
echo(“DOĞRU”);
}
else
{
echo(“YANLIŞ”);
}
?>[/code]

Nüfus ve Vatandaşlık İşleri Genel Müdürlüğü sistemi üzerinden doğrulama yapmak için şu kodu kullanabilirsiniz;

[code]<?php
function tckimlik($tckimlik){
$post = ‘<?xml version=”1.0″ encoding=”utf-8″?><soap:Envelope xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=”http://www.w3.org/2001/XMLSchema” xmlns:soap=”http://schemas.xmlsoap.org/soap/envelope/”><soap:Body><TCKimlikNoDogrula xmlns=”http://tckimlik.nvi.gov.tr/WS”><TCKimlikNo>’.$tckimlik[“tcno”].'</TCKimlikNo><Ad>’.$tckimlik[“ad”].'</Ad><Soyad>’.$tckimlik[“soyad”].'</Soyad><DogumYili>’.$tckimlik[“dogumyil”].'</DogumYili></TCKimlikNoDogrula></soap:Body></soap:Envelope>’;
$header = array(
‘POST /Service/KPSPublic.asmx HTTP/1.1’,
‘Host: tckimlik.nvi.gov.tr’,
‘Content-Type: text/xml; charset=utf-8’,
‘SOAPAction: “http://tckimlik.nvi.gov.tr/WS/TCKimlikNoDogrula”‘,
‘Content-Length: ‘.strlen($post)
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, “https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx” );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$gelen = curl_exec($ch);
curl_close($ch);
return(strip_tags($gelen));
}

$tckimlik = [
“tcno”=>TCKIMLIKNUMARANIZ,
“ad”=>”ADINIZ”,
“soyad”=>”SOYADINIZ”,
“dogumyil”=>”DOĞUMYILINIZ”
];
$sonuc = tckimlik($tckimlik);
if($sonuc==”true”)
{
echo(“DOĞRU”);
}
else
{
echo(“YANLIŞ”);
}
?>[/code]

PHP SoapClient class ile T.C. Kimlik Numarası’nı doğrulama yapabileceğiniz diğer bir yöntemdir.

[code]<?php
$soap = new SoapClient(“https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx?WSDL”);
try {
$sonuc = $soap->TCKimlikNoDogrula([
‘TCKimlikNo’ => ‘TCKIMLIKNUMARANIZ’,
‘Ad’ => ‘ADINIZ’,
‘Soyad’ => ‘SOYADINIZ’,
‘DogumYili’ => ‘DOĞUMYILINIZ’
]);
if ($sonuc->TCKimlikNoDogrulaResult) {
echo(“DOĞRU”);
} else {
echo(“YANLIŞ”);
}
} catch (Exception $e) {
echo $e->faultstring;
}
?>[/code]

 

Kategoriler
PHP

PHP cURL (Client URL Library – İstemci URL Kütüphanesi)

cURL, birçok farklı protokol türüyle birçok farklı sunucu tipine bağlanmanızı ve haberleşmenizi sağlayan kütüphanedir. PHP, Daniel Stenberg tarafından oluşturulan bir kütüphane olan libcurl’ı desteklemektedir. libcurl şu anda http, https, ftp, gopher, telnet, dict, file ve ldap protokollerini desteklemektedir. libcurl ayrıca HTTPS sertifikalarını, HTTP POST’unu, HTTP PUT’unu, FTP yüklemesini (bu ayrıca PHP’nin ftp uzantısıyla da yapılabilir), HTTP form tabanlı yüklemeyi, proxy’leri, çerezleri ve kullanıcı+şifre kimlik doğrulamasını destekler.

PHP cURL Kütüphanesi kullanımı şu şekildedir;

 

Temel cURL kullanımı;

[code]<?php
$url = “https://www.whois.web.tr”;

$curl = curl_init();

curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);

$output = curl_exec($curl);

curl_close($curl);

echo($output);
?>[/code]

 

cURL POST metodu;

[code]<?php
$url = “https://www.whois.web.tr”;
$params = array(
‘q’ => ‘teknokur’
);

$curl = curl_init();

curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_POST,true);
curl_setopt($curl,CURLOPT_POSTFIELDS, $params);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);

$output = curl_exec($curl);

curl_close($curl);

echo $output;
?>[/code]

Kategoriler
PHP

PHP ile dosya yükleme (file upload)

Bu yazımızda php ile sunucuya dosya yükleme nasıl yapıldığını anlatacağız. Bir web sitemizde kullanıcıların dosya (video, resim) yüklemesini isteyebiliriz. Kullanıcılar dosya upload ile aygıtındaki (bilgisayar, tablet, cep telefonu) bir dosyayı (resim, video, döküman vb.) siteye aktarabilir. PHP ile post metodunu kullanarak nasıl dosya yüklendiğini aşağıdaki koddan görebilirsiniz;

 

Temel dosya yükleme;

[code]<?php
if($_POST)
{
if($_FILES[“dosya”][“name”])
{
$gecici_dosya = $_FILES[“dosya”][“tmp_name”];
$ozgun_dosya_adi = $_FILES[“dosya”][“name”];
$yukle = is_uploaded_file($gecici_dosya);
if($yukle)
{
$hedef = ‘dosya/’.$ozgun_dosya_adi;
$kaydet = move_uploaded_file($gecici_dosya,$hedef);
if($kaydet)
{
echo(‘<h4 class=”alert_success”>Dosya Yüklendi.</h4>’);
}
else
{
echo(‘<h4 class=”alert_error”>Dosya yüklenemedi.</h4>’);
}
}
else
{
echo(‘<h4 class=”alert_error”>Dosya yüklenemiyor.</h4>’);
}
}
else
{
echo(‘Dosya seçmediniz.’);
}
}
else
{

}
?>
<form action=”” method=”post” enctype=”multipart/form-data”>
<input type=”file” name=”dosya” />
<input type=”hidden” name=”yukle” />
<input type=”submit” value=”Yükle” />
</form>[/code]

 

Gelişmiş dosya yükleme

[code]<?php
if($_POST)
{
if($_FILES[“dosya”][“name”])
{
$max_dosya_boyutu = 1024000;
$min_dosya_boyutu = 1240;
$yuklenecek_dizin = realpath(“”).”/dosya”;
$dosya_tipleri = array(“IMAGE/PNG”,”IMAGE/JPG”,”IMAGE/JPEG”);
$dosya_uzantilari = array(“PNG”,”JPG”,”JPEG”);
$gecici_dosya = isset($_FILES[“dosya”][“tmp_name”]) ? $_FILES[“dosya”][“tmp_name”] : false;
$ozgun_dosya_adi = isset($_FILES[“dosya”][“name”]) ? $_FILES[“dosya”][“name”] : false;
$dosya_tipi = isset($_FILES[“dosya”][“type”]) ? $_FILES[“dosya”][“type”] : false;
$dosya_boyutu = isset($_FILES[“dosya”][“size”]) ? $_FILES[“dosya”][“size”] : false;
$dosyaexp = explode(“.”,$ozgun_dosya_adi);
$dosya_adi = isset($dosyaexp[0]) ? $dosyaexp[0] : null;
$dosya_uzantisi = end($dosyaexp);
if($dosya_boyutu <= $max_dosya_boyutu && $dosya_boyutu >= $min_dosya_boyutu)
{
if(in_array(strtoupper($dosya_uzantisi),$dosya_uzantilari) && in_array(strtoupper($dosya_tipi),$dosya_tipleri))
{
$yukle = is_uploaded_file($gecici_dosya);
if($yukle)
{
$hedef = $yuklenecek_dizin.”/”.mt_rand(11111111,99999999).’.’.strtolower($dosya_uzantisi);
$kaydet = move_uploaded_file($gecici_dosya,$hedef);
if($kaydet)
{
echo(‘<h4 class=”alert_success”>Dosya Yüklendi.</h4>’);
}
else
{
echo(‘<h4 class=”alert_error”>Dosya yüklenemedi.</h4>’);
}
}
else
{
echo(‘<h4 class=”alert_error”>Dosya yüklenemiyor.</h4>’);
}
}
else
{
echo(‘<h4 class=”alert_warning”>Dosya türü testeklemiyor.</h4>’);
}
}
else
{
echo(‘<h4 class=”alert_warning”>Dosya boyutu istenildiği gibi değil.</h4>’);
}
}
else
{
echo(‘Dosya seçmediniz.’);
}
}
else
{
echo(‘Yeni dosya yüklemek için bir dosya seçin.’);
}
?>
<form action=”” method=”post” enctype=”multipart/form-data”>
<input type=”file” name=”dosya” />
<input type=”hidden” name=”yukle” />
<input type=”submit” value=”Yükle” />
</form>[/code]

 

Çoklu dosya yükleme;

[code]<?php
if($_POST)
{
if(is_array($_FILES[“dosya”][“name”]))
{
for($i=0;$i<count($_FILES[“dosya”][“name”]);$i++)
{
if($_FILES[“dosya”][“name”][$i])
{
$max_dosya_boyutu = 1024000;
$min_dosya_boyutu = 1240;
$yuklenecek_dizin = realpath(“”).”/dosya”;
$dosya_tipleri = array(“IMAGE/PNG”,”IMAGE/JPG”,”IMAGE/JPEG”);
$dosya_uzantilari = array(“PNG”,”JPG”,”JPEG”);
$gecici_dosya = isset($_FILES[“dosya”][“tmp_name”][$i]) ? $_FILES[“dosya”][“tmp_name”][$i] : false;
$ozgun_dosya_adi = isset($_FILES[“dosya”][“name”][$i]) ? $_FILES[“dosya”][“name”][$i] : false;
$dosya_tipi = isset($_FILES[“dosya”][“type”][$i]) ? $_FILES[“dosya”][“type”][$i] : false;
$dosya_boyutu = isset($_FILES[“dosya”][“size”][$i]) ? $_FILES[“dosya”][“size”][$i] : false;
$dosyaexp = explode(“.”,$ozgun_dosya_adi);
$dosya_adi = isset($dosyaexp[0]) ? $dosyaexp[0] : null;
$dosya_uzantisi = end($dosyaexp);
if($dosya_boyutu <= $max_dosya_boyutu && $dosya_boyutu >= $min_dosya_boyutu)
{
if(in_array(strtoupper($dosya_uzantisi),$dosya_uzantilari) && in_array(strtoupper($dosya_tipi),$dosya_tipleri))
{
$yukle = is_uploaded_file($gecici_dosya);
if($yukle)
{
$hedef = $yuklenecek_dizin.”/”.mt_rand(11111111,99999999).’.’.strtolower($dosya_uzantisi);
$kaydet = move_uploaded_file($gecici_dosya,$hedef);
if($kaydet)
{
echo(‘<h4 class=”alert_success”>Dosya Yüklendi. (‘.$_FILES[“dosya”][“name”][$i].’)</h4>’);
}
else
{
echo(‘<h4 class=”alert_error”>Dosya yüklenemedi. (‘.$_FILES[“dosya”][“name”][$i].’)</h4>’);
}
}
else
{
echo(‘<h4 class=”alert_error”>Dosya yüklenemiyor. (‘.$_FILES[“dosya”][“name”][$i].’)</h4>’);
}
}
else
{
echo(‘<h4 class=”alert_warning”>Dosya türü testeklemiyor. (‘.$_FILES[“dosya”][“name”][$i].’)</h4>’);
}
}
else
{
echo(‘<h4 class=”alert_warning”>Dosya boyutu istenildiği gibi değil. (‘.$_FILES[“dosya”][“name”][$i].’)</h4>’);
}
}
else
{
echo(‘Dosya seçmediniz.’);
}
}
}
else
{
echo(‘Geçersiz array()’);
}
}
else
{
echo(‘Yeni dosya yüklemek için bir dosya seçin.’);
}
?>
<form action=”” method=”post” enctype=”multipart/form-data”>
<input type=”file” name=”dosya[]” multiple />
<input type=”hidden” name=”yukle” />
<input type=”submit” value=”Yükle” />
</form>[/code]

Kategoriler
PHP

PHPMailer ile mail göndermek

PHP ile mail göndermek için mail() fonksiyonu kullanabileceğinizi anlatmıştık. Bu fonksiyon sistem üzerindeki mail sunucu tarafından göndermektedir. Farklı bir mail sunucudan mail göndermek için smtp üzerinden göndermek gerekir. PHPMailer, smtp üzerinden gönderebileceğiniz bir php eklentisidir. Kurulumu ve kullanımı oldukça kolaydır. https://github.com/PHPMailer/PHPMailer sayfasından indirebilirsiniz. Kurulum ve kullanım kodları şu şekildedir.

Standart kullanım;

[code]<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require ‘PHPMailer/src/Exception.php’;
require ‘PHPMailer/src/PHPMailer.php’;
require ‘PHPMailer/src/SMTP.php’;

$mail = new PHPMailer(true);

$mail->setLanguage(‘tr’);
$mail->CharSet = “utf-8”;

$mail->isSMTP();
$mail->Host = ‘mail.example.com’;
$mail->Port = ‘587’;
$mail->Username = ‘[email protected]’;
$mail->Password = ‘Mail şifresi’;
$mail->SMTPAuth = true;
$mail->SMTPSecure = ‘tls’;

$mail->setFrom(‘[email protected]’,’Example – Admin’);
$mail->addAddress(‘[email protected]’);

$mail->isHTML(false);
$mail->Subject = ‘Test İleti’;
$mail->Body = ‘Merhaba, Bu ileti test amaçlı iletilmiştir. Bilginize.’;

if($mail->send())
{
echo(‘Mesaj gönderildi.’);
}
else
{
echo(‘Mail gönderilemedi.’);
}
?>[/code]

HTML ileti kullanımı;

[code]<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require ‘PHPMailer/src/Exception.php’;
require ‘PHPMailer/src/PHPMailer.php’;
require ‘PHPMailer/src/SMTP.php’;

$mail = new PHPMailer(true);

$mail->setLanguage(‘tr’);
$mail->CharSet = “utf-8”;

$mail->isSMTP();
$mail->Host = ‘mail.example.com’;
$mail->Port = ‘587’;
$mail->Username = ‘[email protected]’;
$mail->Password = ‘Mail şifresi’;
$mail->SMTPAuth = true;
$mail->SMTPSecure = ‘tls’;

$mail->setFrom(‘[email protected]’,’Example – Admin’);
$mail->addAddress(‘[email protected]’);

$mail->isHTML(true);
$mail->Subject = ‘Test İleti’;
$mail->Body = ‘Merhaba,<br /><br />Bu ileti test amaçlı iletilmiştir.<br /><br />Bilginize.’;

if($mail->send())
{
echo(‘Mesaj gönderildi.’);
}
else
{
echo(‘Mail gönderilemedi.’);
}
?>[/code]

try-catch kullanım;

[code]<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require ‘PHPMailer/src/Exception.php’;
require ‘PHPMailer/src/PHPMailer.php’;
require ‘PHPMailer/src/SMTP.php’;

$mail = new PHPMailer(true);

$mail->setLanguage(‘tr’);
$mail->CharSet = “utf-8”;

$mail->isSMTP();
$mail->Host = ‘mail.example.com’;
$mail->Port = ‘587’;
$mail->Username = ‘[email protected]’;
$mail->Password = ‘Mail şifresi’;
$mail->SMTPAuth = true;
$mail->SMTPSecure = ‘tls’;

$mail->setFrom(‘[email protected]’,’Example – Admin’);
$mail->addAddress(‘[email protected]’);

$mail->isHTML(true);
$mail->Subject = ‘Test İleti’;
$mail->Body = ‘Merhaba,<br /><br />Bu ileti test amaçlı iletilmiştir.<br /><br />Bilginize.’;

try
{
if($mail->send())
{
echo(‘Mesaj gönderildi.’);
}
else
{
echo(‘Mail gönderilemedi.’);
}
}
catch (Exception $e)
{
echo(‘Mesaj gönderilemedi. Mailer Hatası: ‘.$mail->ErrorInfo);
}
?>[/code]

HTML içerik ileti kullanımı;

[code]<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require ‘PHPMailer/src/Exception.php’;
require ‘PHPMailer/src/PHPMailer.php’;
require ‘PHPMailer/src/SMTP.php’;

$mail = new PHPMailer(true);

$mail->setLanguage(‘tr’);
$mail->CharSet = “utf-8”;

$mail->isSMTP();
$mail->Host = ‘mail.example.com’;
$mail->Port = ‘587’;
$mail->Username = ‘[email protected]’;
$mail->Password = ‘Mail şifresi’;
$mail->SMTPAuth = true;
$mail->SMTPSecure = ‘tls’;

$mail->setFrom(‘[email protected]’,’Example – Admin’);
$mail->addAddress(‘[email protected]’);

$mail->isHTML(true);
$mail->Subject = ‘Test İleti’;
$mail->msgHTML(file_get_contents(‘contents.html’));

if($mail->send())
{
echo(‘Mesaj gönderildi.’);
}
else
{
echo(‘Mail gönderilemedi.’);
}
?>[/code]

Dosya ekli ileti kullanımı;

[code]<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require ‘PHPMailer/src/Exception.php’;
require ‘PHPMailer/src/PHPMailer.php’;
require ‘PHPMailer/src/SMTP.php’;

$mail = new PHPMailer(true);

$mail->setLanguage(‘tr’);
$mail->CharSet = “utf-8”;

$mail->isSMTP();
$mail->Host = ‘mail.example.com’;
$mail->Port = ‘587’;
$mail->Username = ‘[email protected]’;
$mail->Password = ‘Mail şifresi’;
$mail->SMTPAuth = true;
$mail->SMTPSecure = ‘tls’;

$mail->setFrom(‘[email protected]’,’Example – Admin’);
$mail->addAddress(‘[email protected]’);

$mail->isHTML(true);
$mail->Subject = ‘Test İleti’;
$mail->Body = $ileti;
$mail->addAttachment(‘image.jpg’);

if($mail->send())
{
echo(‘Mesaj gönderildi.’);
}
else
{
echo(‘Mail gönderilemedi.’);
}
?>[/code]

Upload metodu ile dosya ekli ileti kullanımı;

[code]<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require ‘PHPMailer/src/Exception.php’;
require ‘PHPMailer/src/PHPMailer.php’;
require ‘PHPMailer/src/SMTP.php’;

$mail = new PHPMailer(true);

$mail->setLanguage(‘tr’);
$mail->CharSet = “utf-8”;

$mail->isSMTP();
$mail->Host = ‘mail.example.com’;
$mail->Port = ‘587’;
$mail->Username = ‘[email protected]’;
$mail->Password = ‘Mail şifresi’;
$mail->SMTPAuth = true;
$mail->SMTPSecure = ‘tls’;

$mail->setFrom(‘[email protected]’,’Example – Admin’);
$mail->addAddress(‘[email protected]’);

$mail->isHTML(true);
$mail->Subject = ‘Test İleti’;
$mail->Body = $ileti;
$mail->addAttachment($_FILES[‘dosya’][‘tmp_name’]);

if($mail->send())
{
echo(‘Mesaj gönderildi.’);
}
else
{
echo(‘Mail gönderilemedi.’);
}
?>[/code]

Gmail kullanımı;

[code]<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require ‘PHPMailer/src/Exception.php’;
require ‘PHPMailer/src/PHPMailer.php’;
require ‘PHPMailer/src/SMTP.php’;

$mail = new PHPMailer(true);

$mail->setLanguage(‘tr’);
$mail->CharSet = “utf-8”;

$mail->isSMTP();
$mail->Host = ‘smtp.gmail.com’;
$mail->Port = ‘465’;
$mail->Username = ‘[email protected]’;
$mail->Password = ‘Mail şifresi’;
$mail->SMTPAuth = true;
$mail->SMTPSecure = ‘ssl’;

$mail->setFrom(‘[email protected]’,’Example’);
$mail->addAddress(‘[email protected]’);

$mail->isHTML(false);
$mail->Subject = ‘Test İleti’;
$mail->Body = ‘Merhaba, Bu ileti test amaçlı iletilmiştir. Bilginize.’;

try{
if($mail->send()){
echo(‘Mesaj gönderildi.’);
}else{
echo(‘Mail gönderilemedi.’);
}
}catch(Exception $e){
echo(‘Mesaj gönderilemedi. Mailer Hatası: ‘.$mail->ErrorInfo);
}
?>[/code]