blob: 3e3e4226426d094d4a7cb146c1cd828a1f563a55 [file] [log] [blame]
Derek Jones8ede1a22011-10-05 13:34:52 -05001################
2Common Functions
3################
4
5CodeIgniter uses a few functions for its operation that are globally
6defined, and are available to you at any point. These do not require
7loading any libraries or helpers.
8
Andrey Andreev9f387e72014-01-07 11:50:34 +02009.. contents::
10 :local:
11
12.. raw:: html
13
14 <div class="custom-index container"></div>
Derek Jones8ede1a22011-10-05 13:34:52 -050015
Andrey Andreevcd3d9db2015-02-02 13:41:01 +020016.. php:function:: is_php($version)
Derek Jones8ede1a22011-10-05 13:34:52 -050017
Andrey Andreev1bc30262012-11-09 11:30:51 +020018 :param string $version: Version number
Andrey Andreev9228f852014-02-07 23:40:22 +020019 :returns: TRUE if the running PHP version is at least the one specified or FALSE if not
20 :rtype: bool
Derek Jones8ede1a22011-10-05 13:34:52 -050021
vlakoff629d3752014-04-05 09:52:01 +020022 Determines if the PHP version being used is greater than the
Andrey Andreev9f387e72014-01-07 11:50:34 +020023 supplied version number.
Andrey Andreev1bc30262012-11-09 11:30:51 +020024
Andrey Andreev9f387e72014-01-07 11:50:34 +020025 Example::
Andrey Andreev1bc30262012-11-09 11:30:51 +020026
Andrey Andreev9f387e72014-01-07 11:50:34 +020027 if (is_php('5.3'))
28 {
29 $str = quoted_printable_encode($str);
30 }
Derek Jones8ede1a22011-10-05 13:34:52 -050031
Andrey Andreev9f387e72014-01-07 11:50:34 +020032 Returns boolean TRUE if the installed version of PHP is equal to or
33 greater than the supplied version number. Returns FALSE if the installed
34 version of PHP is lower than the supplied version number.
Derek Jones8ede1a22011-10-05 13:34:52 -050035
Andrey Andreevcd3d9db2015-02-02 13:41:01 +020036.. php:function:: is_really_writable($file)
Derek Jones8ede1a22011-10-05 13:34:52 -050037
Andrey Andreevaf9aa2b2014-01-25 00:28:10 +020038 :param string $file: File path
Andrey Andreev9228f852014-02-07 23:40:22 +020039 :returns: TRUE if the path is writable, FALSE if not
40 :rtype: bool
Andrey Andreev1bc30262012-11-09 11:30:51 +020041
Andrey Andreev9f387e72014-01-07 11:50:34 +020042 ``is_writable()`` returns TRUE on Windows servers when you really can't
43 write to the file as the OS reports to PHP as FALSE only if the
44 read-only attribute is marked.
Andrey Andreev1bc30262012-11-09 11:30:51 +020045
Andrey Andreev9f387e72014-01-07 11:50:34 +020046 This function determines if a file is actually writable by attempting
47 to write to it first. Generally only recommended on platforms where
48 this information may be unreliable.
Derek Jones8ede1a22011-10-05 13:34:52 -050049
Andrey Andreev9f387e72014-01-07 11:50:34 +020050 Example::
Andrey Andreev1bc30262012-11-09 11:30:51 +020051
Andrey Andreev9f387e72014-01-07 11:50:34 +020052 if (is_really_writable('file.txt'))
53 {
54 echo "I could write to this if I wanted to";
55 }
56 else
57 {
58 echo "File is not writable";
59 }
Andrey Andreev1bc30262012-11-09 11:30:51 +020060
Andrey Andreevaf9aa2b2014-01-25 00:28:10 +020061 .. note:: See also `PHP bug #54709 <https://bugs.php.net/bug.php?id=54709>`_ for more info.
62
Andrey Andreevcd3d9db2015-02-02 13:41:01 +020063.. php:function:: config_item($key)
Andrey Andreev1bc30262012-11-09 11:30:51 +020064
65 :param string $key: Config item key
Andrey Andreevd444d442014-10-06 00:00:08 +030066 :returns: Configuration key value or NULL if not found
Andrey Andreev9228f852014-02-07 23:40:22 +020067 :rtype: mixed
Derek Jones8ede1a22011-10-05 13:34:52 -050068
Andrey Andreev9f387e72014-01-07 11:50:34 +020069 The :doc:`Config Library <../libraries/config>` is the preferred way of
70 accessing configuration information, however ``config_item()`` can be used
71 to retrieve single keys. See :doc:`Config Library <../libraries/config>`
72 documentation for more information.
Derek Jones8ede1a22011-10-05 13:34:52 -050073
Andrey Andreevea801ab2014-01-20 15:03:43 +020074.. :noindex: function:: show_error($message, $status_code[, $heading = 'An Error Was Encountered'])
Derek Jones8ede1a22011-10-05 13:34:52 -050075
Andrey Andreev1bc30262012-11-09 11:30:51 +020076 :param mixed $message: Error message
77 :param int $status_code: HTTP Response status code
78 :param string $heading: Error page heading
Andrey Andreev9228f852014-02-07 23:40:22 +020079 :rtype: void
Andrey Andreev1bc30262012-11-09 11:30:51 +020080
Andrey Andreev9f387e72014-01-07 11:50:34 +020081 This function calls ``CI_Exception::show_error()``. For more info,
82 please see the :doc:`Error Handling <errors>` documentation.
Andrey Andreev1bc30262012-11-09 11:30:51 +020083
Andrey Andreevea801ab2014-01-20 15:03:43 +020084.. :noindex: function:: show_404([$page = ''[, $log_error = TRUE]])
Andrey Andreev1bc30262012-11-09 11:30:51 +020085
86 :param string $page: URI string
87 :param bool $log_error: Whether to log the error
Andrey Andreev9228f852014-02-07 23:40:22 +020088 :rtype: void
Andrey Andreev1bc30262012-11-09 11:30:51 +020089
Andrey Andreev9f387e72014-01-07 11:50:34 +020090 This function calls ``CI_Exception::show_404()``. For more info,
91 please see the :doc:`Error Handling <errors>` documentation.
Andrey Andreev1bc30262012-11-09 11:30:51 +020092
Andrey Andreevea801ab2014-01-20 15:03:43 +020093.. :noindex: function:: log_message($level, $message)
Andrey Andreev1bc30262012-11-09 11:30:51 +020094
vlakoffd0c30ab2013-05-07 07:49:23 +020095 :param string $level: Log level: 'error', 'debug' or 'info'
Andrey Andreev1bc30262012-11-09 11:30:51 +020096 :param string $message: Message to log
Andrey Andreev9228f852014-02-07 23:40:22 +020097 :rtype: void
Andrey Andreev1bc30262012-11-09 11:30:51 +020098
Andrey Andreev9f387e72014-01-07 11:50:34 +020099 This function is an alias for ``CI_Log::write_log()``. For more info,
100 please see the :doc:`Error Handling <errors>` documentation.
Derek Jones8ede1a22011-10-05 13:34:52 -0500101
Andrey Andreevcd3d9db2015-02-02 13:41:01 +0200102.. php:function:: set_status_header($code[, $text = ''])
Andrey Andreev1bc30262012-11-09 11:30:51 +0200103
Andrey Andreev71d8f722017-01-17 12:01:00 +0200104 :param int $code: HTTP Response status code
Andrey Andreev1bc30262012-11-09 11:30:51 +0200105 :param string $text: A custom message to set with the status code
Andrey Andreev9228f852014-02-07 23:40:22 +0200106 :rtype: void
Andrey Andreev1bc30262012-11-09 11:30:51 +0200107
Andrey Andreev9f387e72014-01-07 11:50:34 +0200108 Permits you to manually set a server status header. Example::
Derek Jones8ede1a22011-10-05 13:34:52 -0500109
Andrey Andreev9f387e72014-01-07 11:50:34 +0200110 set_status_header(401);
111 // Sets the header as: Unauthorized
Derek Jones8ede1a22011-10-05 13:34:52 -0500112
Andrey Andreev9f387e72014-01-07 11:50:34 +0200113 `See here <http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html>`_ for
114 a full list of headers.
Derek Jones8ede1a22011-10-05 13:34:52 -0500115
Andrey Andreevcd3d9db2015-02-02 13:41:01 +0200116.. php:function:: remove_invisible_characters($str[, $url_encoded = TRUE])
Andrey Andreev1bc30262012-11-09 11:30:51 +0200117
118 :param string $str: Input string
119 :param bool $url_encoded: Whether to remove URL-encoded characters as well
Andrey Andreev9228f852014-02-07 23:40:22 +0200120 :returns: Sanitized string
121 :rtype: string
Andrey Andreev1bc30262012-11-09 11:30:51 +0200122
Andrey Andreev9f387e72014-01-07 11:50:34 +0200123 This function prevents inserting NULL characters between ASCII
124 characters, like Java\\0script.
Derek Jones8ede1a22011-10-05 13:34:52 -0500125
Andrey Andreev9f387e72014-01-07 11:50:34 +0200126 Example::
Derek Jones8ede1a22011-10-05 13:34:52 -0500127
Andrey Andreev9f387e72014-01-07 11:50:34 +0200128 remove_invisible_characters('Java\\0script');
129 // Returns: 'Javascript'
Andrey Andreev1bc30262012-11-09 11:30:51 +0200130
Andrey Andreevcd3d9db2015-02-02 13:41:01 +0200131.. php:function:: html_escape($var)
Andrey Andreev1bc30262012-11-09 11:30:51 +0200132
Andrey Andreev9f387e72014-01-07 11:50:34 +0200133 :param mixed $var: Variable to escape (string or array)
Andrey Andreev9228f852014-02-07 23:40:22 +0200134 :returns: HTML escaped string(s)
135 :rtype: mixed
Andrey Andreev1bc30262012-11-09 11:30:51 +0200136
Andrey Andreev9f387e72014-01-07 11:50:34 +0200137 This function acts as an alias for PHP's native ``htmlspecialchars()``
138 function, with the advantage of being able to accept an array of strings.
Andrey Andreev1bc30262012-11-09 11:30:51 +0200139
Andrey Andreev9f387e72014-01-07 11:50:34 +0200140 It is useful in preventing Cross Site Scripting (XSS).
Andrey Andreev6ef498b2012-06-05 22:01:58 +0300141
Andrey Andreevcd3d9db2015-02-02 13:41:01 +0200142.. php:function:: get_mimes()
Andrey Andreev1bc30262012-11-09 11:30:51 +0200143
Andrey Andreev9228f852014-02-07 23:40:22 +0200144 :returns: An associative array of file types
145 :rtype: array
Andrey Andreev1bc30262012-11-09 11:30:51 +0200146
Andrey Andreev9f387e72014-01-07 11:50:34 +0200147 This function returns a *reference* to the MIMEs array from
148 *application/config/mimes.php*.
Andrey Andreev3fb02672012-10-22 16:48:01 +0300149
Andrey Andreevcd3d9db2015-02-02 13:41:01 +0200150.. php:function:: is_https()
Andrey Andreev1bc30262012-11-09 11:30:51 +0200151
Andrey Andreev9228f852014-02-07 23:40:22 +0200152 :returns: TRUE if currently using HTTP-over-SSL, FALSE if not
153 :rtype: bool
Andrey Andreev1bc30262012-11-09 11:30:51 +0200154
Andrey Andreev9f387e72014-01-07 11:50:34 +0200155 Returns TRUE if a secure (HTTPS) connection is used and FALSE
156 in any other case (including non-HTTP requests).
Andrey Andreeve9d2dc82012-11-07 14:23:29 +0200157
Andrey Andreevcd3d9db2015-02-02 13:41:01 +0200158.. php:function:: is_cli()
Andrey Andreevf964b162013-11-12 17:04:55 +0200159
Andrey Andreev9228f852014-02-07 23:40:22 +0200160 :returns: TRUE if currently running under CLI, FALSE otherwise
161 :rtype: bool
Andrey Andreevf964b162013-11-12 17:04:55 +0200162
Andrey Andreevea801ab2014-01-20 15:03:43 +0200163 Returns TRUE if the application is run through the command line
164 and FALSE if not.
Andrey Andreevf964b162013-11-12 17:04:55 +0200165
Andrey Andreevea801ab2014-01-20 15:03:43 +0200166 .. note:: This function checks both if the ``PHP_SAPI`` value is 'cli'
167 or if the ``STDIN`` constant is defined.
Andrey Andreeve9d2dc82012-11-07 14:23:29 +0200168
Andrey Andreevcd3d9db2015-02-02 13:41:01 +0200169.. php:function:: function_usable($function_name)
Andrey Andreev1bc30262012-11-09 11:30:51 +0200170
171 :param string $function_name: Function name
Andrey Andreev9228f852014-02-07 23:40:22 +0200172 :returns: TRUE if the function can be used, FALSE if not
173 :rtype: bool
Andrey Andreev1bc30262012-11-09 11:30:51 +0200174
Andrey Andreev9f387e72014-01-07 11:50:34 +0200175 Returns TRUE if a function exists and is usable, FALSE otherwise.
Andrey Andreeve9d2dc82012-11-07 14:23:29 +0200176
Andrey Andreev9f387e72014-01-07 11:50:34 +0200177 This function runs a ``function_exists()`` check and if the
178 `Suhosin extension <http://www.hardened-php.net/suhosin/>` is loaded,
179 checks if it doesn't disable the function being checked.
Andrey Andreeve9d2dc82012-11-07 14:23:29 +0200180
Andrey Andreev9f387e72014-01-07 11:50:34 +0200181 It is useful if you want to check for the availability of functions
182 such as ``eval()`` and ``exec()``, which are dangerous and might be
Andrey Andreevff6d1a82014-02-07 15:35:51 +0200183 disabled on servers with highly restrictive security policies.
Andrey Andreevaaa8ddb2014-02-03 14:10:44 +0200184
Andrey Andreevff6d1a82014-02-07 15:35:51 +0200185 .. note:: This function was introduced because Suhosin terminated
186 script execution, but this turned out to be a bug. A fix
187 has been available for some time (version 0.9.34), but is
188 unfortunately not released yet.