Что за массив такой? PHP

12
D
На сайте с 28.06.2008
Offline
980
1230

Учу пхп, в очередном задании нужно проверить авторизован ли юзер.

Ну думаю, нужно проверять куку, она простейшая

array (size=2)
'login' => string 'user' (length=4)
'password' => string '123' (length=3)

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

База хранится в файле в виде массива

<?php

return [ ['login' => 'admin', 'password' => 'P@ssw0rd'],
['login' => 'moderator', 'password' => 'password'],
['login' => 'user', 'password' => '123'],
];

Ну думаю щас инклюдом подключу и фореейчем пробегусь, но дальше у меня затык. Массив то без $ в начале.

Его получается только функцией прочитать можно?

Подскажите плиз как к нему подключиться?

J
На сайте с 12.11.2014
Offline
36
#1
Dram:
Учу пхп, в очередном задании нужно проверить авторизован ли юзер.
Ну думаю, нужно проверять куку, она простейшая

и чтобы избежать подделок куки, нужно сверять логин и пароль с теми что в базе.
База хранится в файле в виде массива

Ну думаю щас инклюдом подключу и фореейчем пробегусь, но дальше у меня затык. Массив то без $ в начале.
Его получается только функцией прочитать можно?

Подскажите плиз как к нему подключиться?

А что тебя смутило в массиве? $array = include 'имя файла с массивом.php';

D
На сайте с 28.06.2008
Offline
980
#2

Вроде почти сделал но где-то ошибка:

<?php
var_dump($_COOKIE);
$array = require __DIR__ . '/usersDB.php';
$_COOKIE['password'] = $a;
foreach ($array as $user) {
if ($a === $password) {

echo 'da';
break;
}else {
echo 'no';
}
}
echo '<br>';
echo $_COOKIE['login'];
echo '<br>';
echo $_COOKIE['password'];

вывод

array (size=2)
'login' => string 'user5' (length=5)
'password' => string '1235' (length=4)

da
user5

Почему не выводится echo $_COOKIE['password'] ? Хотя через var_dump($_COOKIE); пароль показывается.

edogs software
На сайте с 15.12.2005
Offline
714
#3

Dram,

Вы в 4 строке занесли в $_COOKIE['password'] какую-то неизвестную $a (не определённую в рамках этого скрипта), тем самым перезаписав его (куки-пассворда) исходное значение.

p.s.: $password у Вас в рамках этого скрипта тоже неопределён, поэтому если это полный скрипт, то сравнивая "неопределенное а" с "неопределенным пассворд" Вы естественно получаете "тру".

p.p.s.: Во время разработки работайте с включенными нотисами и подобные проблемы будут возникать намного реже.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход.
KV
На сайте с 22.12.2011
Offline
70
#4

А Вы пароли храните в базе без шифрования?

md5, не?

Как бы на тебя ни давили, никогда не соглашайся на роль, что тебе не нравится
LEOnidUKG
На сайте с 25.11.2006
Offline
1554
#5
K_V_S:
А Вы пароли храните в базе без шифрования?
md5, не?

Читаем внимательно:

Учу пхп,

Какие там БД и какие md5?

✅ Трастовых площадок под размещение статей и ссылок. Опыт 12 лет! ( https://searchengines.guru/ru/forum/675690 ) ⭐ Купить вечные трастовые ссылки для сайта ( https://getmanylinks.ru/?srh ) ⭐ Ускорение ваших сайтов (WP, Opencart и др.) + Настройка сервера ( https://searchengines.guru/ru/forum/997205 )
KV
На сайте с 22.12.2011
Offline
70
#6
LEOnidUKG:
Читаем внимательно:



Какие там БД и какие md5?

Прочтите внимательно. У него ЕСТЬ база, где он хранит пароли. БЕЗ шифрования.

Я что, зря? Я же знаю, зачем и кому это нужно :) Это нужно тем, кто пока УЧИТ. Я сама учила, в прямом смысле этого слова — САМА.

Жаль, что серч так дико тормозит сейчас. Возможно, это из-за попыток подключения я.статика, который в Украине не грузится (все знают,почему). Увы.

LEOnidUKG
На сайте с 25.11.2006
Offline
1554
#7
У него ЕСТЬ база, где он хранит пароли. БЕЗ шифрования.

Это вы прочитайте, там просто массив данных для теста. Урок не про БД и шифрование.

KV
На сайте с 22.12.2011
Offline
70
#8
LEOnidUKG:
Это вы прочитайте, там просто массив данных для теста. Урок не про БД и шифрование.

При чем здесь урок? Он изначально неправильно учит, это, по Вашему, правильно?

Сразу нужно знать, что пароли в базе хранят в md5 или по выбору.

Это — правильно, а не когда мне присылают с некоторых сайтов мною же введенный пароль, чтобы я "не забыла".

Спасибо, но пароли честный программист сразу же будет шифровать, чтобы самому же не соблазниться :)

edogs software
На сайте с 15.12.2005
Offline
714
#9
K_V_S:
При чем здесь урок? Он изначально неправильно учит, это, по Вашему, правильно?

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

K_V_S:
Сразу нужно знать, что пароли в базе хранят в md5 или по выбору.

Решение c md5 не особо более правильное чем используемое ТС, т.к. md5 по уму похоронили уже лет 10 назад, рядом с могилой несоленных паролей. Что за некрофилия в топике?

K_V_S:
Это — правильно, а не когда мне присылают с некоторых сайтов мною же введенный пароль, чтобы я "не забыла".

И в этом нет ничего страшного, если это реализовано правильно. Если Вы не знаете как это корректно и приемлимо безопасно реализовать, разве эти сайты в этом виноваты?

K_V_S:
Спасибо, но пароли честный программист сразу же будет шифровать, чтобы самому же не соблазниться :)

Опять же неверно. Если программер нечестный, он в любой момент может узнать пароль просто прочитав что от Вас пришло в запросе из браузера. А если честный, то и шифровать ему их не особо надо.

P.S.: Сейчас начнется 😂

D
На сайте с 28.06.2008
Offline
980
#10

LEOnidUKG, edogs, правы - просто учу конкретный урок.

Вот к чему пришел с утра.

<?php
var_dump($_COOKIE);
$array = require __DIR__ . '/usersDB.php';
$a = $_COOKIE['password'];
foreach ($array as $password) {
if ($password === $a) {

echo 'da';
break;
}else {
echo 'no';
}
}
echo '<br>';
echo $a;
echo '<br>';
echo $_COOKIE['password'];
echo '<br>';
echo $password;

дает вывод

array (size=2)
'login' => string 'user' (length=4)
'password' => string '123' (length=3)
nonono
123
123
Array

почему то не выводит echo $password;

а usersDB.php это код

<?php

return [ ['login' => 'admin', 'password' => 'P@ssw0rd'],
['login' => 'moderator', 'password' => 'password'],
['login' => 'user', 'password' => '123'],
];
12

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