#php #cookies
#php #файлы cookie
Вопрос:
Мне нужен сайт бета-тестирования, от которого пользователи также могут отказаться,
domain.com
Там будет ссылка, позволяющая пользователям переходить beta.domain.com
Я хочу, чтобы при каждом посещении они автоматически перенаправлялись на beta.domain.com
но там они также могут отменить установку cookie на просто goto domain.com
Я пробовал кое-что, но просто попал в рекурсивный цикл: P
Есть идеи?
Комментарии:
1. Что вы пробовали? Используете ли вы libray? Вы должны предоставить нам дополнительную информацию, если хотите, чтобы мы предоставили нечто большее, чем просто логику, стоящую за этим.
2. Файл cookie, установленный в mutant-tractor.com недоступен по beta.mutant-tractor.com Я думаю, что это проблема. Если вы сможете установить cookie, который будет доступен на обоих сайтах, проблема будет решена
3. @mahadeb Значит, XSS также не разрешен для файлов cookie? Нужен ли мне бета-сайт в подкаталоге, а затем использовать
mod_rewrite
, чтобы он выглядел какbeta.mutant-tractor.com
?4. Да, вы можете сделать вот так. Помните — когда вы установите cookie, не используйте beta.mutant-tractor.com. Используйте только доменное имя, например, как — .mutant-tractor.com для обеих частей.
Ответ №1:
При входе beta.domain.com
создайте cookie на уровне домена:
setcookie("BetaUser", 1, time () (60*60*24*30), '/', '.domain.com');
Теперь, когда пользователь заходит на вашу страницу и вы находитесь на domain.com
(см. $_SERVER) перенаправлении на beta.domain.com
.
Когда пользователь хочет отказаться от вашего бета-тестирования, предоставьте ссылку на страницу отказа, которая отменяет установку cookie и перенаправляет обратно на domain.com
.
Ответ №2:
Ссылка:
<a href="/?switch-to-beta.php">switch to beta</a>
switch-to-beta.php код:
setcookie('use_beta', '1', time() 3600*24*365*10, '/', 'domain.com');
header('Location: http://beta.domain.com/');
exit;
При запуске индексного файла на domain.com
if(isset($_COOKIE['use_beta']) amp;amp; $_COOKIE['use_beta']){
header('Location: http://beta.domain.com/');
exit;
}
ссылка для остановки перенаправления на beta.domain.com
<a href="http://domain.com/switch-to-stable.php">switch to beta</a>
switch-to-stable.php код:
setcookie('use_beta', '0', time()-10000, '/', 'domain.com');
header('Location: http://domain.com/');
exit;
Комментарии:
1. нет проблем с XSS в отношении поддоменов и основных доменов? Т. е. мне не нужно использовать
.domain.com
?2. cookie установлен для
domain.com
. не имеет значения,beta.domain.com
естьgooge.com
ли это, потому что реальное действие (перенаправление) выполняется наdomain.com
3. Извините — я дал вам неправильный код.
switch-to-stable.php
должен быть включенdomain.com
, чтобы иметь возможность установить cookie, даже если поддомен beta находится не в том же домене. Также, если вы используете cookie на domain.com он виден для всех поддоменов.