PHP komut dosyası HTTP yönlendirme geçmek için nasıl

3 Cevap php

Basit olması gerektiği gibi bu görünüyor. Herhangi bir işaretçiler çok takdir.

Üç siteler düşünün:

  • widgetserver.com, which serves widgets to client sites
  • clientsite.com, which displays the widget
  • previoussite.com, which is a site that links to clientsite.com

Clientsite.com 'nin sayfasında widgetserver.com bir PHP işlevi çağıran kod bir parça var. Bu şuna benzer:

<script type="text/javascript" src="http://widgetserver.com/show_widget.php></script>

Clientsite.com yüklendiğinde, bu da sayfada Widget yerleştirdiği, "show_widget.php" çalıştırır.

Bu ben şaşırıp nerede: İçimde "show_widget.php" den clientsite.com için kullanıcı sevk sitesine erişmek istiyorum, ama bu işlevin biz widgetserver.com devam ederken, bu yüzden yönlendirme clientsite.com olduğunu değil previoussite.com.

Ben "show_widget.php" için clientsite.com 'nin yönlendirme geçmek herhangi bir yolu var mı?

3 Cevap

document.referrer istediğiniz yönlendirme bilgileri içeren, bu yüzden javascript çalıştırıyorsanız eğer, böyle bir şey yapabilirsiniz:

<script language="javascript" type="text/javascript">
var script = document.createElement("script");
script.src = "http://widgetserver.com/show_widget.php?r="+document.referrer;
document.getElementsByTagName("head")[0].appendChild(script);
</script>

(Bu belge hazır olay ya da bir şey bağlı olan bir işlevi olmadığı sürece) bu DIŞ kafa etiketinin gitmek gerekir, ya da başarısız olur.

Bunun arkasındaki fikir, istediğiniz özelliklere sahip sayfada bir dinamik etiketi üretmektir. Değerlendirilecek neden olur ve gerektiği gibi belgeyi yükler document.head DOM öğesi, içine ilk satır, onu yaratan ikinci satır komut src ayarlar ve üçüncü sayfa yüklendiğinde bu.

Müşterileriniz jQuery kullanıyorsanız, bu $ kullanmak daha kolaydır. GetScript, document.referrer benzer bir kullanımı ile

Sen show_widget.php komut bu bilgileri "tahmin" olamaz: ClientSite Betiğinize bu bilgileri iletmek zorundadır.

Kendi widget bu gibi bazı kod ile dahil edilmelidir anlamına gelir (provided the page on clientsite is generated in PHP):

<script 
    type="text/javascript" 
    src="http://widgetserver.com/show_widget.php?referer=<?php echo urlencode($_SERVER['HTTP_REFERER']); ?>>
</script>

Tabii ki:

  • Sayfanın içine enjekte ederken, güvenlik için referer kaçmak için (ve geçerli HTML almak için) unutmayın
  • referer her zaman mevcut olmayabilir: o kullanıcının tarayıcısı tarafından gönderilen ve hem sahte ve / veya devre dışı bırakılabilir.

A ": Undefined index: Uyarı HTTP_REFERER" önlemek için üretilen gelen / kullanıcının tarayıcısı tarafından gönderilen hiçbir referer olduğunda, sen de onu kullanmadan önce tanımlanmış olup olmadığını öğrenmek için, bir kontrol eklemek isteyebilirsiniz görüntülenen - {kullanabilirsiniz [ (0)]} Bunun için; Örneğin, böyle bir şey yapacağım:

<script 
    type="text/javascript" 
    src="http://widgetserver.com/show_widget.php?referer=<?php echo isset($_SERVER['HTTP_REFERER']) ? urlencode($_SERVER['HTTP_REFERER']) : ''; ?>>
</script>

Sen clientside.com ana senaryo üzerinde sevk algılar ve komut için bir değişken olarak geçebileceği:

// clientsite.com script
<?PHP

    echo $main_page;
    $ref = $_SERVER['HTTP_REFERER'];
    echo '<script type="text/javascript" ' .
      'src="http://widgetserver.com/show_widget.php?r=' . $ref . '></script>';

?>

// widgetserver.com script
<?PHP
    $original_referrer = $_REQUEST['r'];
?>