Функции Язык программирования PHP

array_splice

(PHP 4)

array_splice - удаляет часть массива и замещает её чем-либо.

Описание

array array_splice (array input, int offset [, int length [, array replacement]])

array_splice() удаляет элементы, указанные смещением offset и длиной length из массива input и замещает их элементами массива replacement, если он предоставлен. Функция возвращает массив, содержащий извлечённые элементы.

Если offset положительное, то удаляемая часть отсчитывается смещением от начала массива input. Если offset отрицательное, то удаляемая часть начинается на указанную величину от конца массива input.

Если length отсутствует, удаляется всё, начиная от offset до конца массива.
Если length специфицирована и положительная, удаляется указанное количество элементов.
Если length специфицирована и отрицательная, то конец удаляемой части будет находиться на указанное количество элементов от конца массива.
Подсказка: для удаления элементов от offset до конца массива, когда replacement также специфицирован, используйте count($input) для length.

Если массив replacement специфицирован, то удаляемые элементы замещаются элементами из этого массива. Если offset и length таковы, что ничего не удаляется, то элементы массива replacement вставляются вместо специфицированных смещением offset.
Подсказка: если replacement это один элемент, нет необходимости помещать array() вокруг него, если только элемент сам по себе не является массивом.

Следующие эквиваленты:
array_push 
($input, $x, $y) array_splice ($input, count ($input), 0, array ($x, $y)) array_pop 
($input) array_splice ($input, -1) array_shift ($input) array_splice ($input, 
0, 1) array_unshift ($input, $x, $y) array_splice ($input, 0, 0, array ($x, $y)) 
$a[$x] = $y array_splice ($input, $x, 1, $y)

возвращают массив, состоящий из удалённых элементов.

Пример 1. array_splice()
$input = array ("red", "green", "blue", "yellow"); array_splice ($input, 
2); // $input это теперь массив ("red", "green") $input = array ("red", "green", 
"blue", "yellow"); array_splice ($input, 1, -1); // $input это теперь массив ("red", 
"yellow") $input = array ("red", "green", "blue", "yellow"); array_splice ($input, 
1, count($input), "orange"); // $input это теперь массив ("red", "orange") $input 
= array ("red", "green", "blue", "yellow"); array_splice ($input, -1, 1, array("black", 
"maroon")); // $input это теперь массив ("red", "green", // "blue", "black", "maroon")

См. также array_slice().

Apache-модуль

Когда PHP используется как Apache-модуль, он наследует пользовательские права доступа Apache'а (обычно это пользователь "nobody"). Это оказывает влияние на обеспечение безопасности и авторизации. Например, если вы используете PHP для доступа к базе данных, и если эта БД не имеет встроенного контроля доступа, вы должны будете обеспечить доступ к этой БД для пользователя "nobody". В этом случае зловредный скрипт может получить доступ к БД и изменить её, даже не имея имени и пароля. Тогда хакер сможет получить доступ к web-странице администратора БД и уничтожить все ваши БД. Защититься от этого можно с помощью авторизации Apache, или разработав вашу собственную модель доступа с использованием LDAP, .htaccess-файлы, etc. и включив этот код как часть ваших PHP-скриптов.

Часто, когда безопасность установлена на таком уровне, где PHP-пользователь (в данном случае - пользователь Аpache) имеет минимальный риск вторжения, обнаруживается, что у PHP отсутствует возможность записывать в любые файлы пользовательских директорий. Или, возможно, отсутствует возможность доступа к, или изменения, БД. Поставлена защита от записи как "хороших", так и "плохих" файлов, или выполнения как "хороших", так и "плохих" транзакций.

Обычной ошибкой бывает в этом случае предоставление доступа apache root или расширение возможностей Аpache'а каким-нибудь другим способом.

Увеличение пользовательского доступа Apache'а к корневой директории/root очень опасно и может завалить всю систему, поэтому sudo, chroot или другой подобный запуск как root не должен выполняться теми, кто не считает себя профессионалами в вопросах безопасности.

Есть несколько простых решений. Используя open_basedir, вы можете управлять ограничением количества директорий, которые могут использоваться PHP. Вы можете также установить области apache-only, ограничив web-активность не-пользовательскими или не-системными файлами.