sugarufc
@sugarufc

Сессии в PHP, в чем проблема?

Не знаю как конкретизировать свой вопрос, но всё же постараюсь.
Хочу сделать так, чтобы в поле ввода формы(input value) сохранялась и отображалась информация введенная пользователем после обновления им(пользователем) страницы, для этого использовал следующий код
<input type="text" name="username" value="<?=$_SESSION['reg']['username'];?>"/><br /> 
<input type="text" name="name" value="<?=$_SESSION['reg']['name'];?>"/><br />
и т.д.
Все нормально сохраняется и отображается, но проблема в том, что изначально когда мы переходим на страницу регистрации, в поле ввода отображается ошибка (см. фото)769ce7f7a9ac4fd6a5055f7f031a3483.jpg ,а мне нужно, чтоб оно было пустым.
P.S. Извиняюсь если непонятно описал проблему, но прошу помочь тех кто понял в чем суть.
  • Вопрос задан
  • 2393 просмотра
Решения вопроса 2
laska
@laska
PHP/JS разработчик
Плохой, но рабочий вариант:
<input type="text" name="username" value="<?=@$_SESSION['reg']['username'];?>"/><br /> 
<input type="text" name="name" value="<?=@$_SESSION['reg']['name'];?>"/><br />


На хороший просто намекну:
$username = '';
if (isset($_SESSION['reg']['username'])) {
    $username = $_SESSION['reg']['username'];
}
Ответ написан
mzcoding
@mzcoding
Web-Разработка
Нотис в первом поле как понимаю говорит о том что вы пытаетесь вывести массив как строку.

Вторая пишет, что индекс не найден
Со второй бороться так
<?php
$username = isset($_SESSION['reg']['username']) ?$_SESSION['reg']['username'] : null ;
?>
С первой, проверять почему массив.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@IceJOKER
Web/Android developer
отключите показ НОТИСОВ в продакшн версии и проблем не будет.
Коротко - вызов неизвестной переменной , нужно инициализировать до того как выводить.
можно сделать проверку - если есть $_SESSION['reg']['username'] - выводим его, иначе пустоту
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
а инициализировать пробовали на сервере перед показом формы и заполнять пустыми строками?)
Ответ написан
Комментировать
nobodynoone
@nobodynoone
Используйте вот эту функцию

Source: stackoverflow.com/questions/9555758/php-default-ar...
function get(&$var, $default=null) {
    return isset($var) ? $var : $default;
}

$test = array('foo'=>'bar');
get($test['foo'],'nope'); // bar
get($test['baz'],'nope'); // nope
get($test['spam']['eggs'],'nope'); // nope
get($undefined,'nope'); // nope
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы