HTML & PHP - включенная страница испорчена из-за тега <a>в коде (IE9) - PullRequest
1 голос
/ 27 марта 2012

я знаю, это действительно глупый вопрос XD

Итак, у меня есть простой index.php:

<html>
...
<div id="div_page">

<?php
    if( !empty($_GET["page"]) ) {
        if( $_GET["page"] == "1" ) {
            include("./page/1.php");
        } else { if( $_GET["page"] == "2" ) {
            include("./page/2.php");
        } else { if( $_GET["page"] == "3" ) {
            if( !empty($_GET["site"]) ) {
                if( $_GET["site"] == "1" ) {
                    include("./page/3.1.php");
                } else { if( $_GET["site"] == "2" ) {
                    include("./page/3.2.php");
                }}
            } else {
                include("./page/3.0.php");    // problem
            }
        } else { if( $_GET["page"] == "4" ) {
            include("./page/4.php");
        } else { if( $_GET["page"] == "5" ) {
            include("./page/5.php");
        } else { if( $_GET["page"] == "6" ) {
            include("./page/6.php");
        }}}}}}
        include("footer.php");
    } else {
        header("Location: ./index.php?page=1");
    }
?>

</div>
...
<html>

и простой CSS:

#div_page {
    position:absolute;
    top:195px; right:0px; left:250px;
    min-width:500px; min-height:500px;
    padding:25px;
}

все работает нормально, пока я не добавлю тег ссылки [a] внутри любой страницы (1.php, 3.0.php ... a.s.o.)

когда я делаю это, страница отображается полностью запутанной в IE9: /

скриншот -> http://imageshack.us/photo/my-images/20/unbenanntqii.png/

почему это происходит? какие-либо известные проблемы / решения?

THX 4 любая помощь.

G.R.

EDIT:

код 3.0.php выглядит так:

<h1>Page 3</h1>
<p>Für Arbeitnehmer: <a href="./index.php?page=3&site=1">Site 1</a></p>
<p>Für Arbeitgeber: <a href="./index.php?page=3&site=1">Site 2</a></p>
<script type="text/javascript">
    var page = 3;
</script>

Ответы [ 2 ]

0 голосов
/ 27 марта 2012

Извините, если это не поможет вашей первоначальной проблеме, но вы могли бы немного улучшить свою логику и читабельность кода.Вот как выглядит больше строк, чем в оригинальном посте.Посмотрите на комментарии.

<?php
if( !empty($_GET["page"]) ) {
    if( $_GET["page"] == "1" ) {
        include("./page/1.php");
    } 
        else { 
            if( $_GET["page"] == "2" ) {
                include("./page/2.php");
            }
        else { 
            //opening if, closing much later
            if( $_GET["page"] == "3" ) {

            //opening if, closing much later
            if( !empty($_GET["site"]) ) {

            if( $_GET["site"] == "1" ) {
                include("./page/3.1.php");
            } 

                else { 
                    if( $_GET["site"] == "2" ) {
                        include("./page/3.2.php");
                    }
                }
        } 
            else {
                include("./page/3.0.php");    // problem
            }
        } 

        //why not use elseif or plain if?
        else { 
            if( $_GET["page"] == "4" ) {
                include("./page/4.php");
            } 
        //why not use elseif or plain if?
        else { 
            if( $_GET["page"] == "5" ) {
                include("./page/5.php");
            } 
        else { 
            if( $_GET["page"] == "6" ) {
                include("./page/6.php");
            }
        }

    }}}}//two ending ifs and two elses?

    include("footer.php");
} 
    else {
        header("Location: ./index.php?page=1");
    }
?>

Для меня это почти невозможно понять.Если вы не хотите использовать оператор switch, вы все равно можете упростить приведенный ниже код, используя простые операторы if или elseif s.Я не вижу какой-либо конкретной причины для двух открывающих if s и else s, которые заканчиваются в конце скрипта: у вас есть только две используемые GET переменные.

Вы также можетесовместить условия.Зачем использовать следующее?

if( !empty($_GET["page"]) ) {
    if( $_GET["page"] == "1" ) {

Когда вы можете использовать:

if( !empty($_GET["page"]) && $_GET["page"] == "1") {

Одно отверстие if лучше, чем одно ...

РЕДАКТИРОВАТЬ: Посколькуотрицательный голос, я просто сделаю вещи лучше или хуже.Может помочь читабельность или нет.Я думаю, у всех нас есть свои способы чтения и написания кода ...

Это то, что пришло мне в голову час назад.Зачем проверять каждое возможное число, если код ниже работает?(Не проверял, поэтому не знаю.)

$getPage = $_GET['page'];
$getSite = $_GET['site'];

if (isset($getPage) && isset($getSite)){
  include("./page/$getPage.$getSite.php");
}
    elseif (isset($getPage) && !isset($getSite)){
      include("./page/$getPage.php");
    }
      else {
        header("Location: ./index.php?page=1");
      }
0 голосов
/ 27 марта 2012

Мне кажется, что вы неправильно закрываете свой тег <a>, и IE9, который является более строгим в этих вопросах, имеет проблемы с отображением страницы, в то время как FF и chrome закрывают тег для вас

...