Неизвестная переменная и Undefined index: url

G
На сайте с 24.11.2010
Offline
63
3033

Всем привет!

Включил все ошибки и предупреждения и вылезли две ошибки... Пока-что не могу вникнуть как исправить эти ошибки, надеюсь, вместе мы сможем понять.

Первая ошибка на странице с регистрацией:

Notice: Undefined variable: errors in controllers\main.php on line 40

40 строчка:

renderView('registration', $errors);

Вот весь код:

function action_registration(){

if($_SERVER['REQUEST_METHOD'] == 'POST'){
$formData = [ 'login' => getSaveData(htmlspecialchars(trim($_POST['login']))),
'password' => getSaveData(trim($_POST['password'])),
'email' => getSaveData(trim($_POST['email']))
];
$rules = [ 'login' => ['required', 'login'],
'password' => ['required','password'],
'email' => ['required','email']
];
$errors = validateForm($rules, $formData);
if(empty($errors)){
$formData['password'] = md5($formData['password'].SECRET_KEY);
//$sql = "INSERT INTO `user` (`login`, `password`, `email`) VALUES ('{$formData['login']}','{$formData['password']}','{$formData['email']}') ON DUPLICATE KEY UPDATE login='{$formData['login']}', password='{$formData['password']}', email='{$formData['email']}'";
$sql = "INSERT INTO `user`(`login`, `password`, `email`) VALUES ('{$formData['login']}','{$formData['password']}','{$formData['email']}')";
$sql1 = "SELECT id FROM user WHERE login='{$formData['login']}' or email='{$formData['email']}'";
$res = selectData($sql1);
if($res->num_rows === 0){
}
if(insertUpdateDelete($sql)) {
header("Location: /main/successReg");
}else{
echo 'Пользователь с таким логином или почтой уже существует. :(';
}
}
}
renderView('registration', $errors);

Сама страница с регистрацией:

<form method="post">

<input type="text" name="login" value="<?= (isset($_POST['login'])) ? $_POST['login'] : '' ?>"
class="<?= (isset($formErrors['login'])) ? 'errors' : '' ?>"
placeholder="Ваш логин...">
<input type="email" name="email" placeholder="Ваша почта...">
<input type="password" name="password" placeholder="Пароль">
<?php if (isset($formErrors['login'])) :?>
<?php endif;?>
<button>Submit</button>
</form>

Если на странице выводить через дамп $errors - выдает NULL. Но она же прописана в функции...

И вторая ошибка с URL адресом.

Notice: Undefined index: url in \index.php on line 11

11 строчка:

$url = strtolower($_GET['url']);

Дело в том, что если ввожу url/main (главная страница) ошибка исчезает. Как серверу сказать, что это и есть главная страница? Но хоть ошибка и показывается - все ровно все содержимое выводится. То есть, если авторизован пользователь перекидывает на index.php , если нет - пишет Hello guest.

S
На сайте с 30.09.2016
Offline
469
#1

Пишите if(isset(переменная)){действия с этой переменной}, и будет Вам спокойствие.

Или устанавливайте дефолтное значение переменной - по ситуации.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#2

Notice это не ошибка. Можно не обращаться внимание на это.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
S
На сайте с 30.09.2016
Offline
469
#3

LEOnidUKG, вывод замечания не фатален, но всё же желательно этого избегать, чтобы всё было по фэншую. Чтобы интерпретатор не отвлекался на всякую чешую, логи не забивались мусором, и опять же при некоторых обстоятельствах не возникала уязвимость типа раскрытия пути.

SeVlad
На сайте с 03.11.2008
Offline
1609
#4
LEOnidUKG:
Notice это не ошибка. Можно не обращаться внимание на это.

Лучше не обращать внимания на такие вот вредные советы не обращать внимания на системные УВЕДОМЛЕНИЯ.

Интерпретатору наверное заняться больше нечем, вот и шлет кому что попало, ога.

Обращать внимание - нужно. А вот какие делать выводы и предпринимать действия - это дугой вопрос.

ЗЫ. Кстати как-то раз попадалось, когда только по нотису и была вычислена причина косяка, которая приводила к краху страницы. А других ошибок не было.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
PA
На сайте с 12.02.2016
Offline
24
#5
Grep:
И вторая ошибка с URL адресом.
Notice: Undefined index: url in \index.php on line 11
11 строчка:
$url = strtolower($_GET['url']);

собаку позовите :)


$url = strtolower(@$_GET['url']);
или
$url = @strtolower($_GET['url']);

с первым нотисом точно также или собака

renderView('registration', @$errors);

или перед IF-ом присвойте значение эррору:

$errors = '';

. . .
Владимир ААА
На сайте с 02.02.2016
Offline
63
#6

«Notice» не является ошибкой, но является тем, на что стоит обратить внимание и устранить, для чистоты кода. В данном случае акцент делается на то, что не объявлена переменная. Рекомендуется изначально объявить её либо задействовать оператор if в конструкции if(isset(наименование_переменной)){действия}.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий