blob: b9c2cb68a0132d4aeec8f8ea2d2d6301f8af2028 [file] [log] [blame]
Andrey Andreevc5536aa2012-11-01 17:33:58 +02001<?php
Derek Allard2067d1a2008-11-13 22:59:24 +00002/**
3 * CodeIgniter
4 *
Andrey Andreevfe9309d2015-01-09 17:48:58 +02005 * An open source application development framework for PHP
Derek Allard2067d1a2008-11-13 22:59:24 +00006 *
Andrey Andreevbdb96ca2014-10-28 00:13:31 +02007 * This content is released under the MIT License (MIT)
Andrey Andreevdbf4a5a2012-03-13 12:08:59 +02008 *
Instructor, BCIT0e59db62019-01-01 08:34:36 -08009 * Copyright (c) 2014 - 2019, British Columbia Institute of Technology
Andrey Andreevdbf4a5a2012-03-13 12:08:59 +020010 *
Andrey Andreevbdb96ca2014-10-28 00:13:31 +020011 * Permission is hereby granted, free of charge, to any person obtaining a copy
12 * of this software and associated documentation files (the "Software"), to deal
13 * in the Software without restriction, including without limitation the rights
14 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 * copies of the Software, and to permit persons to whom the Software is
16 * furnished to do so, subject to the following conditions:
Derek Jonesf4a4bd82011-10-20 12:18:42 -050017 *
Andrey Andreevbdb96ca2014-10-28 00:13:31 +020018 * The above copyright notice and this permission notice shall be included in
19 * all copies or substantial portions of the Software.
20 *
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 * THE SOFTWARE.
28 *
29 * @package CodeIgniter
30 * @author EllisLab Dev Team
Andrey Andreev1924e872016-01-11 12:55:34 +020031 * @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
Instructor, BCIT0e59db62019-01-01 08:34:36 -080032 * @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
33 * @license https://opensource.org/licenses/MIT MIT License
Andrey Andreevbd202c92016-01-11 12:50:18 +020034 * @link https://codeigniter.com
Andrey Andreevbdb96ca2014-10-28 00:13:31 +020035 * @since Version 1.0.0
Derek Allard2067d1a2008-11-13 22:59:24 +000036 * @filesource
37 */
Andrey Andreevc5536aa2012-11-01 17:33:58 +020038defined('BASEPATH') OR exit('No direct script access allowed');
Derek Allard2067d1a2008-11-13 22:59:24 +000039
Derek Allard2067d1a2008-11-13 22:59:24 +000040/**
41 * CodeIgniter Cookie Helpers
42 *
43 * @package CodeIgniter
44 * @subpackage Helpers
45 * @category Helpers
Derek Jonesf4a4bd82011-10-20 12:18:42 -050046 * @author EllisLab Dev Team
Andrey Andreevbd202c92016-01-11 12:50:18 +020047 * @link https://codeigniter.com/user_guide/helpers/cookie_helper.html
Derek Allard2067d1a2008-11-13 22:59:24 +000048 */
49
50// ------------------------------------------------------------------------
51
Derek Allard2067d1a2008-11-13 22:59:24 +000052if ( ! function_exists('set_cookie'))
53{
Timothy Warren01b129a2012-04-27 11:36:50 -040054 /**
55 * Set cookie
56 *
57 * Accepts seven parameters, or you can submit an associative
58 * array in the first parameter containing all the values.
59 *
60 * @param mixed
61 * @param string the value of the cookie
62 * @param string the number of seconds until expiration
63 * @param string the cookie domain. Usually: .yourdomain.com
64 * @param string the cookie path
65 * @param string the cookie prefix
66 * @param bool true makes the cookie secure
67 * @param bool true makes the cookie accessible via http(s) only (no javascript)
68 * @return void
69 */
Andrey Andreev422b8892017-02-01 14:36:49 +020070 function set_cookie($name, $value = '', $expire = '', $domain = '', $path = '/', $prefix = '', $secure = NULL, $httponly = NULL)
Derek Allard2067d1a2008-11-13 22:59:24 +000071 {
Derek Allard2067d1a2008-11-13 22:59:24 +000072 // Set the config file options
Andrey Andreev119d8a72014-01-08 15:27:53 +020073 get_instance()->input->set_cookie($name, $value, $expire, $domain, $path, $prefix, $secure, $httponly);
Derek Allard2067d1a2008-11-13 22:59:24 +000074 }
75}
Barry Mienydd671972010-10-04 16:33:58 +020076
Derek Allard2067d1a2008-11-13 22:59:24 +000077// --------------------------------------------------------------------
78
Derek Allard2067d1a2008-11-13 22:59:24 +000079if ( ! function_exists('get_cookie'))
80{
Timothy Warren01b129a2012-04-27 11:36:50 -040081 /**
82 * Fetch an item from the COOKIE array
83 *
84 * @param string
85 * @param bool
86 * @return mixed
87 */
Andrey Andreev80a16b12014-01-08 17:19:03 +020088 function get_cookie($index, $xss_clean = NULL)
Derek Allard2067d1a2008-11-13 22:59:24 +000089 {
Andrey Andreev80a16b12014-01-08 17:19:03 +020090 is_bool($xss_clean) OR $xss_clean = (config_item('global_xss_filtering') === TRUE);
Andrey Andreevdbf4a5a2012-03-13 12:08:59 +020091 $prefix = isset($_COOKIE[$index]) ? '' : config_item('cookie_prefix');
Andrey Andreev119d8a72014-01-08 15:27:53 +020092 return get_instance()->input->cookie($prefix.$index, $xss_clean);
Derek Allard2067d1a2008-11-13 22:59:24 +000093 }
94}
95
96// --------------------------------------------------------------------
97
Derek Allard2067d1a2008-11-13 22:59:24 +000098if ( ! function_exists('delete_cookie'))
99{
Timothy Warren01b129a2012-04-27 11:36:50 -0400100 /**
101 * Delete a COOKIE
102 *
103 * @param mixed
104 * @param string the cookie domain. Usually: .yourdomain.com
105 * @param string the cookie path
106 * @param string the cookie prefix
107 * @return void
108 */
Andrey Andreev8f5420b2014-01-06 10:34:23 +0200109 function delete_cookie($name, $domain = '', $path = '/', $prefix = '')
Derek Allard2067d1a2008-11-13 22:59:24 +0000110 {
111 set_cookie($name, '', '', $domain, $path, $prefix);
112 }
113}