Şimdi Ara

ajax ile bütün bir web sitesini çağırma (iframe gibi)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
11
Cevap
0
Favori
3.449
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba

    2gündür araştırıyorum fakat düzgün bir sonuç bulamadım yada ben gerekli işlemleri yapamadım, ihtiyacım olan şey iframe gibi istenilen web sayfasını bir bütün olarak hazırladığım sitenin içine dahil etmek, file_get_contents, curl gibi kodları denedim fakat çağardığım sayfalar bozuk bir şekilde geliyor resimler menüler gözükmüyor linklere tıklayınca sayfayı çekmiş olduğum siteye yönleniyor, ajax ile bu işlemin yapılabildiğini okudum ama yeterli bilgi bulamadım, bu konuda yardımcı olabilirmisiniz bana.



  • Çektiğin sayfadaki linkleri nasıl değiştirmeyi düşünüyorsun ? neticede o linklerin karşılığı senin sitende yok. onlarıda ajaxla çağırmak istiyorsan, hepsini tek tek işleyip normal url linklerini alıp ajax requesterine reroute edip yani kendi ajax requesterinden geçirmen gerekli...

    bu konuda bir kaynak bulamassın çünkü böyle bir şey yapmanın mantıklı bir yanı yok. tabi diğer siteyi kendi siten gibi göstermek istemiyorsan ki bu bir bilişim suçu
  • site kendi sitem zaten tavsiyen için teşekkürler yinede, asıl sitemde yapılan tüm değişiklikleri aynı anda dışardan çağırdığım sitemdede değişiklik yapmam gerekirmi, yani her defasında bunlar içinde link eklememmi gerekiyor?
  • quote:

    Orijinalden alıntı: x53x
    linklere tıklayınca sayfayı çekmiş olduğum siteye yönleniyor, ajax ile bu işlemin yapılabildiğini okudum ama yeterli bilgi bulamadım, bu konuda yardımcı olabilirmisiniz bana.

    Hayır, ajax ile tek başına böyle bir işlem yapılamaz, ama PHP ile yapılır.

    1. Bir sitenin kaynak kodunda gördüğünüz HTML şablonunu file_get_contents gibi fonksiyonlarla çekebilirsiniz.
    2. Sitedeki tüm linkleri ayrıştırırsınız ve replace edersiniz. (www.aaa.com olan herşeyi wwww.bbb.com [kendi siteniz] haline döndürürsünüz)
    3. Kullanıcı hangi linke tıkladıysa, bunu GET ile alır, aynı işlemi o sayfaya uygularsınız.
    Atıyorum, kullanıcıwww.siteniz.com/ahmet.php'ye girerse, sizde file_get_contents ile karşı siteden ahmet.phpyi çağırırsınız.

    Sizin ajaxla yapmanız gereken, bu işlemlerin arkaplanda sayfa yenilenmeden yapılmasını sağlamaktır.

    Ancak, bazı yerlerde extra kodlama (regex vb.) gerekir. Mesela, karşıdaki sitenin include ettiği CSS ve JS dosyalarındaki adresler değiştirilmemeli. Bunun içinde <head></head> kısmını atlayacak kodlar yazılmalı.

    Son olarak resimlerin görünmeme sebebi şudur.
    Karşıdaki sitenin CSS dosyalarında, resim dosyaları "./blabla.jpg" gibi gösterilmiştir. Siz bu CSS dosyasını çektiğiniz zaman, CSS sizin domaininiz üzerinde blabla.jpg'yi arar. (ama bulamaz) Bu yüzden CSS dosyalarındaki ./ ve ../ şeklindeki linkleride otomatik olarakwww.karsisite.com/public/resimler/ (path neyse) şeklinde düzeltmeniz gerekir.

    En basit haliyle bu şekilde yapılır. Bu işlem için CURL kullanmanıza gerek yok, ama bayağı bir resource yersiniz bu yüzden çektiğiniz sayfayı cachelemek çok önemli.



    < Bu mesaj bu kişi tarafından değiştirildi Aristona_ -- 6 Aralık 2011; 22:19:20 >




  • Ayrıntılı cevabın için çok teşekkürler, kod bilgim çok zayıf bu yüzden aynı kodu bi kod örneği vermen mümkünmü bunu kendi sitelerime göre uyarlayıp deneyebileceğim?
  • quote:

    Orijinalden alıntı: x53x

    Ayrıntılı cevabın için çok teşekkürler, kod bilgim çok zayıf bu yüzden aynı kodu bi kod örneği vermen mümkünmü bunu kendi sitelerime göre uyarlayıp deneyebileceğim?

    Peki...
    Yapmanız gereken işlemi adım adım anlatıyorum.
     

    <?php
    $content = file_get_contents('http://www.anilunal.com');
    ?>



    http://www.anilunal.com'un HTML çıktısını aldık.

    Olası bir timeout hatasına karşı time_limiti 999 yaptık. (bağlantımız yavaş olabilir yada site geç açılıyor olabilir :))

     

    <?php
    set_time_limit(999);
    $content = file_get_contents('http://www.anilunal.com');
    ?>



    <head> / </head> tagları arasındaki kısmı ayırdık. CSS'yi karşı siteden çekeceğiz, o linkler değişmesin.

     

    <?php
    set_time_limit(999);
    $content = file_get_contents('http://www.anilunal.com');

    $head = explode('<head>', $content);
    $head = explode('</head>', $head[1]);

    ?>



    Sonra bu kısmı content'ten sildik ve oluşan çıktıyı $body değişkenine aktardık.

     

    <?php
    set_time_limit(999);
    $content = file_get_contents('http://www.anilunal.com');

    $head = explode('<head>', $content);
    $head = explode('</head>', $head[1]);

    $body = str_replace($head, "", $content);

    ?>



    Body kısmındaki tüm linkleri kendi sitemizin linkine çevirdik. (Bazı linklerwww.anilunal.com olabilir, bazıları anilunal.com olabilir bu yüzden önce www'ları attık.)
    Not: Sadecehttp://'den sonra gelen www'ları attık, karşı sitede ?page=www gibi bir sayfa olma olasılığı vardı.

     

    <?php
    set_time_limit(999);
    $content = file_get_contents('http://www.anilunal.com');

    $head = explode('<head>', $content);
    $head = explode('</head>', $head[1]);

    $body = str_replace($head, "", $content);
    $body = str_replace("http://www", "http://", $body);
    $body = str_replace("anilunal.com/", "kendisitem.com/", $body);

    ?>



    Bütün linkler şuan kendi sitemize yönleniyor. anilunal.com sayfa değişkeni olarak ne kullanıyor? Hemen bakalım.
    Bulduk.
    Linkler "?page=hakkimizda" gibi, yani $_GET['page'] kullanacağız.
    Artık değişkeni bildiğimize göre, kullanıcının nereye tıkladığını GET ile alalım...

     

    <?php
    set_time_limit(999);

    if(isset($_GET['page'))
    $content = file_get_contents('http://www.anilunal.com/?page=' . $_GET['page']);
    else
    $content = file_get_contents('http://www.anilunal.com/');

    $head = explode('<head>', $content);
    $head = explode('</head>', $head[1]);

    $body = str_replace($head, "", $content);
    $body = str_replace("http://www", "http://", $body);
    $body = str_replace("anilunal.com", "kendisitem.com", $body);

    ?>



    (Çok uzun okumadım versiyonu)
    Bu script;
    -> Eğer kullanıcı sitenize yeni girmişsewww.anilunal.com'u kendi siteniz gibi gösterir.
    -> Tüm linkler otomatik olarak kendisiteniz.com adresine döner.
    -> Kullanıcı hangi linke tıkladıysa, bunu $_GET ile alırsınız ve bu kez anilunal.com yerine, "www.anilunal.com/?page=hakkimizda" gibi bir sayfayı çağırırsınız.
    -> Aynı işlemler o sayfa için uygulanır.

    Kodların hepsini direkt browsere yazdığım için hatalar olabilir.
    Ayrıca eksiği var. Resimlerin linklerini değiştirmememiz gerekiyor mesela.

    Kısacası mantık olarak sistem buna benziyor...

    Dipnot: Ben kullanmadım ama siz regex kullanın.



    < Bu mesaj bu kişi tarafından değiştirildi Aristona_ -- 7 Aralık 2011; 7:44:44 >




  • anlatımın çok güzel eline sağlık, fakat ben bu şekilde scripti çalıştırmayı başaramadım, localdede denedim yine sonuç alamadım.
  • quote:

    Orijinalden alıntı: x53x

    anlatımın çok güzel eline sağlık, fakat ben bu şekilde scripti çalıştırmayı başaramadım, localdede denedim yine sonuç alamadım.

    Dediğim gibi eksikleri var, ben size sadece mantığını anlattım, çalışan scripti vermedim. Scripti biraz değiştirirseniz çalışır.
  • pek bilgim yok o yüzden kendim çalışabilir duruma sokamadım, bu konuda yardımcı olursan çok makbule geçer
  • Hocam sizin dediğiniz durum biraz farklı.
    Farklı domain yerine subdomain falan verseniz kullanıcılarınıza?

    İlla öyle olmasını istiyorsanız, websitesini olduğu gibi göstermekten ziyade, uzak veritabanı bağlantısı yaparak verileri alabilirsiniz. Bunun için bir API oluşturursunuz. Herkes istediği domain üzerinden sisteminize bağlanıp verileri çeker.

     

    $benimdukkanim = new API(); //API'yi siz oluşturacaksınız
    $benimdukkanim->satistakileriGoster();



    Misal, bu PHP kodunu istediğiniz bir kişiye vereceksiniz. O kişi "satistakileriGoster" dediğinde otomatik olarak sizin veritabanınızdan, kendi dükkanının satışında ne varsa onları çekecek.
    Bunlar çok üst düzey konular olduğu için sitenizi kodlayan kişiyle görüşün bence.

    Not: Örneği sitenizdeki "Facebook ile bağlan" bölümü bir API. Sizde buna benzer bir sistem hazırlayacaksınız. Diğer yöntemler (iframe, uzak veritabanı bağlantısı, en yukarıda yazdığım yöntem) sağlıklı yöntemler değil.




  • peki aydınlatıcı bilgilerin için teşekkürler
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.