Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2023, 21:58   #1
gamez
Новичок
Джуниор
 
Регистрация: 22.05.2023
Сообщений: 4
По умолчанию Warning: Undefined array key "success_message"

Код:
<?php 

session_start();

require_once __DIR__ . '/db.php';
require_once __DIR__ . '/addMessage.php';

$form = [
    'email' => '',
    'names' => '',
    'view' => '',
    'content' => '',
];
$errors = [];

if (!empty($_POST)) {

    // loading
    $form['email'] = trim($_POST['email'] ?? '');
    $form['names'] = trim($_POST['names'] ?? '');
    $form['view'] = trim($_POST['view'] ?? '');
    $form['content'] = trim($_POST['content'] ?? '');

    //validate
    if (empty($form['names'])) {
        $errors['names'] = 'Введите names';
    } elseif (mb_strlen($form['names']) < 3) {
        $errors['names'] = 'Минимум 3 символа';
    }

    if (empty($form['email'])) {
        $errors['email'] = 'Введите E-mail';
    } elseif (!filter_var($form['names'], FILTER_VALIDATE_EMAIL)) {
        $errors['email'] = 'Некорректный E-mail';
    }

    // ...

    if (empty($errors)) {

        //action
        $messageId = addMessage($form);
        $_SESSION['success_message'] = "Данные успешно добавлены";
        header('Refresh: 0');
        exit;
    }
}

?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
<?php if ($successMessage = $_SESSION['success_message']):
    unset($_SESSION['success_message']);
?>
    <p style="color: green"><?= $successMessage ?></p>
<?php endif ?>

<form>
    <input type="email" value="<?= htmlspecialchars($form['email']) ?>">
    <?php if (!empty($errors['email'])): ?>
        <span style="color: red"><?= $errors['email'] ?></span>
    <?php endif ?>


</form>

</body>
</html>
Подскажите что не так?
есть еще файл подключения к бд и функция добавления
если надо пришлю их
Спасибо!
gamez вне форума Ответить с цитированием
Старый 23.05.2023, 08:58   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

для начала просто переведите....

потом постарайтесь понять

...
грубо говоря - если представить ассоциативный массив как набор коробочек с именами, где лежит содержимое
вы пытаетесь дать команду - покажи что в коробочке с именем success_message .... а такой коробочки в данный момент в системе нет.... об этом вас и предупреждает php

это бред.... ибо = не сравнение, а присваивание в php... условие будет выполнятся всегда... соотв в сессии это значение всегда будете удалять...

Код:
<?php if ($successMessage = $_SESSION['success_message']):
    unset($_SESSION['success_message']);
?>

для сравнения используется ==
остальной код не лучше... 99.9% переменная $successMessage нигде не определена и никогда не выведется, так же как и $errors
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" Бахтиёр1916 Windows 1 05.04.2017 12:53
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
ошибка в delphi "[Error] WARNING. Duplicate resource(s)" Winexcel Общие вопросы Delphi 5 05.10.2013 13:08
Не получается построить, пишет уже ошибку "undefined processor type", ilvErsat0 Win Api 2 15.04.2013 09:15
Выдаёт ошибку!"Warning: mysql_result() [function.mysql-result" djsliva PHP 2 24.01.2010 15:27