PHP, если еще оператор, который открывает модальный, если с помощью определенного браузера не работает?

0

Я пытаюсь сделать модальное отображение на экране пользователя, если они используют Google Chrome. У меня есть нулевое представление о том, что я делаю. Я знаю, что я правильно определяю браузер, но я не знаю, как открыть модальность. Модаль открывается, если я помещаю оператор if/else в комментарий, но это означает, что он откроется в каждом браузере.

<?php

$browser = get_browser(null, true);
$detectBrowser = strtolower($browser['browser']);

if ($detectBrowser == "chrome") {
header("Location: #BrowserWindow");
}

else { 
}

?>

В организме:

<div id="BrowserWindow" class="modalDialog">
<div>
    <a href="#close" title="Close" class="close">X</a>
    <h2>Modal Box</h2>
    <p>This is a sample modal box that can be created using the powers of CSS3.</p>
    <p>You could do a lot of things here like have a pop-up ad that shows when your website loads, or create a login/register form for users.</p>
</div>
</div>

CSS:

    .modalDialog {
    position: fixed;
    font-family: Arial, Helvetica, sans-serif;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: rgba(0,0,0,0.8);
    z-index: 99999;
    opacity:0;
    -webkit-transition: opacity 400ms ease-in;
    -moz-transition: opacity 400ms ease-in;
    transition: opacity 400ms ease-in;
    pointer-events: none;
}

.modalDialog:target {
    opacity:1;
    pointer-events: auto;
}

.modalDialog > div {
    width: 400px;
    position: relative;
    margin: 10% auto;
    padding: 5px 20px 13px 20px;
    border-radius: 10px;
    background: #fff;
    background: -moz-linear-gradient(#fff, #999);
    background: -webkit-linear-gradient(#fff, #999);
    background: -o-linear-gradient(#fff, #999);
}

.close {
    background: #606061;
    color: #FFFFFF;
    line-height: 25px;
    position: absolute;
    right: -12px;
    text-align: center;
    top: -10px;
    width: 24px;
    text-decoration: none;
    font-weight: bold;
    -webkit-border-radius: 12px;
    -moz-border-radius: 12px;
    border-radius: 12px;
    -moz-box-shadow: 1px 1px 3px #000;
    -webkit-box-shadow: 1px 1px 3px #000;
    box-shadow: 1px 1px 3px #000;
}

.close:hover { background: #00d9ff; }

Модаль, очевидно, просто для теста. Когда я загружаю его в Google Chrome, он говорит: "Эта веб-страница имеет цикл перенаправления".

  • 0
    Кажется, что ваше модальное окно находится на той же странице, что и тестирование имени браузера. Поэтому, даже если вы перенаправляете на «страницу модального окна», вы остаетесь на той же странице -> продолжаете проверять, какой браузер вы используете, а затем снова перенаправляете. Попробуйте перенаправить на другую страницу (которая не проверяет браузер) или используйте echo (для целей тестирования).
Теги:
modal-dialog
popup

3 ответа

0

Взгляните на http://www.php.net/manual/en/function.header.php. Функция заголовка предназначена для отправки заголовков HTTP, таких как 404, или перенаправления на специальную страницу. Вы пытаетесь получить доступ к содержимому страницы с заголовком, что в принципе невозможно.

PHP - это серверный язык и не может вмешиваться в ваш html после отправки.

Вместо этого попробуйте написать в своем html браузере, чтобы открыть ваш модальный код в JS.

echo "var browser = ".$detectBrowser;

а затем написать JS

@+

0

Проблема в том, что вы пытаетесь перенаправить через header() в #BrowserWindow. Поскольку вы не вызываете путь на веб-сервере, вы застреваете в цикле переадресации (поскольку функция header() ищет ресурс на сервере, и вы пытаетесь открыть его на своей странице), Дополнительная информация о заголовке(): http://www.php.net/manual/en/function.header.php

Лучше всего было бы записать его в Javascript и открыть его для обнаружения. Вот учебник, который поможет вам начать работу: http://raventools.com/blog/create-a-modal-dialog-using-css-and-javascript/

0

Заголовок местоположения вызывает перенаправление при каждой загрузке страницы в хроме, даже если якорь уже отображает #BrowserWindow. Это вызывает цикл перенаправления.

К сожалению, часть хэша (#) URL-адреса никогда не отправляется на сервер, поэтому вы не можете проверить это, если хотите.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню