9 Eylül, 2008
Kategori:
yazılım |
2 Yorum »
|
Amacımız başka bir siteden veri çekip kendi sitemizde göstermek.
Uzak dosya veya adrese erişmeyi file fonksiyonu ile yapıyoruz. Dosyayı file("http://www.emrahustun.com") şeklinde açıyoruz. Bu fonksiyon bize her satırı bir eleman olarak atanmış bir dizi döndürür. Biz de bu diziyi eleman eleman yazdırarak siteyi aynen kopyalamış oluruz.
Bir siteyi veya dosyayı olduğu gibi kendi sitenizin içinde göstermek için şu kodlar yeterlidir;
<?
$dosya = file("http://www.emrahustun.com");
foreach ($dosya as $satir)
{
echo $satir;
}
?>
Ya da mesela sitenin ilk 10 satırını bastıralım;
$dosya = file("http://www.emrahustun.com");
for($i=0;$i<=10;$i++)
{
echo $dosya[$i];
}
Bir de arama yapalım. Mesela sadece bir makaleyi çekeceğiz. Makale div ile çevrelenmiş olsun, <div class="makale3">. . . MAKALE İÇERİĞİ . . . </div> gibi bir içerikte sadece makalenin içini çekmeye çalışalım.
$dosya = file("http://www.emrahustun.com");
$satirbasla=0;
$satirbitir=0;
$i=0;
foreach($dosya as $satir)
{
if(eregi('<div class="makale3">',$satir) && $satirbasla==0)
{
$satirbasla=$i;
}
if(eregi('</div>',$satir) && $satirbasla!=0 && $satirbitir==0)
{
$satirbitir=$i;
}
$i++;
}
for($i=$satirbasla;$i<=$satirbitir;$i++)
{
echo $dosya[$i];
}
Anlatalım;
Amacım yazdırmadan önce aradığım yerlerin kaçıncı satırda olduklarını bulmak.<div class="makale3"> başlangıç satırı, ondan sonra gelen ilk </div> de bitiş satırı. (Arada başka div yok kabul ediyorum ve html kodları satır satır girilmiş kabul ediyorum.)
foreach ile satır satır tararken satırın birinin içinde eğer <div class="makale3"> geçiyorsa o satır numarasını (foreach’in o an baktığı satırın numarasını i tutuyor, her dönüşte artırıyorum) satirbasla’ya atıyorum. Bu olduğunda artık div kapanışını aramam lazım. Bu sebeple ikinci if’te satirbasla’nin bulunmuş olması (yani sıfır olmaması) şartı var. Ve kapanışı bulduktan sonra tekrar bir kapanış bulursa üzerine yazmasın diye de ikinci if’te ayrıca bir satirbasla==0 koşulu var, yani bu şekilde makale3 başladıktan sonraki ilk div kapanışını buluyorum.
Sonuç olarak foreach’ten çıktığımızda elimizde satirbasla ve satirbitir değerleri var. Ve dosya dizisinin o satır aralığını yazdırıyorum.
Böylece başka sitelerden hırsızlık mı yapmış oluyorum sanırım eyvah. 

Oldu.
|
5 Ekim, 2008 saat 09:11
yukarıdaki sistem fazla kasar fread(fopen)); veya file_get_contents() daha mantıklı.
ayrıca readfile() fonksiyonuda sitenin istediginiz bir sayfasını direk ekrana çeker.
iyi günler
25 Aralık, 2008 saat 14:42
<?
if ($handle = opendir(’../’)) {
while (false !== ($file = readdir($handle))) {
if ($file != “.” && $file != “..” && $file != “index.php” && $file != “data.php” && $file != “referer.php” && $file != “data.txt” && $file != “datamain.php” && $file != “search” && $file != “sitemap”) {
$babacan = readfile(”../$file/index.php”, “r”);
echo “$babacan”;
echo “”;
}
}
closedir($handle);
}
?>