PHP Bot YapA�mA� – Uzak Siteden Veri A�ekmek

Php ile bot yazarken iki yA�ntem kullanA�lA�r bunlardan biri file_get_contents() yA�ntemi, bir diAYeri ise Php CURL yA�ntemidir. A�lk yA�ntem local ortamda A�alA�AYA�r ancak bazen sunucuya attA�AYA�nA�zda A�alA�AYmayabilir o yuzden en saAYlA�klA� yA�ntem CURL yA�ntemidir. Bu makalede CURL ile php bot nasA�l yazA�lA�r ? bundan bahsetmek istiyorum.

Php ile bot yazmak nedir, neden ve nerelerde kullanA�rA�z bundan bahsedelim biraz; sitenizde kullanmak istediAYiniz bir veriyi baAYka bir siteden, sayfadan dinamik olarak A�ekebiliriz. A�rneAYin film sitelerinin birA�oAYo bu iAY iA�in kendi veri tabanA�nA� kullanmaz ve baAYka bir siteden kaynak alarak sayfasA�nA� doldurur ve bu iAYlem sadece metin tA?rA? veriler iA�in deAYil resim dosyalarA�na varana kadar A�ekebilirsiniz.

Azimdi CURL yA�ntemiyle php bot nasA�l yazA�lA�r buna bakalA�m.

A�ncelikle kendimize Curl fonksiyonu oluAYturalA�m.

EAYer bir post verisi gA�nderecekseniz 2. parametreyi a�?kullanici=bilisim34&sifre=123456a�? AYeklinde kullanmanA�z gerekecek.

A�rneAYin :

Bu A�rnek kullanA�mda kendi sitemizin paneline giriAY yapmak iA�in kullanA�cA� adA� ve AYifremizi postlamA�AY olduk. DoAYru bilgileri yazdA�AYA�mA�zda curl fonksiyonu sayesinde PHP A?zerinden panelimize de ulaAYabiliriz.

PHP botu ile belirli iA�erikleri alma

Sitelerin iA�eriklerine direkt olarak ulaAYtA�ktan sonra istediAYimiz kA�sA�mdaki deAYeri ve iA�eriAYi almak iA�in A�ncelikle bir ara belirlemeliyiz. Sitenin kaynak kodunu inceleyip ayA�rt edici bir aralA�k bulmalA�yA�z.

Ben A�rnek bir iA�erik sunacaAYA�m, ve bu A�rnek iA�erikten istediAYimiz kA�smA� alacaAYA�z. Metereoloji sitesinin A�stanbul iA�in verdiAYi sonuA�larA�n bulunduAYu kA�smA�n kaynak kodu aAYaAYA�daki gibi:

A�ok karA�AYA�k bir kaynak kodu gibi gA�rA?nA?yor ama aslA�nda tam bizim aradA�AYA�mA�z gibi bir sonuA�. Farkettiyseniz tA?m deAYerler ayA�rt edilebilecek belli bazA� elementlerin arasA�nda. A�rneAYin tarih class=”sond_zaman”></td> arasA�nda.

Bir iA�erikte istediAYimiz aralA�AYA� almak iA�in yine curl gibi hazA�r bir fonksiyon kullanacaAYA�z. Bu fonksiyonu kopyala-yapA�AYtA�r yaparak sizde kullanabilirsiniz.

Bu parcala_ve_alA� fonksiyonuda basit bir AYekilde aralA�k iA�erisindeki deAYeri bize verir. KullanA�mA� iA�in 3 parametre vardA�r. A�lk parametre aralA�AYA�n baAYA�, ikinci parametre aralA�AYA�n sonu, A?A�A?ncA? parametre ise araAYtA�rA�lacak iA�erik.

Bu A�rnekte sitemizin kaynak kodlarA�na ulaAYA�p <title>a��</title> arasA�nA� yani sitemizin baAYlA�AYA�nA� almA�AY olduk ve ekrana yazdA�rdA�k. DeAYerin yA?klendiAYi deAYiAYkene [0] dememizin sebebi ilk yakalanan aralA�AYA� almamA�z. EAYer benzer aralA�klardan daha fazla var ise onlarA�da dizinin diAYer elemanlarA� olarak ekleyecektir. A�rneAYin birden fazla title aralA�AYA� olsaydA� diAYer sonuA�larda [1], [2] AYeklinde diAYer dizilere sA�ralanacaktA�.

Gelelim bu fonksiyonu bahsettiAYimiz meteroloji sitesinde uygulamaya:

Sitede alt ve A?st sA�caklA�klarA�n bulunduAYu deAYerlerin aralA�AYA�nA� bulup ara fonksiyonumuz sayesinde aralA�AYA� alA�p ekrana yazdA�rdA�k. SonuA� olarak ekrandaA�A�stanbul da 11 KasA�m A�arAYamba iA�in tahmini sA�caklA�k:16,5A�CA� AYeklinde bir A�A�ktA� alacaAYA�z.

KA�saca bot iA�erik alma mantA�AYA� sitelerdeki iA�eriklerin ayA�rt edici aralA�klarA�nA� bulup o kA�smA� almaya dayanmaktadA�r. BunlarA�n dA�AYA�nda hayal gA?cA?nA?zA? kullanarak daha bir A�ok mantA�k A?retebilir ve her tA?rlA? iA�eriAYe ulaAYA�p dilediAYiniz botlarA� kodlayabilirsiniz.

PHP ile gerA�ek ip adresini almak

AAYaAYA�daki basit fonksiyonu projelerinize dahil ederek kullanA�cA�nA�n gerA�ek ip adresini alabilirsiniz .

SA?rekli kullandA�AYA�m fonksiyonlardan biridir.

 

 

Smarty iA�erisinde ezSql sA�nA�fA� kullanA�mA�

A�nceki yazA�larda smarty ve ezSql ile alakalA� bilgiler verip nasA�l kurulduAYunu ve kullanA�m A�rneklerini yaptA�k . Bu yazA�mda ise smarty tema moturu iA�erisinde ezSql veritabanA� sA�nA�fA�nA�n nasA�l kullanA�lacaAYA�na bakacaAYA�z .

Smarty Nedir ?

Smarty Kurulumu NasA�l GerA�ekleAYtirilir ?

ezSql nedir ?

 

A�nceki yazA�larA�mda smarty ve ezSql classlarA�nA� ayrA� ayrA� anlattA�AYA�m iA�in kurulumu yapacaAYA�nA�zA� varsayA�yorum .

PHP smarty kurulumu

A�nceki yazA�mda smarty frameworka��A?n ne olduAYunu aA�A�klamA�AYtA�m . Bu yazA�mda ise smarty framework kurulumu ve ilk A�rneAYimizi yapacaAYA�z .

Buradaki linkten smarty framework son sA?rA?mA?nA? indirelim ve zip iA�erisinden web sunucumuza yada localhosta sadece libs klasA�rA?nA? A�A�kartalA�m .

ArdA�ndan aAYaAYA�daki gibi klasA�r ve dosya yapA�mA�zA� oluAYturalA�m .

cache
config
libs
templates
templates_c
index.php

 

UyarA� : Templates ve cache klasA�rleri yazma iznine sahip olmalA�dA�r .

ArdA�ndan index.php sayfamA�zA� aA�alA�m ve kodumuzu yazalA�m

 

Tema dosyamA�zA� oluAYturmamA�z gerekiyor . Bunun iA�in templates klasA�rA? altA�na index.tpl isimli bir dosya oluAYturalA�m ve iA�erisine html ve smarty kodumuzu yazalA�m

 

Smarty ile ilk A�rneAYimiz bu AYekildedir . KA�saca aA�A�klamak gerekirse ;

index.php dosyamA�zda smarty template ve cache klasA�rleri yollarA�nA� belirledir .
ArdA�ndan merhaba_dunya adA�nda bir deAYiAYken tanA�mladA�k ve bu deAYiAYkene Merhaba DA?nya yazA�sA�nA� atadA�k .
display fonksiyonu ile de deAYiAYkenimizi templates/index.tpl dosyamA�za gA�nderdik . A�lk A�rneAYimiz burada son buldu .

Bundan sonraki yazA�mda php smarty ile veritabanA� iAYlemlerine gA�zatacaAYA�z .

PHP smarty framework nedir ?

PHP ile kullanabileceAYimiz birA�ok framework mevcuttur . Bir A�oAYu MVC mimarisine sahip frameworka�� lerdir . MVC ( model a�� view a�� controller ) mimarisi yazA�lA�mA� html taglarA�nA� ve veritabanA� iAYlemleri birbirinden ayA�ran yapA�ya sahiptir . Smarty ise sadece yazA�lA�mA� html taglarA�ndan ayA�ran yapA�dadA�r . Bu tip yapA�lara sahip frameworka�� lere tamplate engine denir .

MVC yapA�sA�na ait resmi aAYaAYA�da inceleyebilirsiniz .

mvc

Smarty aA�A�k kaynak kodlu php template motorudur . A�n tanA�mlA� olarak hemen hemen tA?m php hazA�r sistem fonksiyonlarA�nA� iA�erisinde barA�ndA�rA�r . A�ne A�A�kan birkaA� A�zelliAYini aAYaAYA�daki gibi sA�ralayabiliriz .

  • Control flow, foreach
  • if, elseif, else gibi koAYullu ifadeleri kullanabilme
  • DeAYiAYken oluAYturabilme ve A�zelleAYtirme a�� A�rnek {$variable|nl2br}
  • HazA�r fonksiyonlar a�� A�rnekler {html_select_date start_year=a��-5a�? end_year=a��+5a�?}
  • FonksiyonlarA� kendi dA?zenleyecileri ile oluAYturabilme imkanA� / fonksiyonlar / A�A�kA�AY filtreleri
  • SayfalarA� A�nbelleAYe alabilme

Sayfa A�nbellekleme yani cache A�zelliAYi kullanA�AYlA� ve kolaydA�r . KA?A�A?k bir kod ile kolayca cache A�zelliAYini aktif edebiliriz .

Smarty yapA�sA�na ait kod aAYaAYA�daki gibidir .

 


HTML yapA�sA�nda kullanA�mA� :

 

ezSQL | VeritabanA� SA�nA�fA�

Neden ezSQL?

Bu bana sorulduAYunda her zaman verdiAYim cevap pratikliAYi ve wordpress gibi bir devin kullanmasA�. YapA�mcA�sA� Justin Vincent ise AYA�yle cevaplamA�AY;

  • PHP sistemlerinizde veritabanA�nA�zA� hA�zlA� ve kolay bir AYekilde yA�netmek. ( mySQL / Oracle8/9 / InterBase/FireBird / PostgreSQL / MS-SQL / SQLite / SQLite c++)
  • Scriptinizin A?stA?ne eklediAYiniz tek bir php dosyasA�ndan oluAYur ve standart veritabanA� fonksiyonlarA�nA� hA�zlA� ve kolay birAYekilde kullanmanA�zA� saAYlar.
  • Sunucu ekstra yA?k bindirmemek iA�in sorgularA� otomatik olarak A�nbelleAYe alA�r ve kullanmanA�za izin verir.
  • A�ok rahat bir AYekilde sorgularA�nA�zA� debug etme imkanA� sunar.
  • A�oAYu ezSQL fonksiyonu Objects, Associative Arrays, veya Numerical Arrays olarak sonuA� dA�ndA?rA?r.
  • Proje geliAYtirme sA?renize katlA� saAYlar, kodlarA�nA�zA� hA�zlandA�rA�r ve optimizasyon saAYlar.
  • KA?A�A?k bir sA�nA�ftA�r ve sisteminize yA?k bindirmez.

Kurulumu

  1. ezSQL sA�nA�fA�nA�n en son sA?rA?mA?nA? buradan indirin
  2. BetiAYinizin ana dizinine bir klasA�r oluAYturun ve adA�nA� ezSQL yapA�n (Opsiyonel)
  3. A�ndirdiAYiniz ezSQL klasA�rA?nA?n iA�indeki shared klasA�rA?ne girin ve ez_sql_core.php dosyasA�nA� 2. adA�mda oluAYturduAYunuz klasA�r iA�ine atA�n.
  4. mySQL iA�in ana dizindenA� mysql klasA�rA?ne girin ve iA�indeki ez_sql_mysql.php dosyasA�nA� 2.adA�mda oluAYturduAYunuz klasA�r iA�ine atA�n.
  5. Bu iki dosyayA� include ederek veritabanA� baAYlantA�nA�zA� yapA�n (AAYaAYA�daki kodu inceleyin)

YukarA�daki kodlarA� mysqlBaglan.php olarak kayA�t ederek veritabanA� iAYlemi yapacaAYA�nA�z sayfalara dahil ederek kullanabilirsiniz.

ezSQL fonksiyonlarA�

  1. $db->get_results a�� birden fazla satA�rdan oluAYan sonuA� kA?mesi dA�ndA?rA?r
  2. $db->get_row a�� tek bir satA�r iA�in sonuA� kA?mesi getirir
  3. $db->get_col a�� tek bir sutA?ndaki deAYeri getirir
  4. $db->get_var a�� tek bir satA�rdaki tek bir deAYeri getirir
  5. $db->query a�� veritabanA�na sorgu gA�nderir (INSERT, UPDATE, DELETE vb iAYlemler iA�in)
  6. $db->debug a�� son sorguyu ve sonuA� kA?mesini yazdA�rA�r
  7. $db->vardump a�� sonucu ve yapA�sA�nA� yazdA�rA�r
  8. $db->select a�� yeni bir veritabanA� seA�er
  9. $db->get_col_info a�� sutA?nlarA�n bilgilerini getirir
  10. $db->hide_errors a�� ezSQL hatalarA�nA� deaktif eder
  11. $db->show_errors a�� ezSQL hatalarA�nA� aktif eder
  12. $db->escape a�� ZararlA� karakterleri temizler (addslashes gibi)
  13. $db = new db a�� Yeni veritabanA� nesnesi oluAYturur.

ezSQL deAYiAYkenleri

  1. $db->num_rows a�� EAYer varsa son sorgudaki dA�nen satA�r sayA�sA�nA� verir.
  2. A�$db->insert_id a�� INSERT sql sorgusu kullanA�ldA�AYA�nda oluAYan AUTO_INCRIMENT deAYerini verir
  3. $db->rows_affected a�� Son yapA�lan INSERT, UPDATE veya DELETE sql sorgularA�nda etkilenen satA�r sayA�sA�nA� verir.
  4. $db->num_queries a�� Scriptte A�alA�AYtA�rA�lan gerA�ek (A�nbellekte olmayan) sorgu sayA�sA�nA� verir.
  5. $db->debug_all a�� EAYer true deAYer alA�rsa (Bknz: $db->debug_all = true;) Scriptteki TA?M sorgularA� ve TA?M sonuA�larA� verir.
  6. $db->cache_dir a�� A�nbellekleme dosyalarA�nA�n dizini.
  7. $db->cache_queries a�� Sorgu sonuA�larA�nA� A�nbelleAYe almayA� saAYlar (Bknz: mysql/disk_cache_example.php)
  8. $db->cache_inserts a�� GiriAYleri A�nbelleAYe alA�r (Bknz: mysql/disk_cache_example.php)
  9. $db->use_disk_cache a�� Disk A�nbellek sistemini kullanmayA� saAYlar (Bknz: mysql/disk_cache_example.php)
  10. $db->cache_timeout a�� A�nbellek zaman aAYA�m sA?resi (Bknz: mysql/disk_cache_example.php)

$db->query

VeritabanA�na sorgu gA�ndermeye yarar, genelde INSERT,DELETE,UPDATE gibi iAYlemler iA�in kullanA�lA�r.

A�rnek

$db->get_var

$db->get_row

VeritabanA�ndan tek bir satA�r getirmeye yarar, A�rneAYin bir A?yea��ye ait bilgileri almak istiyorsunuz.

$db->get_results

Bu kadar bilginin ezSQLa��i kullanmaya baAYlamak iA�in yeterli olacaAYA�nA� dA?AYA?nA?yorum, siz A�yle dA?AYA?nmA?yorsanA�z burdanA� bir bakA�n

PHP 5.6a��da Yeni Neler Var?

Constant Scalar Expressions
Const tanA�mlamasA� yapA�lA�rken numerik veya string iAYlemleri yapA�labilir.

A�A�ktA� :
4
The value of THREE is 3

a�?a��a�? A?A� nokta operatA�rA?, Variadic Fonksiyonlar
Fonksiyon tanA�mA�nda a�� kullanarak n adet parametre giriAYi saAYlanabilir.
A�nceki versionlarda fonksiyona girilen parametrelere func_get_args() fonksiyonu ile ulaAYA�yorduk.

A�A�ktA�:
$req: 1; $opt: 0; number of params: 0
$req: 1; $opt: 2; number of params: 0
$req: 1; $opt: 2; number of params: 1
$req: 1; $opt: 2; number of params: 2
$req: 1; $opt: 2; number of params: 3

a�?a��a�? operatorA? ile unpack etme iAYlemi
array ve Traversable objeler a�?a��a�? ile dA�AYarA� A�A�kartA�labilir.
(Rubya��deki splat operatA�rA?)

A�A�ktA�:
6

A�A�ktA�:
string(25) a�?1, 2, 3, 4, 5, 6, 7, 8, 9a�?

a�?**a�? A?s Alma OperatA�rA?
printf(“2 ** 3 == %d\n”, 2 ** 3); printf(“2 ** 3 ** 2 == %d\n”, 2 ** 3 ** 2);</code> $a = 2; $a **= 3; printf(“a == %d\n”, $a);

A�A�ktA�:
2 ** 3 == 8
2 ** 3 ** 2 == 512
a == 8

phpdbg
PHP a�? de artA�k interaktif bir debugger var : phpdbg.
http://phpdbg.com/docs

default_charset
php.inia��deki default_charset deAYeri artA�k phpa��deki htmlspecialchars() gibi fonksiyonlar iA�in de varsayA�lan olarak kullanA�lacak.

BA?yA?k Dosya Upload Etme
2GB a�? dan bA?yA?k dosyalarA� upload etmek artA�k mA?mkA?n.

gost-crypto Hash AlgoritmasA�
gost-crypto hash algoritmasA� eklendi.
http://www.faqs.org/rfcs/rfc4357.html

GMP Operator Overloading
GMP objeleri operator overloadinga��i destekliyor.
http://docs.php.net/manual/en/book.gmp.php