Derek Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 1 | ################ |
| 2 | Common Functions |
| 3 | ################ |
| 4 | |
| 5 | CodeIgniter uses a few functions for its operation that are globally |
| 6 | defined, and are available to you at any point. These do not require |
| 7 | loading any libraries or helpers. |
| 8 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 9 | .. contents:: |
| 10 | :local: |
| 11 | |
| 12 | .. raw:: html |
| 13 | |
| 14 | <div class="custom-index container"></div> |
Derek Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 15 | |
Derek Jones | b8c283a | 2013-07-19 16:02:53 -0700 | [diff] [blame] | 16 | .. function:: is_php($version = '5.3.0') |
Derek Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 17 | |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 18 | :param string $version: Version number |
| 19 | :returns: bool |
Derek Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 20 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 21 | Determines of the PHP version being used is greater than the |
| 22 | supplied version number. |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 23 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 24 | Example:: |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 25 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 26 | if (is_php('5.3')) |
| 27 | { |
| 28 | $str = quoted_printable_encode($str); |
| 29 | } |
Derek Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 30 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 31 | 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 Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 34 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 35 | .. function:: is_really_writable($file) |
Derek Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 36 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 37 | :param string $file: File path |
| 38 | :returns: bool |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 39 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 40 | ``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 Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 43 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 44 | 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 Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 47 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 48 | Example:: |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 49 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 50 | 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 Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 58 | |
Derek Jones | b8c283a | 2013-07-19 16:02:53 -0700 | [diff] [blame] | 59 | .. function:: config_item($key) |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 60 | |
| 61 | :param string $key: Config item key |
| 62 | :returns: mixed |
Derek Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 63 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 64 | The :doc:`Config Library <../libraries/config>` is the preferred way of |
| 65 | accessing configuration information, however ``config_item()`` can be used |
| 66 | to retrieve single keys. See :doc:`Config Library <../libraries/config>` |
| 67 | documentation for more information. |
Derek Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 68 | |
Derek Jones | b8c283a | 2013-07-19 16:02:53 -0700 | [diff] [blame] | 69 | .. function:: show_error($message, $status_code, $heading = 'An Error Was Encountered') |
Derek Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 70 | |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 71 | :param mixed $message: Error message |
| 72 | :param int $status_code: HTTP Response status code |
| 73 | :param string $heading: Error page heading |
| 74 | :returns: void |
| 75 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 76 | This function calls ``CI_Exception::show_error()``. For more info, |
| 77 | please see the :doc:`Error Handling <errors>` documentation. |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 78 | |
Derek Jones | b8c283a | 2013-07-19 16:02:53 -0700 | [diff] [blame] | 79 | .. function:: show_404($page = '', $log_error = TRUE) |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 80 | |
| 81 | :param string $page: URI string |
| 82 | :param bool $log_error: Whether to log the error |
| 83 | :returns: void |
| 84 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 85 | This function calls ``CI_Exception::show_404()``. For more info, |
| 86 | please see the :doc:`Error Handling <errors>` documentation. |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 87 | |
Derek Jones | b8c283a | 2013-07-19 16:02:53 -0700 | [diff] [blame] | 88 | .. function:: log_message($level, $message, $php_error = FALSE) |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 89 | |
vlakoff | d0c30ab | 2013-05-07 07:49:23 +0200 | [diff] [blame] | 90 | :param string $level: Log level: 'error', 'debug' or 'info' |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 91 | :param string $message: Message to log |
vlakoff | d0c30ab | 2013-05-07 07:49:23 +0200 | [diff] [blame] | 92 | :param bool $php_error: Whether we're logging a native PHP error message |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 93 | :returns: void |
| 94 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 95 | This function is an alias for ``CI_Log::write_log()``. For more info, |
| 96 | please see the :doc:`Error Handling <errors>` documentation. |
Derek Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 97 | |
Derek Jones | b8c283a | 2013-07-19 16:02:53 -0700 | [diff] [blame] | 98 | .. function:: set_status_header($code, $text = '') |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 99 | |
| 100 | :param int $code: HTTP Reponse status code |
| 101 | :param string $text: A custom message to set with the status code |
| 102 | :returns: void |
| 103 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 104 | Permits you to manually set a server status header. Example:: |
Derek Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 105 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 106 | set_status_header(401); |
| 107 | // Sets the header as: Unauthorized |
Derek Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 108 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 109 | `See here <http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html>`_ for |
| 110 | a full list of headers. |
Derek Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 111 | |
Derek Jones | b8c283a | 2013-07-19 16:02:53 -0700 | [diff] [blame] | 112 | .. function:: remove_invisible_characters($str, $url_encoded = TRUE) |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 113 | |
| 114 | :param string $str: Input string |
| 115 | :param bool $url_encoded: Whether to remove URL-encoded characters as well |
| 116 | :returns: string |
| 117 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 118 | This function prevents inserting NULL characters between ASCII |
| 119 | characters, like Java\\0script. |
Derek Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 120 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 121 | Example:: |
Derek Jones | 8ede1a2 | 2011-10-05 13:34:52 -0500 | [diff] [blame] | 122 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 123 | remove_invisible_characters('Java\\0script'); |
| 124 | // Returns: 'Javascript' |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 125 | |
Derek Jones | b8c283a | 2013-07-19 16:02:53 -0700 | [diff] [blame] | 126 | .. function:: html_escape($var) |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 127 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 128 | :param mixed $var: Variable to escape (string or array) |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 129 | :returns: mixed |
| 130 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 131 | This function acts as an alias for PHP's native ``htmlspecialchars()`` |
| 132 | function, with the advantage of being able to accept an array of strings. |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 133 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 134 | It is useful in preventing Cross Site Scripting (XSS). |
Andrey Andreev | 6ef498b | 2012-06-05 22:01:58 +0300 | [diff] [blame] | 135 | |
Derek Jones | b8c283a | 2013-07-19 16:02:53 -0700 | [diff] [blame] | 136 | .. function:: get_mimes() |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 137 | |
| 138 | :returns: array |
| 139 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 140 | This function returns a *reference* to the MIMEs array from |
| 141 | *application/config/mimes.php*. |
Andrey Andreev | 3fb0267 | 2012-10-22 16:48:01 +0300 | [diff] [blame] | 142 | |
Derek Jones | b8c283a | 2013-07-19 16:02:53 -0700 | [diff] [blame] | 143 | .. function:: is_https() |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 144 | |
| 145 | :returns: bool |
| 146 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 147 | Returns TRUE if a secure (HTTPS) connection is used and FALSE |
| 148 | in any other case (including non-HTTP requests). |
Andrey Andreev | e9d2dc8 | 2012-11-07 14:23:29 +0200 | [diff] [blame] | 149 | |
Andrey Andreev | 838a9d6 | 2012-12-03 14:37:47 +0200 | [diff] [blame] | 150 | function_usable() |
| 151 | ================= |
Andrey Andreev | e9d2dc8 | 2012-11-07 14:23:29 +0200 | [diff] [blame] | 152 | |
Derek Jones | b8c283a | 2013-07-19 16:02:53 -0700 | [diff] [blame] | 153 | .. function:: function_usable($function_name) |
Andrey Andreev | 1bc3026 | 2012-11-09 11:30:51 +0200 | [diff] [blame] | 154 | |
| 155 | :param string $function_name: Function name |
| 156 | :returns: bool |
| 157 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 158 | Returns TRUE if a function exists and is usable, FALSE otherwise. |
Andrey Andreev | e9d2dc8 | 2012-11-07 14:23:29 +0200 | [diff] [blame] | 159 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 160 | This function runs a ``function_exists()`` check and if the |
| 161 | `Suhosin extension <http://www.hardened-php.net/suhosin/>` is loaded, |
| 162 | checks if it doesn't disable the function being checked. |
Andrey Andreev | e9d2dc8 | 2012-11-07 14:23:29 +0200 | [diff] [blame] | 163 | |
Andrey Andreev | 9f387e7 | 2014-01-07 11:50:34 +0200 | [diff] [blame^] | 164 | It is useful if you want to check for the availability of functions |
| 165 | such as ``eval()`` and ``exec()``, which are dangerous and might be |
| 166 | disabled on servers with highly restrictive security policies. |