Arthur'); DROP TABLE Users;--
Arthur'); DROP TABLE Users;--
а я то думал
Arthur'); DROP TABLE Users;--
серьёзно, знает кто?
Виталий
серьёзно, пыха так не умеет
Алексей
вот щас серьезно..... все переменные в пыхе после доллара идут
Виталий
Алексей
эм.... $$var
Алексей
название или ее значение?
Юрий
что имеется в виду?
Алексей
get_defined_vars
Алексей
Вот я щас тоже пальцем в небо тыкаю, ибо нихрена не понятно что человек хочет
Виталий
Не, как я понял, чел хочет динамически узнать, как именована переменная, аля
$foo = 'bar';
и вот из этой переменной получить foo
Виталий
Но вообще дичь какая-то
Алексей
Я думаю его решение есть где то на сайте http://govnokod.ru/php
Arthur'); DROP TABLE Users;--
это в Voyager пакете есть но я потерял где это
Arthur'); DROP TABLE Users;--
там динамически создаваемые модели
Arthur'); DROP TABLE Users;--
их миграции и т.д. поэтому используется имя переменной
Gabit
function print_var_name($var) { foreach($GLOBALS as $var_name => $value) { if ($value === $var) { return $var_name; } } return false; }
Anonymous
Добрый день ребята! Подскажите что не так делаю
if(checkUser($id)){
echo $user;
}
---
function checkUser($id){
global $mysqli;
$query = $mysqli->query("select * from `users` where `id` = $id");
if($query->num_rows) return $user = $query->fetch_object();
else return false;
}
---
Anonymous
Проверяю есть ли пользователь в базе
Anonymous
Если есть нужно вернуть модель пользователя
Виталий
Ой ой..
Тут все очень плохо
Виталий
Во первых глобальная переменная mysqli. Не надо так.
Anonymous
А что если я сначала буду делать checkUser();
Anonymous
А потом что то типа getUser();
Anonymous
А как надо подскажите Виталий?
Vladimir
Парень, сотри свой код, и читай что такое модели и Eloquent
Виталий
Во вторых у тебя checkUser возвращает модель, но ты её не присваиваешь никакой переменной
Юрий
Anonymous
Если $mysqli не объявить как глобавльную то она будет доступна внутри функции
Юрий
Сексист)
Vladimir
Ой
Vladimir
Сорри)
Виталий
Вернее присваиваешь $user но в локальной области видимости функции
Виталий
Тут на самом деле все очень плохо
Виталий
Для начала советую подучить php в целом
Anonymous
function checkUser($user_id){
global $mysqli;
// поиск пользователя по user_id
$query = $mysqli->query("select * from `users` where `user_id` = {$user_id}");
if($query->num_rows){
// если пользователь найден
return true;
}
else{
// если пользователь не найден
return false;
}
}
function getUser($user_id){
global $mysqli;
$query = $mysqli->query("select * from `users` where `user_id` = {$user_id}");
return $user = $query->fetch_object();
}
invariance
Anonymous
Это просто php код
invariance
Так, в чем проблема?
Anonymous
В Laravel $user = App\User::findOrFail($id);
invariance
но это ж просто php код) Я имею ввиду, вы на фреймворке делаете что-то или без
Anonymous
Проверяю есть ли пользователь в базе. Потом нужно получить либо пользователя с данными либо false
Anonymous
Без фреймворка
Anonymous
Головый php + mysqli
Anonymous
Даже PDO не могу использовать
invariance
а laravel тут причем? :D
Anonymous
Задание на mysqli
invariance
Anonymous
Если знаешь Laravel значит знаешь PHP
invariance
о_О
Anonymous
Тут ребята более адекватные нежели в phpgeeks
Anonymous
Там спросишь что нить и начинается
Eugene Goose
invariance
Eugene Goose
Anonymous
Так что на счет глобального объявления внутри функции $mysqli
invariance
но их можно просто забанить, если будут неадекватить 👌🏻
pzrk
Anonymous
Насколько это плохо?
Anonymous
И почему?
Anonymous
Безопасность, подводные камни? Что?
invariance
invariance
нарушение принципа инкапсуляции
Anonymous
Но как тогда получить данные внутри функции?
invariance
Anonymous
Ну да. Нужно же что то вернуть
invariance
Как это должно работать:
invariance
вы подаете данные в функцию в виде аргументов
invariance
функция обрабатывает их и возвращает результат
invariance
никакие global не нужны
Anonymous
А как сделать запрос к базе?
Anonymous
Если $mysqli является глобавльно?
invariance
$mysqli должен создаваться в области определения функций
invariance
а не внутри функции
invariance
тогда он будет доступен для использования внутри всех функций
Anonymous
Или внутри функции создать новую $mysqli = new mysqli()
pzrk
invariance