blob: c466ca0b99d3b828ef2ba1bea5d2f36f31f55fbb [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 Andreevea801ab2014-01-20 15:03:43 +020016.. function:: is_php([$version = '5.3.0'])
Derek Jones8ede1a22011-10-05 13:34:52 -050017
Andrey Andreev1bc30262012-11-09 11:30:51 +020018 :param string $version: Version number
19 :returns: bool
Derek Jones8ede1a22011-10-05 13:34:52 -050020
Andrey Andreev9f387e72014-01-07 11:50:34 +020021 Determines of the PHP version being used is greater than the
22 supplied version number.
Andrey Andreev1bc30262012-11-09 11:30:51 +020023
Andrey Andreev9f387e72014-01-07 11:50:34 +020024 Example::
Andrey Andreev1bc30262012-11-09 11:30:51 +020025
Andrey Andreev9f387e72014-01-07 11:50:34 +020026 if (is_php('5.3'))
27 {
28 $str = quoted_printable_encode($str);
29 }
Derek Jones8ede1a22011-10-05 13:34:52 -050030
Andrey Andreev9f387e72014-01-07 11:50:34 +020031 Returns boolean TRUE if the installed version of PHP is equal to or
32 greater than the supplied version number. Returns FALSE if the installed
33 version of PHP is lower than the supplied version number.
Derek Jones8ede1a22011-10-05 13:34:52 -050034
Andrey Andreevaf9aa2b2014-01-25 00:28:10 +020035.. function:: is_really_writable($file)
Derek Jones8ede1a22011-10-05 13:34:52 -050036
Andrey Andreevaf9aa2b2014-01-25 00:28:10 +020037 :param string $file: File path
38 :returns: bool
Andrey Andreev1bc30262012-11-09 11:30:51 +020039
Andrey Andreev9f387e72014-01-07 11:50:34 +020040 ``is_writable()`` returns TRUE on Windows servers when you really can't
41 write to the file as the OS reports to PHP as FALSE only if the
42 read-only attribute is marked.
Andrey Andreev1bc30262012-11-09 11:30:51 +020043
Andrey Andreev9f387e72014-01-07 11:50:34 +020044 This function determines if a file is actually writable by attempting
45 to write to it first. Generally only recommended on platforms where
46 this information may be unreliable.
Derek Jones8ede1a22011-10-05 13:34:52 -050047
Andrey Andreev9f387e72014-01-07 11:50:34 +020048 Example::
Andrey Andreev1bc30262012-11-09 11:30:51 +020049
Andrey Andreev9f387e72014-01-07 11:50:34 +020050 if (is_really_writable('file.txt'))
51 {
52 echo "I could write to this if I wanted to";
53 }
54 else
55 {
56 echo "File is not writable";
57 }
Andrey Andreev1bc30262012-11-09 11:30:51 +020058
Andrey Andreevaf9aa2b2014-01-25 00:28:10 +020059 .. note:: See also `PHP bug #54709 <https://bugs.php.net/bug.php?id=54709>`_ for more info.
60
Derek Jonesb8c283a2013-07-19 16:02:53 -070061.. function:: config_item($key)
Andrey Andreev1bc30262012-11-09 11:30:51 +020062
63 :param string $key: Config item key
64 :returns: mixed
Derek Jones8ede1a22011-10-05 13:34:52 -050065
Andrey Andreev9f387e72014-01-07 11:50:34 +020066 The :doc:`Config Library <../libraries/config>` is the preferred way of
67 accessing configuration information, however ``config_item()`` can be used
68 to retrieve single keys. See :doc:`Config Library <../libraries/config>`
69 documentation for more information.
Derek Jones8ede1a22011-10-05 13:34:52 -050070
Andrey Andreevea801ab2014-01-20 15:03:43 +020071.. :noindex: function:: show_error($message, $status_code[, $heading = 'An Error Was Encountered'])
Derek Jones8ede1a22011-10-05 13:34:52 -050072
Andrey Andreev1bc30262012-11-09 11:30:51 +020073 :param mixed $message: Error message
74 :param int $status_code: HTTP Response status code
75 :param string $heading: Error page heading
76 :returns: void
77
Andrey Andreev9f387e72014-01-07 11:50:34 +020078 This function calls ``CI_Exception::show_error()``. For more info,
79 please see the :doc:`Error Handling <errors>` documentation.
Andrey Andreev1bc30262012-11-09 11:30:51 +020080
Andrey Andreevea801ab2014-01-20 15:03:43 +020081.. :noindex: function:: show_404([$page = ''[, $log_error = TRUE]])
Andrey Andreev1bc30262012-11-09 11:30:51 +020082
83 :param string $page: URI string
84 :param bool $log_error: Whether to log the error
85 :returns: void
86
Andrey Andreev9f387e72014-01-07 11:50:34 +020087 This function calls ``CI_Exception::show_404()``. For more info,
88 please see the :doc:`Error Handling <errors>` documentation.
Andrey Andreev1bc30262012-11-09 11:30:51 +020089
Andrey Andreevea801ab2014-01-20 15:03:43 +020090.. :noindex: function:: log_message($level, $message)
Andrey Andreev1bc30262012-11-09 11:30:51 +020091
vlakoffd0c30ab2013-05-07 07:49:23 +020092 :param string $level: Log level: 'error', 'debug' or 'info'
Andrey Andreev1bc30262012-11-09 11:30:51 +020093 :param string $message: Message to log
Andrey Andreev1bc30262012-11-09 11:30:51 +020094 :returns: void
95
Andrey Andreev9f387e72014-01-07 11:50:34 +020096 This function is an alias for ``CI_Log::write_log()``. For more info,
97 please see the :doc:`Error Handling <errors>` documentation.
Derek Jones8ede1a22011-10-05 13:34:52 -050098
Andrey Andreevea801ab2014-01-20 15:03:43 +020099.. function:: set_status_header($code[, $text = ''])
Andrey Andreev1bc30262012-11-09 11:30:51 +0200100
101 :param int $code: HTTP Reponse status code
102 :param string $text: A custom message to set with the status code
103 :returns: void
104
Andrey Andreev9f387e72014-01-07 11:50:34 +0200105 Permits you to manually set a server status header. Example::
Derek Jones8ede1a22011-10-05 13:34:52 -0500106
Andrey Andreev9f387e72014-01-07 11:50:34 +0200107 set_status_header(401);
108 // Sets the header as: Unauthorized
Derek Jones8ede1a22011-10-05 13:34:52 -0500109
Andrey Andreev9f387e72014-01-07 11:50:34 +0200110 `See here <http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html>`_ for
111 a full list of headers.
Derek Jones8ede1a22011-10-05 13:34:52 -0500112
Andrey Andreevea801ab2014-01-20 15:03:43 +0200113.. function:: remove_invisible_characters($str[, $url_encoded = TRUE])
Andrey Andreev1bc30262012-11-09 11:30:51 +0200114
115 :param string $str: Input string
116 :param bool $url_encoded: Whether to remove URL-encoded characters as well
117 :returns: string
118
Andrey Andreev9f387e72014-01-07 11:50:34 +0200119 This function prevents inserting NULL characters between ASCII
120 characters, like Java\\0script.
Derek Jones8ede1a22011-10-05 13:34:52 -0500121
Andrey Andreev9f387e72014-01-07 11:50:34 +0200122 Example::
Derek Jones8ede1a22011-10-05 13:34:52 -0500123
Andrey Andreev9f387e72014-01-07 11:50:34 +0200124 remove_invisible_characters('Java\\0script');
125 // Returns: 'Javascript'
Andrey Andreev1bc30262012-11-09 11:30:51 +0200126
Derek Jonesb8c283a2013-07-19 16:02:53 -0700127.. function:: html_escape($var)
Andrey Andreev1bc30262012-11-09 11:30:51 +0200128
Andrey Andreev9f387e72014-01-07 11:50:34 +0200129 :param mixed $var: Variable to escape (string or array)
Andrey Andreev1bc30262012-11-09 11:30:51 +0200130 :returns: mixed
131
Andrey Andreev9f387e72014-01-07 11:50:34 +0200132 This function acts as an alias for PHP's native ``htmlspecialchars()``
133 function, with the advantage of being able to accept an array of strings.
Andrey Andreev1bc30262012-11-09 11:30:51 +0200134
Andrey Andreev9f387e72014-01-07 11:50:34 +0200135 It is useful in preventing Cross Site Scripting (XSS).
Andrey Andreev6ef498b2012-06-05 22:01:58 +0300136
Derek Jonesb8c283a2013-07-19 16:02:53 -0700137.. function:: get_mimes()
Andrey Andreev1bc30262012-11-09 11:30:51 +0200138
139 :returns: array
140
Andrey Andreev9f387e72014-01-07 11:50:34 +0200141 This function returns a *reference* to the MIMEs array from
142 *application/config/mimes.php*.
Andrey Andreev3fb02672012-10-22 16:48:01 +0300143
Derek Jonesb8c283a2013-07-19 16:02:53 -0700144.. function:: is_https()
Andrey Andreev1bc30262012-11-09 11:30:51 +0200145
146 :returns: bool
147
Andrey Andreev9f387e72014-01-07 11:50:34 +0200148 Returns TRUE if a secure (HTTPS) connection is used and FALSE
149 in any other case (including non-HTTP requests).
Andrey Andreeve9d2dc82012-11-07 14:23:29 +0200150
Andrey Andreevea801ab2014-01-20 15:03:43 +0200151.. function:: is_cli()
Andrey Andreevf964b162013-11-12 17:04:55 +0200152
153 :returns: bool
154
Andrey Andreevea801ab2014-01-20 15:03:43 +0200155 Returns TRUE if the application is run through the command line
156 and FALSE if not.
Andrey Andreevf964b162013-11-12 17:04:55 +0200157
Andrey Andreevea801ab2014-01-20 15:03:43 +0200158 .. note:: This function checks both if the ``PHP_SAPI`` value is 'cli'
159 or if the ``STDIN`` constant is defined.
Andrey Andreeve9d2dc82012-11-07 14:23:29 +0200160
Derek Jonesb8c283a2013-07-19 16:02:53 -0700161.. function:: function_usable($function_name)
Andrey Andreev1bc30262012-11-09 11:30:51 +0200162
163 :param string $function_name: Function name
164 :returns: bool
165
Andrey Andreev9f387e72014-01-07 11:50:34 +0200166 Returns TRUE if a function exists and is usable, FALSE otherwise.
Andrey Andreeve9d2dc82012-11-07 14:23:29 +0200167
Andrey Andreev9f387e72014-01-07 11:50:34 +0200168 This function runs a ``function_exists()`` check and if the
169 `Suhosin extension <http://www.hardened-php.net/suhosin/>` is loaded,
170 checks if it doesn't disable the function being checked.
Andrey Andreeve9d2dc82012-11-07 14:23:29 +0200171
Andrey Andreev9f387e72014-01-07 11:50:34 +0200172 It is useful if you want to check for the availability of functions
173 such as ``eval()`` and ``exec()``, which are dangerous and might be
Andrey Andreevff6d1a82014-02-07 15:35:51 +0200174 disabled on servers with highly restrictive security policies.
Andrey Andreevaaa8ddb2014-02-03 14:10:44 +0200175
Andrey Andreevff6d1a82014-02-07 15:35:51 +0200176 .. note:: This function was introduced because Suhosin terminated
177 script execution, but this turned out to be a bug. A fix
178 has been available for some time (version 0.9.34), but is
179 unfortunately not released yet.