233 lines
6.9 KiB
ReStructuredText
233 lines
6.9 KiB
ReStructuredText
#######################
|
|
Compatibility Functions
|
|
#######################
|
|
|
|
CodeIgniter provides a set of compatibility functions that enable
|
|
you to use functions what are otherwise natively available in PHP,
|
|
but only in higher versions or depending on a certain extension.
|
|
|
|
Being custom implementations, these functions will also have some
|
|
set of dependencies on their own, but are still useful if your
|
|
PHP setup doesn't offer them natively.
|
|
|
|
.. note:: Much like the :doc:`common functions <common_functions>`, the
|
|
compatibility functions are always available, as long as
|
|
their dependencies are met.
|
|
|
|
.. contents::
|
|
:local:
|
|
|
|
.. raw:: html
|
|
|
|
<div class="custom-index container"></div>
|
|
|
|
****************
|
|
Password Hashing
|
|
****************
|
|
|
|
This set of compatibility functions offers a "backport" of PHP's
|
|
standard `Password Hashing extension <http://php.net/password>`_
|
|
that is otherwise available only since PHP 5.5.
|
|
|
|
Dependencies
|
|
============
|
|
|
|
- PHP 5.3.7
|
|
- ``CRYPT_BLOWFISH`` support for ``crypt()``
|
|
|
|
Constants
|
|
=========
|
|
|
|
- ``PASSWORD_BCRYPT``
|
|
- ``PASSWORD_DEFAULT``
|
|
|
|
Function reference
|
|
==================
|
|
|
|
.. php:function:: password_get_info($hash)
|
|
|
|
:param string $hash: Password hash
|
|
:returns: Information about the hashed password
|
|
:rtype: array
|
|
|
|
For more information, please refer to the `PHP manual for
|
|
password_get_info() <http://php.net/password_get_info>`_.
|
|
|
|
.. php:function:: password_hash($password, $algo[, $options = array()])
|
|
|
|
:param string $password: Plain-text password
|
|
:param int $algo: Hashing algorithm
|
|
:param array $options: Hashing options
|
|
:returns: Hashed password or FALSE on failure
|
|
:rtype: string
|
|
|
|
For more information, please refer to the `PHP manual for
|
|
password_hash() <http://php.net/password_hash>`_.
|
|
|
|
.. note:: Unless you provide your own (and valid) salt, this function
|
|
has a further dependency on an available CSPRNG source. Each
|
|
of the following would satisfy that:
|
|
- ``mcrypt_create_iv()`` with ``MCRYPT_DEV_URANDOM``
|
|
- ``openssl_random_pseudo_bytes()``
|
|
- /dev/arandom
|
|
- /dev/urandom
|
|
|
|
.. php:function:: password_needs_rehash()
|
|
|
|
:param string $hash: Password hash
|
|
:param int $algo: Hashing algorithm
|
|
:param array $options: Hashing options
|
|
:returns: TRUE if the hash should be rehashed to match the given algorithm and options, FALSE otherwise
|
|
:rtype: bool
|
|
|
|
For more information, please refer to the `PHP manual for
|
|
password_needs_rehash() <http://php.net/password_needs_rehash>`_.
|
|
|
|
.. php:function:: password_verify($password, $hash)
|
|
|
|
:param string $password: Plain-text password
|
|
:param string $hash: Password hash
|
|
:returns: TRUE if the password matches the hash, FALSE if not
|
|
:rtype: bool
|
|
|
|
For more information, please refer to the `PHP manual for
|
|
password_verify() <http://php.net/password_verify>`_.
|
|
|
|
*********************
|
|
Hash (Message Digest)
|
|
*********************
|
|
|
|
This compatibility layer contains backports for the ``hash_equals()``
|
|
and ``hash_pbkdf2()`` functions, which otherwise require PHP 5.6 and/or
|
|
PHP 5.5 respectively.
|
|
|
|
Dependencies
|
|
============
|
|
|
|
- None
|
|
|
|
Function reference
|
|
==================
|
|
|
|
.. php:function:: hash_equals($known_string, $user_string)
|
|
|
|
:param string $known_string: Known string
|
|
:param string $user_string: User-supplied string
|
|
:returns: TRUE if the strings match, FALSE otherwise
|
|
:rtype: string
|
|
|
|
For more information, please refer to the `PHP manual for
|
|
hash_equals() <http://php.net/hash_equals>`_.
|
|
|
|
.. php:function:: hash_pbkdf2($algo, $password, $salt, $iterations[, $length = 0[, $raw_output = FALSE]])
|
|
|
|
:param string $algo: Hashing algorithm
|
|
:param string $password: Password
|
|
:param string $salt: Hash salt
|
|
:param int $iterations: Number of iterations to perform during derivation
|
|
:param int $length: Output string length
|
|
:param bool $raw_output: Whether to return raw binary data
|
|
:returns: Password-derived key or FALSE on failure
|
|
:rtype: string
|
|
|
|
For more information, please refer to the `PHP manual for
|
|
hash_pbkdf2() <http://php.net/hash_pbkdf2>`_.
|
|
|
|
****************
|
|
Multibyte String
|
|
****************
|
|
|
|
This set of compatibility functions offers limited support for PHP's
|
|
`Multibyte String extension <http://php.net/mbstring>`_. Because of
|
|
the limited alternative solutions, only a few functions are available.
|
|
|
|
.. note:: When a character set parameter is ommited,
|
|
``$config['charset']`` will be used.
|
|
|
|
Dependencies
|
|
============
|
|
|
|
- `iconv <http://php.net/iconv>`_ extension
|
|
|
|
.. important:: This dependency is optional and these functions will
|
|
always be declared. If iconv is not available, they WILL
|
|
fall-back to their non-mbstring versions.
|
|
|
|
.. important:: Where a character set is supplied, it must be
|
|
supported by iconv and in a format that it recognizes.
|
|
|
|
.. note:: For you own dependency check on the actual mbstring
|
|
extension, use the ``MB_ENABLED`` constant.
|
|
|
|
Function reference
|
|
==================
|
|
|
|
.. php:function:: mb_strlen($str[, $encoding = NULL])
|
|
|
|
:param string $str: Input string
|
|
:param string $encoding: Character set
|
|
:returns: Number of characters in the input string or FALSE on failure
|
|
:rtype: string
|
|
|
|
For more information, please refer to the `PHP manual for
|
|
mb_strlen() <http://php.net/mb_strlen>`_.
|
|
|
|
.. php:function:: mb_strpos($haystack, $needle[, $offset = 0[, $encoding = NULL]])
|
|
|
|
:param string $haystack: String to search in
|
|
:param string $needle: Part of string to search for
|
|
:param int $offset: Search offset
|
|
:param string $encoding: Character set
|
|
:returns: Numeric character position of where $needle was found or FALSE if not found
|
|
:rtype: mixed
|
|
|
|
For more information, please refer to the `PHP manual for
|
|
mb_strpos() <http://php.net/mb_strpos>`_.
|
|
|
|
.. php:function:: mb_substr($str, $start[, $length = NULL[, $encoding = NULL]])
|
|
|
|
:param string $str: Input string
|
|
:param int $start: Position of first character
|
|
:param int $length: Maximum number of characters
|
|
:param string $encoding: Character set
|
|
:returns: Portion of $str specified by $start and $length or FALSE on failure
|
|
:rtype: string
|
|
|
|
For more information, please refer to the `PHP manual for
|
|
mb_substr() <http://php.net/mb_substr>`_.
|
|
|
|
******************
|
|
Standard Functions
|
|
******************
|
|
|
|
This set of compatibility functions offers support for a few
|
|
standard functions in PHP that otherwise require a newer PHP version.
|
|
|
|
Dependencies
|
|
============
|
|
|
|
- None
|
|
|
|
Function reference
|
|
==================
|
|
|
|
.. php:function:: array_column(array $array, $column_key[, $index_key = NULL])
|
|
|
|
:param array $array: Array to fetch results from
|
|
:param mixed $column_key: Key of the column to return values from
|
|
:param mixed $index_key: Key to use for the returned values
|
|
:returns: An array of values representing a single column from the input array
|
|
:rtype: array
|
|
|
|
For more information, please refer to the `PHP manual for
|
|
array_column() <http://php.net/array_column>`_.
|
|
|
|
.. php:function:: hex2bin($data)
|
|
|
|
:param array $data: Hexadecimal representation of data
|
|
:returns: Binary representation of the given data
|
|
:rtype: string
|
|
|
|
For more information, please refer to the `PHP manual for hex2bin()
|
|
<http://php.net/hex2bin>`_.
|