@emerysh

Checkbox как сохранять в куки?

Помогите пожалуйста, как это реализовать?

Есть такая форма:
<form action="db/site.php" method="get">
<input type="checkbox" value="1" name="varname1" class="styled">
<input type="checkbox" value="1" name="varname2" class="styled">
<input type="submit" value="Сохранить" />
</form>


Как сделать:
Если галочка стоит и сохранено, то эти данные сохраняются в куки и эта галочка при обновлении страницы опять там будет стоять.
Если галочка снята, то эти данные удаляются с куков

P.S. Возможно это и на самом деле легко, но пока я учусь, я не могу придумать как это сделать..
  • Вопрос задан
  • 1628 просмотров
Пригласить эксперта
Ответы на вопрос 3
i_d_1
@i_d_1
Программист PHP
Комментировать
@ipokos
Обрабатываете $_GET массив в файле site.php
// получаете данные с формы
$var1 = $_GET['varname1'];
$var2 = $_GET['varname2'];

$value = 'your data in cookie';
// проверяете, если чек был установлен, то это true 
if($var1){
    // ставим куку
    setcookie ("your_cookie_name", $value);
}else if($var1 == false && $_COOKIE["your_cookie_name"]){
   // если чек не установлен и существует кука с именем your_cookie_name
   // то ее удаляем, ставя ей отрицательное время жизни
    setcookie ("your_cookie_name", "", time() - 3600);
}


Для того что бы ставить или нет чек на форму, на поле сделать проверку типа:
<input type="checkbox" value="1" name="varname2" class="styled" <?php if($_COOKIE["your_cookie_name"]){ echo 'checked="checked"'; }?>>


p.s. это пример на скорую руку. Почитайте детальнее про то как работать с куками, как удалять, проверять и хранить в них данные.
+ данные полученные через $_GET нужно строго типизировать (например, если ожидаете число, то очищаете результат от тегов, пробелов, проверяете на число, если полученные данные число, продолжаете, иначе возвращаете false)
Ответ написан
Комментировать
@betal
Коль учитесь, то лучше такие задачи не через куки делать. Есть другие механизмы типа БД, сессии, локалсторадж и т.д. А так по мелочи будете перегружать браузер, а если злоупотреблять сайт перестанет открываться.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы