2011-12-22 2 views
-2

Это может быть сложный вопрос, но то, что мне нужно сделать, действительно похоже на страницы выбора страны, которые вы видели, когда вы попали на сайт производителя - тех, кто спрашивал вас, откуда вы и то после выбора вы были отправлены на соответствующий сайт, скажем, версию США или испанскую версию. Я видел, что это сделано с всплывающими окнами или тенями, которые предпочтительнее. Так что ...Cookie to Remember and Redirect

  1. Когда вы идете к нашей домашней странице всплывающего окна (или еще лучше, тень ящик) приходит через две секунды
  2. пользователя предлагается графической и/или текстовой ссылкой на перейти на сайт а или сайт Б
  3. пользователь выбирает правильный сайт для них, и отправляется к нему
  4. Cookie (ы) остались с пользователем, так A. Они никогда не видят окно выбора снова до тех пор, как cookie есть. B. Они всегда перенаправляются на правильный выбор, когда попадают на страницу.

В моих исследованиях, похоже, вы можете сделать одно, но не оба. Как вы думаете?

+2

Я думаю, у вас есть список требований, какой совет вы хотите? Не уверен, что вы спрашиваете. – Robert

+2

«вы можете сделать одно, но не оба» - не уверен, что такое «оба». То, что вы описали, абсолютно возможно, и довольно простое использование файлов cookie. – maxedison

+1

'похоже, что вы можете сделать один, но не оба (один или оба), из которых два варианта? – DaveRandom

ответ

0

Примерно то, что вам нужно для того, чтобы выполнить каждый шаг

function redirectPopup(){ 
/*Do your popup stuff*/ 
} 

document.onload = function(){ 

    /*set timer to call your popup renderer*/ 
    setTimeout(redirectPopup,2000) 
} 

С выше у вас есть несколько вариантов для всплывающего окна, я рекомендовал бы один из следующих

-У всплывающее окно, включенное в текст ответа с сайта, с его видимостью, скрытой. Затем измените свойства redirectPopup на свойства стиля, чтобы показать всплывающее окно - отключите все остальное. -Удача функции redirectPopup генерирует всплывающее окно.

Что касается файла cookie, вы можете использовать функцию setcookie http://php.net/manual/en/function.setcookie.php, которая может использоваться для автоматической перенаправления пользователя при посещении сайта. Например:

/*Server request with $_GET redirectTo property*/ 
if(isset($_GET['redirectTo'])) 
    setcookie('redirectTo', $_GET['redirectTo'], time() + 86400 * 14); 

/*Check if the redirectTo cookie exists, redirect if true*/ 
if(isset($_COOKIE['redirectTo'])) 
    header("location:". $_COOKIE['redirectTo']); 

/*Do your initial, no redirect stuff here*/ 
.... 

В приведенном выше примере, когда пользователь посещает сайт сервер сначала проверяет, если они выбрали вариант переадресации; предполагалось, что когда пользователь выбирает параметр переадресации, то URL-адрес назначения совпадает с сайтом с включением параметра GET 'redirectTo'. Если для этого параметра найдено значение, предполагается, что пользователь должен был посетить сайт, чтобы просмотреть параметры переадресации, и их cookie переадресации установлен.

Второй раздел проверяет, установлен ли файл cookie и перенаправляет пользователя, если он есть. В этом примере я просто передал значение cookie функции заголовка, на практике было бы более практично обращаться с этим чуть более сложным образом.

Метод setcookie не требует конечного периода времени, и поэтому вы не можете установить вечный файл cookie, однако вы можете установить его с нелепым периодом хранения. Наконец, куки-файлы доступны только пользователю с компьютера и браузера, которые они используют в то время, перенаправление неизбирательного времени и местоположения не может быть достигнуто без какой-либо регистрации пользователя.

Kevin B дает хорошее представление о том, что пользователи не всегда имеют файлы cookie. Имея это в виду, первая часть раздела PHP-кода может быть отредактирована следующим образом для обработки таких случаев.

/*Server request with $_GET redirectTo property*/ 
if(isset($_GET['redirectTo'])) 

    /*Where setting a cookie fails*/ 
    if(! setcookie('redirectTo', $_GET['redirectTo'], time() + 86400 * 14)) 
     header("location:" $_GET['redirectTo']); 

Как и в предыдущем редирект могли бы извлечь выгоду из того, чтобы быть немного сложнее, но с помощью этого метода заставит редирект, когда печенье не доступны.

+0

Огромное спасибо. Это отличное лидерство, и я буду использовать его, чтобы указать мне в правильном направлении - очень ценю это Оливер. – Brian

+0

Также сожалею о том, что я не разъяснял свое сообщение - это мой первый здесь и был новичком. Будет более конкретным в следующий раз. Кевин Я с тобой, это не хорошо для юзабилити или SEO. Я бы предпочел разместить его на сайте, но, к сожалению, у клиента будет такой способ, несмотря на мой протест ... Еще раз спасибо. – Brian