Является ли эта плохая практика / может вызвать проблемы?
$_SESSION['stuff to keep']
В отличие от вызова str_replace()
по индексам.
Это плохая практика, но не из-за пространства.
// file foo.php $_SESSION['stuff to keep'] = 42; // file bar.php if ($_SESSION['stufft o keep'] == 42) frobnicate();
Здесь ваш код бесшумно нарушает правила, и ошибка может занять некоторое время. Хорошей практикой является использование PHP-принудительного имени, такого как константа класса:
$_SESSION[Stuff::TO_KEEP] = 42; if($_SESSION[Stuff::TOO_KEEP] == 42) // error: no constant TOO_KEEP in class Stuff
Затем вы можете определить эту константу для любой константы, которую вы найдете интересной или читаемой, например, "stuff to keep"
(с пробелами). Конечно, extract()
и casting to object
больше не будут работать, но вы не должны делать это в любом случае со своей сессией.
Внесение введенного пользователем текста в ключи сеанса – это, конечно, вопиющая ошибка безопасности.
Вы можете это сделать, это сработает – и даже если я вообще не делаю этого, когда я устанавливаю ключи своих массивов «вручную», иногда это происходит, когда я получаю ключи из файла (например) , и у меня никогда не было проблем с этим.
Возможно, это может вызвать какую-то проблему, если вы используете функции extract
. Если он создает переменные с пробелами в своих именах (не знаю, будет ли это), будет сложно (но не невозможно) получить доступ к вашим переменным.
Это не вызовет проблемы, но ключи массива обычно считаются именами переменных, поэтому их следует выбирать с одинаковыми соображениями
Кажется, добавление лишних пробелов по моему мнению … Обычно я не использую пробелы. Если вы это сделаете, убедитесь, что вы указываете ключи массива.