Добрый вечер. Использую последнюю версию XAMPP c версией PHP 7.0.9 Делаю сайт с валидацией формы по уроку на ютубе: Код (Text): https://youtu.be/Epej2kWxH8M?list=PLB8wmVoWIIx5vDttXncH_WXF_JjC7PIjc На 20 минуте этого видео идет проверка валидации формы - у меня же выводит ошибку Notice: Undefined variable: Module in C:\xampp\htdocs\form\account.php on line 3 1) Как я понимаю это либо переменная $Module не видима в файле account.php хотя include('form/account.php'); присутствует в файле index.php и переменная $Module должна быть видимой в файле account.php 2) Либо не корректная проверка if ($Module == 'register' and $_POST['enter']) Прошу помощи - как убрать ошибку. Причем когда убираю из if - $Module == 'register' and то валидация успешно работает. Понимаю, что урок старый, аж 2014 года и код корявый может быть - но все же прошу у знатоков помощи. Архивы с готовым кодом (Урок 4) находится на Яндекс-ДИСКЕ Коды файлов: index.php где идет определение URL PHP: <?php // Подключаем файл setting.php include_once 'setting.php'; // Стартуем сессии session_start(); // В переменную $CONNECT вносим подключение к нашей БД $CONNECT = mysqli_connect(HOST, USER, PASSWORD, DATABASE); // Код определяет какую страницу подгружать пользователю // Переменная $_SERVER['REQUEST_URI'] - это глобальная переменная // Переменная $Page - это имя страницы // Переменная $Module - это имя модуля // Переменная $URL_Path разбивает адрес url на части // Переменная $URL_Parts if ($_SERVER['REQUEST_URI'] == '/') { $Page = 'index'; $Module = 'index'; } else { $URL_Path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); $URL_Parts = explode('/', trim($URL_Path, ' /')); $Page = array_shift($URL_Parts); if (!empty($Module)) { $Param = array(); for ($i = 0; $i < count($URL_Parts); $i++) { $Param[$URL_Parts[$i]] = $URL_Parts[++$i]; } } } if ($Page == 'index') include('page/index.php'); else if ($Page == 'login') include('page/login.php'); else if ($Page == 'register') include('page/register.php'); else if ($Page == 'account') include('form/account.php'); function FormChars($p1) { return nl2br(htmlspecialchars(trim($p1), ENT_QUOTES), false); } function Head($p1) { echo '<!DOCTYPE html><html><head><meta charset="utf-8" /><title>'.$p1.'</title><meta name="keywords" content="" /><meta name="description" content="" /><link href="http://localhost/resource/style.css" rel="stylesheet"></head>'; } function Menu () { echo '<div class="MenuHead"><a href="/"><div class="Menu">Главная</div></a><a href="/register"><div class="Menu">Регистрация</div></a><a href="/login"><div class="Menu">Вход</div></a></div>'; } function Footer () { echo '<footer class="footer">Mr.Shift - <a href="https://www.youtube.com/channel/UCpEWlcj5rkU1H9vkIf9Lb5g" target="blank">Мой канал на You Tube</a> - Пишем свой движок на PHP</footer>'; } ?> Файл register.php где вводят данные чтобы зарегистрироваться на сайте. PHP: <?php Head('Главная страница') ?> <body> <div class="wrapper"> <div class="header"></div> <div class="content"> <?php Menu() ?> <div class="Page"> <h3>Заполните форму:</h3> <form method="POST" action="/account/register"> <br><input type="text" name="login" placeholder="Логин"> <br><input type="email" name="email" required placeholder="E-mail"> <br><input type="password" name="password" required placeholder="Пароль"> <br><input type="text" name="name" required placeholder="Имя"><br> <br><select size="1" name="country"> <option value="0">Не скажу</option> <option value="1">Украина</option> <option value="2">Россия</option> <option value="3">США</option> <option value="4">Канада</option> </select><br> <br><input type="file" name="avatar"><br> <br><input type="submit" name="enter" value='Регистрация'> <input type="reset" value='Очистить'> </form> </div> </div> <?php Footer() ?> </div> </body> </html> Файл aсcount.php где идет проверка, валидация форм введенных в register.php PHP: <?php if ($Module == 'register' and $_POST['enter']) { $_POST['login'] = FormChars($_POST['login']); $_POST['email'] = FormChars($_POST['email']); $_POST['password'] = FormChars($_POST['password']); $_POST['name'] = FormChars($_POST['name']); $_POST['country'] = FormChars($_POST['country']); $_POST['avatar'] = FormChars($_POST['avatar']); if (!$_POST['login'] or !$_POST['email'] or !$_POST['password'] or !$_POST['name']) { exit('Ошибка валидации формы.'); } else echo 'Валидация формы прошла успешно!'; } ?> Спасибо всем за поддержку!
Может я не прав, но по ходу, если $_SERVER['REQUEST_URI']!='/', то $Module не будет инициализирована, поскольку в строках 24-35 нету присвоения ей значения. Урок не смотрел - лень, глянул только ваш код. Мне кажется, дело в этом
+ у вас переменная не обьявляется $Module если не дефолт страница PHP: if (!empty($Module)) { $Param = array(); for ($i = 0; $i < count($URL_Parts); $i++) { $Param[$URL_Parts[$i]] = $URL_Parts[++$i]; } } Но заметим что есть другая переменка отвечающая за это $Page, Следовательно - можно в аккаунт.пхп заменить название $Module на $Page --- Добавлено --- да и книга не грамотная, код "тяп-ляп" уже ясно: Код (Text): $Row = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `login` FROM `users` WHERE `login` = '$_POST[login]'"));
а да ты в index забыл: PHP: $URL_Path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); $URL_Parts = explode('/', trim($URL_Path, ' /')); $Page = array_shift($URL_Parts); $Module = array_shift($URL_Parts); --- Добавлено --- хотя можно было так замутить: $Module = $Page = array_shift($URL_Parts);
читайте по внимательнее. Книгу смените. Автор Говнокодер --- Добавлено --- ты издеваешься? глотая все предыдущие посты, нечем больше тебе помочь. Удачи --- Добавлено --- @mkramer сорь, на автора не посмотрел
Спасибо !!! ошибка перестала появляться )) но самое удивительное что просто белый экран и все ))) как быть ?
debug/отладка http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html https://php.ru/forum/threads/howto-...i-po-shagam-i-s-kartinkami.58974/#post-474550