2014-02-14 9 views
0

У меня проблема с моим кодом php. Я хочу обнаружить, если мобильный пользователь, а затем перенаправить на choose.php, пользователь выберет вариант, если он хочет использовать мобильный веб-сайт или классический. Если он выберет классическую переадресацию в файл cookie.php, он должен создать файл cookie «web» со значением «ano». И индекс не должен снова запрашивать Mobile/classic. Но это всегда делать .. Вы можете попробовать на www.luxweb.skPHP не создает cookies

Индекс:

<?php 
if(preg_match("/Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i",$_SERVER['HTTP_USER_AGENT'])) { 
    if(!isset($_COOKIE['web'])){ 
     die(header("Location: wp-content/themes/lux/choose.php")); 
    } 
    elseif($_COOKIE['web'] != "ano"){ 
     die(header("Location: wp-content/themes/lux/choose.php")); 
    } 
    else { 
     //nothing 
    } 
} 
?> 

Выбрать:

<!doctype html> 
<html lang="sk"> 
    <head> 
     <meta charset="UTF-8"/> 
     <title>Vyberte si zobrazenie</title> 
    </head> 
    <body> 
     <a href="http://m.luxweb.sk">Mobilná verzia</a> 
     <a href="cookie.php">Desktopovná verzia (responsívna)</a> 
    </body> 
</html> 

Cookie:

<?php 
    if(setcookie('web', 'ano', time()+1000)){ 
     header("Location: http://luxweb.sk"); 
    } 
?> 

ответ

1

Вам нужно установить «путь» часть вашего печенья ... просто побежал через испытания и набор печенья данные:

Name  'web' 
Value  'ano' 
Host  'luxweb.sk' 
Path  '/wp-content/themes/lux/' 
Expires 'At end of session' 
Secure  'No' 
HttpOnly 'No' 

(игнорировать Истекает бит - мой браузер настроен на удаление всех файлов cookie при отключении, поэтому каждые cookie истекает в конце сеанса)

Поскольку вы не указываете путь в то время, когда вы его устанавливаете, путь к каталог, содержащий сценарий, вызывающий setcookie() используется по умолчанию - так: /WP-содержание/темы/лк/

Если вы хотите, чтобы печенье доступны из корня домена, вы должны будете использовать:

setcookie('web', 'ano', time()+1000, '/') 

... или лучше, может быть:

setcookie('web', 'ano', time()+1000, '/', '.luxweb.sk') 

Это будет тогда доступна из корня любой подобласти luxweb.sk.

0

Вам нужно добавить <?php session_start(); ?> к вверху вашего скрипта

PHP: session_start - Manual

+0

Почему? Я не вижу здесь сеанса? – CD001

+0

Моя ошибка ... Я думал, что он задает переменные сессии (что, возможно, было бы более аккуратным способом сделать это). –

+0

Не работает .. Другое решение? Возможно ли, что мой хостинг заблокировал файлы cookie? –

0

Вам нужно добавить строку $path paremeter

Путь на сервере, в котором куки будут доступны на. Если установлено значение '/', файл cookie будет доступен во всем домене. Если установлено значение '/ foo /', cookie будет доступен только в каталоге/foo/и всех подкаталогах, таких как/foo/bar/домена. Значение по умолчанию является текущим каталогом, печенье создается в

setcookie (string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]]) 

смотрите примеры на http://www.php.net/manual/en/function.setcookie.php

что-то вроде:.

setcookie('web', 'ano', time()+1000, '/'); 

Если вы хотите печенье будет доступно для каждого страницы вашего веб-сайта