вывод данных из базы, заточенный на авторизированного в данный момент юзера

looklike

Новичок
приветствую! у меня не получается сделать вывод данных для авторизированного пользователя, завязанный на его id.
идея такая: пользователь логинится, в сессии запоминается его id, соответствующий id в базе данных, после логина юзер может переходить в разные разделы, где ему будет выводиться информация, релевантная для этого конкретного залогиненного юзера. пароли и логины хранятся в базе


вот мои попытки.
страница логина
Код:
<?php
if (session_status() === PHP_SESSION_ACTIVE) {
session_unset();
session_destroy();
}
 session_start();
$host="localhost";//server
$dbName="rooftop_vol1";
$login="mysql";
$pswrd="mysql";

$connect = mysql_connect("$host","$login","$pswrd");

mysql_query("SET NAMES 'utf-8'");                                                            
   
if (isset ($_POST['loginbtn'])){ //if exists loginbutton then
        $login = $_POST['login']; //$login equals value from inputbox 'login'
        $password = $_POST['passinput'];//and password the same way
 }
                               
 $query_string = "SELECT * from users WHERE login = '".$login."'";   
 $query = mysql_query($query_string);
 $myrow = mysql_fetch_array($query);//search in query results, returns array or FALSE
$qu2 = mysql_query("SELECT user_id from users WHERE login = '".$login."'");//find user's id
   $id = mysql_fetch_array($qu2); //get user's id
$_SESSION['iduser'] = $id; //id goes to session for current user                           
 if ($login == $myrow['login']){ //equality of inputed data and data from db
 if ($password == $myrow['password']){                                                             
 header("Location: menu.php");
      }
страница, на которой должно выводиться что-то для залогиненного юзера

Код:
<?php 
session_start();
$host="localhost";//server
$dbName="rooftop_vol1";
$login="mysql";
$pswrd="mysql";

$connect = mysql_connect("$host","$login","$pswrd");
mysql_select_db("$dbName",$connect);
mysql_query("SET NAMES 'utf-8'");
 $v = "SELECT prod_name FROM users_and_prod WHERE user_id = ".$_SESSION['iduser']."";
    $resultt = mysql_query($v) or die(mysql_error());
    while ($row = mysql_fetch_array($resultt)){
    echo "Имя: ".$row['username'];
    echo "Модель изделия: ".$row['prod_name'];
    }  
?>
в итоге получаю ошибку, которую не понимаю:

Unknown column 'Array' in 'where clause'



предупреждаю возможный вопрос "почему ты в каждой странице подключаешь базу по-новой, вместо того, чтоб сделать include"config.php", где все то же самое можно было бы сделать один раз?"
у меня был конфиг.пхп, но почему-то не все страницы видят базу с его помощью. исправив несколько раз подобные баги копипастой всех настроек прямо в код, я решила делать так до тех пор, пока красивый код не останется единственной проблемой этого проекта (о, как я жду, когда наступят эти времена!)

в общем, резюмирую: как сделать вывод данных из базы, заточенный на авторизированного в данный момент юзера? можно ли вообще это сделать таким способом?
очень надеюсь на помощь, заранее спасибо!
 

AnrDaemon

Продвинутый новичок
Чего ты не понимаешь? Ты вместо строки массив лепишь. О чём тебе ошибка английским по белому пишет.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
У меня вопрос.

if (session_status() === PHP_SESSION_ACTIVE) {
session_unset();
session_destroy();
}
session_start();
Зачем убить сессию, потом ее рестартить?

$connect = mysql_connect("$host","$login","$pswrd");
Кавычки, вы серьезно?

$query_string = "SELECT * from users WHERE login = '".$login."'";
Прямо вот так не надо делать. Надо как-то фильтровать данные при вставке в запрос. Использовать плейсхолдеры.

mysql_fetch_array - хреновая функция, лучше юзать mysql_fetch_assoc, а еще лучше - забыть про mysql и юзать PDO.

PS: Вообще надо заниматься отладкой, то есть посмотреть что же лежит у тебя в $_SESSION['iduser'] и почему там лежит массив.
 

CoolKid

Новичок
Вместо
Код:
$id = mysql_fetch_array($qu2); //get user's id
$_SESSION['iduser'] = $id; //id goes to session for current user
Попробуй так
Код:
$id = mysql_fetch_array($qu2); //get user's id
$_SESSION['iduser'] = $id['user_id']; //id goes to session for current user
 

looklike

Новичок
У меня вопрос.

Зачем убить сессию, потом ее рестартить?
Потому что так я решила проблему того, что ничего не работало т.к. сессия уже начата. То есть, совсем не работало, а не просто ворнинг. Насколько я поняла впоследствии, это тоже нужно переделать, я уже даже видела соответствующий раздел в faq. Пока же я это не трогаю, повторюсь, моя первоочередная задача сделать так, чтобы все работало, а не не работало.
Кавычки, вы серьезно?
А что не так с ними? Кавычки использовались в уроках, по которым я это делала, я, что очевидно, в пхп полный нуб. Чем плохи кавычки? Их нужно заменить на ' '?
mysql_fetch_array - хреновая функция, лучше юзать mysql_fetch_assoc, а еще лучше - забыть про mysql и юзать PDO.
Спасибо! Про эту функцию мне было полезно узнать, в итоге я воспользовалась ею, и все получилось.



Вместо
Код:
$id = mysql_fetch_array($qu2); //get user's id
$_SESSION['iduser'] = $id; //id goes to session for current user
Попробуй так
Код:
$id = mysql_fetch_array($qu2); //get user's id
$_SESSION['iduser'] = $id['user_id']; //id goes to session for current user
Спасибо! Это мне очень помогло.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Да, похвально, что
моя первоочередная задача сделать так, чтобы все работало, а не не работало.
Но только код еще надо писать правильно. Кавычки там, к примеру, вообще не нужны.

PS: А можно узнать, что же это за уроки?
 

Фанат

oncle terrible
Команда форума
Да во всех это написано. Обезьяны же сами толком ничего не умея берутся учить других, и копируют друг у друга, "учителя" фиговы.
 
Сверху