PHP Kafa Yönlendirme sorunu (hayır, bu yaygın bir sorun değil)

2 Cevap php

Öncelikle, bu zaten 'sorunu gönderilen başlıklar değil.

Ben yönlendirme yapar, bir de dosya var. Bu benim pencereleri çalışır üretim sunucusuna, dışında onu denedim her sunucuda çalışır.

Ben üretim sunucusunda çalıştırdığınızda, sadece dosyayı değil, tüm sayfa bulunmaktadır yönlendirir.

Ben index.php, ana dosya var:

<?php include('red.php'); ?>
<html ....
>
And I do the redirect to another page in red.php. Then the redirected page will show up at the top of the index.php page, with the rest of the index.php html file after this page. Have the mess up some setting in php.ini? After some more investigation, the problem is when I use a full URL rather than a relative URL. The first will only redirect the included file. (the problem I discovered above) while the second works correctly red2.php:

   header("Location: http://example.com/newfile.php");
    header("Location: newfile.php");'

2 Cevap

Ben üretim sunucusunda çalıştırdığınızda, sadece dosyayı değil, tüm sayfa bulunmaktadır yönlendirir.

İşte bu gerçekten mümkün değil çünkü söylemek komik bir şey. Verilerin sadece tek bir baloncuk "yönlendirme" bunun bir parçası ama bir kompozit damla üretmek için birden fazla dosya içerebilir değil tarayıcıya sunulmaktadır.

Belki de, bu ne yaptığınızı olduğunu. Belki bir içerme yerine bir yönlendirme yapıyoruz. Unutmayın bir yönlendirme bu gibi yapılır:

header('Location: file.php');
exit;

Sonundaki çıkış böylece gereksiz yere yürütme devam etmez önerilir.

John,

Ben sunucu üzerinde ne vs istemci üzerinde ne karıştı düşünüyorum.

Aradığınızda include(), sunucu dahil olmak üzere konum dosya için yerel dosya sistemi üzerinde arayacak ve sadece bunun üzerinden çalışacak ve satır satır çalıştırmak.

Şimdi php Header() işlevini çağırdığınızda, bu tarayıcı alacak başlık verileri değiştirir. Yönlendirme nedenle browser level yapılan, ve sunucu düzeyinde olmayacaktır.

Yani aşağıdaki kodu olması gerçekten mantıklı değil anlamına gelir:

<?php
# Doesn't matter if you call it through include() or directly
Header("Location: http://example.com/newfile.php");
?>
<html><p>Hello world</p></html>

Eğer tarayıcı söylüyorsun gibi: Sen newfile.php yönlendirmek gerekir, ama sen görüntülemek için buraya bazı HTML içeriğini zaten bulunuyor.

Eğer sunucu tarafında newfile.php eklemek istiyorsanız, Server Side, CURL içerir ya da sadece ("uzak_dosya") eklemek ya da kullanmak gerekir; (Uzak_dosya başka bir sunucu üzerinde oturuyor eğer çalışmak için ikincisi için php.ini güvenlik ayarlarınızı değiştirmek gerekir, yani allow_url_fopen)

Umarım yardımcı olur