отслеживание checkbox на сайте через кукисы и php

dspu
На сайте с 10.05.2006
Offline
268
1005

т.е. делается chесkbox - если его отметить, то записывается кукис и ставится галка, а в другом месте страницы по наличию этого кукиса выполняется действие, если галку снять, то и кукис удаляется

алгоритм вроде простой, но в практическом php не силен, может кто подскажет?

tommy-gung
На сайте с 22.11.2006
Offline
287
#1

такое на javascript можно написать, но я не силен (вернее, просто не знаю функций) в записи/чтении кукисов в javascript :)

если уж никто не захочет помочь, стучите завтра - наяндексим решение ))

Здесь не могла быть ваша реклама
dspu
На сайте с 10.05.2006
Offline
268
#2

решил я проблемку, не знаю уж как оригинально или нет, но работает

<input type="checkbox" <?php

if ($_COOKIE['kykismykis']) print 'checked=checked';
else {}; ?>
name="kykismykis" onchange="javascript: document.location.assign('checked.php')">

и сам файл checked.php

<?php

if ($kykismykis) {
setcookie("kykismykis","",time()+3600*24*365, "/", ".site.ru");
}
else {
setcookie("kykismykis","checked",time()+3600*24*365, "/", ".site.ru");
}
header("Location: $HTTP_REFERER");
?>
B4
На сайте с 25.04.2007
Offline
34
#3
dspu:
решил я проблемку, не знаю уж как оригинально или нет, но работает
<input type="checkbox" <?php

if ($_COOKIE['kykismykis']) print 'checked=checked';
else {}; ?>
name="kykismykis" onchange="javascript: document.location.assign('checked.php')">

и сам файл checked.php
<?php

if ($kykismykis) {
setcookie("kykismykis","",time()+3600*24*365, "/", ".site.ru");
}
else {
setcookie("kykismykis","checked",time()+3600*24*365, "/", ".site.ru");
}
header("Location: $HTTP_REFERER");
?>

надо быть проще) можно сделать 100% все на яваскрипте и не надо перезагружать сайт... И сервер в порядке и пользователю приятное...

пишите системку я вам код вышлю как куку записать яваскриптом... )

Собираю смешные фразы
dspu
На сайте с 10.05.2006
Offline
268
#4
bobahbi4:
пишите системку

не понимаю что вы от меня хотите 😒

kil
На сайте с 03.04.2006
Offline
84
kil
#5

На javascript написать можно сделать то же самое. На мой взгляд это логичнее, чем на пхп. По крайней мере не придется страницу перезагружать :)

Итак, функции для работы с куками:

 

<script>
function setCookie (name, value, expires, path, domain, secure)
{
document.cookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}

function getCookie(name)
{
var cookie = " " + document.cookie;
var search = " " + name + "=";
var setStr = null;
var offset = 0;
var end = 0;
if (cookie.length > 0)
{
offset = cookie.indexOf(search);
if (offset != -1)
{
offset += search.length;
end = cookie.indexOf(";", offset)
if (end == -1)
{
end = cookie.length;
}
setStr = unescape(cookie.substring(offset, end));
}
}
return(setStr);
}

<!-- Пример записи: -->
setCookie("my_value", "1", "Mon, 01-Jan-2010 00:00:00 GMT", "/");

<!-- Пример чтения: -->
document.write(getCookie("my_value"));
</script>

Ну и пример работы с чекбоксом (вместо алертов можно поставить какое-нить действие):


<script>
function check_box(el)
{
if(el.checked == true)
{
alert('ДА');
}
else
{
alert('Нет');
}
}
</script>
<input type="checkbox" onclick='check_box(this);'/>

Одно к другому прилепишь по вкусу :)

dmitcat
На сайте с 26.05.2005
Offline
123
#6

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

<input id=mykuki type=checkbox <?php

if ($_COOKIE['kykismykis']) print 'checked=checked'; ?> onchange="SetKuki();">

<script>

function SetKuki(){

var k;

if(document.getElementById('mykuki').checked==true){k="1";}else{k="0";}

document.getElementById('kukis').src=script.php?kykismykis='+k;

... а здесь может доп.действия со страничкой если надо ...

return false;

}

</script>

а сам скрипт "засунуть" в iframe:

<iframe src="" id=kukis frameborder=0 width=1 height=1></iframe>

ну и сам script.php:

<?php

if ($kykismykis) {

setcookie("kykismykis","",time()+3600*24*365, "/", ".site.ru");

}

else {

setcookie("kykismykis","checked",time()+3600*24*365, "/", ".site.ru");

}

exit;

?>

Либо селяВи (http://www.puper.ru), либо селяВас (http://www.puper.ru)!!!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий