#php #arrays #wordpress #session
Вопрос:
Я не настолько дружелюбен к кодированию, потратил почти 5 дней на поиск решения. Недавно сменил хостинг, а потом это начало происходить. В то же время также получил другие предупреждения, такие как
«Предупреждение: Не удается изменить информацию о заголовке — заголовки уже отправлены (вывод запущен в /var/www/u1524808/genericpanda.com/wp-содержимое/темы/pillshope/функции.php:278) в /var/www/u1524808/genericpanda.com/wp-login.php на линии 400»
и из-за этого я не могу войти в панель управления WordPress. Действительно переживаю трудные времена. Вот функция, в которой я получаю ошибку. Действительно нужна помощь, заранее спасибо!!!
function register_my_session() { if (!session_id()) { session_start(); } $_SESSION['cart']=''; if ($_SERVER["REQUEST_METHOD"] == "POST") { array_push($_SESSION['cart'], $_POST); } } add_action('init', 'register_my_session');
Комментарии:
1.
themes/pillshope/functions.php:278
уже отправил вывод, поэтомуsession_start()
не может работать. Возможно, было бы хорошей идеей опубликовать соответствующую часть этого файла
Ответ №1:
Две вещи
- вывод уже отправлен, поэтому не используйте session_start (), однако, если вы хотите добавить и передать предупреждение, напишите это так
@session_start()
- array_push($_SESSION[‘корзина’], $_POST);
$_SESSION может быть массивом, $_SESSION[‘корзина’] имеет пустую строку, как вы назначили ее с пустыми кавычками («)
$_SESSION['cart'] = ''
поэтому, когда вы пытаетесь вставить данные в $_SESSION[‘корзина’], это предупреждает вас
Вы можете либо написать $_SESSION[‘корзина’] = [], и тогда ваш код будет работать, либо
array_push($_SESSION['cart'], $_POST);
может быть
array_push($_SESSION, $_POST);
но более поздняя часть может стереть все остальные данные SESSON, поэтому я предлагаю вам выбрать первую альтернативную замену
$_SESSION['cart'] = ''
с
$_SESSION['cart'] = []
и попробуй.
Комментарии:
1. @Роберт, если это сработало, давайте отметим, что ответ принят, чтобы кто-то другой мог учиться или проводить исследования. Спасибо!
Ответ №2:
Вы используете array_push, но ваш $_SESSION [«корзина»] является строкой, потому что вы инициализируете ее как»», но вместо этого вы должны сделать $_SESSION [«корзина»] = массив()