Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проверка сессии и вывод имени - PHP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Pavel8897
Отправлено: 12 Сентября, 2017 - 16:08:49
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Авг. 2017  


Помог: 0 раз(а)




Уважаемые форумчане! Есть такая проблема. Не могу вывести FIO при входе на сайт. В БД вся информация находится в одной таблице. ФИО, логин, пароль. Есть скрипт проверки пароля и логина. И при авторизации вывожу логин, но надо что бы вместо логина выводилось FIO из БД.

Код, там где проверка и запись в COOKIE:

PHP:
скопировать код в буфер обмена
  1. $mysqli = new mysqli ("...", "...", "...", "...") or die(mysqli_error());
  2.                 if(isset($_POST['enrbtn'])){
  3.                     if(empty($_POST['login'])){
  4.                         echo '<script>alert("Поле логин не заполненно");</script>';
  5.                     }elseif(empty($_POST['password'])){
  6.                         echo '<script>alert("Пароль не заполнен");</script>';
  7.                     }
  8.                     else{
  9.                         $login= $_POST['login'];
  10.                         $password= $_POST['password'];
  11.                         $query=mysqli_query($mysqli, "SELECT `id` FROM `users` WHERE `Email` = '$login' AND `Password` = '$password'");
  12.                         $result = mysqli_fetch_array($query);  // Формируем переменную с исполнением запроса к БД
  13.                
  14.                 if(empty($result['id'])){
  15.                     echo '<script>alert("Неверные Логин или Пароль");</script>';
  16.                 }else{
  17.                    
  18.                     $_SESSION['password'] = $password;
  19.                     $_SESSION['login'] = $login;
  20.                     $_SESSION['id'] = $result['id'];
  21.                     echo '<div class="log" align="center">'.$_SESSION['login'].'</div>'.'<br>';
  22.                    
  23.                     ?>
  24.                     <script>
  25.                         document.location.href = ('form.php');
  26.                     </script>
  27.                     <?
  28.                     }
  29.                 }
  30.             }


Вывод сессии:

PHP:
скопировать код в буфер обмена
  1. session_start();
  2.         if (isset($_SESSION['login']) && isset($_SESSION['id'])){
  3.             $get = $_SESSION['login'];
  4.             echo '<div class="log2" align="center">'.$get.'</div>'.'<br>';
  5.             ?>
  6.             <script>
  7.                 $('#entline').css('display','none');
  8.             </script>
  9.             <?
  10.         }
 
 Top
Vladimir Kheifets
Отправлено: 12 Сентября, 2017 - 20:32:00
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Pavel8897 пишет:
Уважаемые форумчане! Есть такая проблема. Не могу вывести FIO при входе на сайт. В БД вся информация находится в одной таблице. ФИО, логин, пароль. Есть скрипт проверки пароля и логина. И при авторизации вывожу логин, но надо что бы вместо логина выводилось FIO из БД.

Код, там где проверка и запись в COOKIE:

PHP:
скопировать код в буфер обмена
  1. $mysqli = new mysqli ("...", "...", "...", "...") or die(mysqli_error());
  2.                 if(isset($_POST['enrbtn'])){
  3.                     if(empty($_POST['login'])){
  4.                         echo '<script>alert("Поле логин не заполненно");</script>';
  5.                     }elseif(empty($_POST['password'])){
  6.                         echo '<script>alert("Пароль не заполнен");</script>';
  7.                     }
  8.                     else{
  9.                         $login= $_POST['login'];
  10.                         $password= $_POST['password'];
  11.                         $query=mysqli_query($mysqli, "SELECT `id` FROM `users` WHERE `Email` = '$login' AND `Password` = '$password'");
  12.                         $result = mysqli_fetch_array($query);  // Формируем переменную с исполнением запроса к БД
  13.                
  14.                 if(empty($result['id'])){
  15.                     echo '<script>alert("Неверные Логин или Пароль");</script>';
  16.                 }else{
  17.                    
  18.                     $_SESSION['password'] = $password;
  19.                     $_SESSION['login'] = $login;
  20.                     $_SESSION['id'] = $result['id'];
  21.                     echo '<div class="log" align="center">'.$_SESSION['login'].'</div>'.'<br>';
  22.                    
  23.                     ?>
  24.                     <script>
  25.                         document.location.href = ('form.php');
  26.                     </script>
  27.                     <?
  28.                     }
  29.                 }
  30.             }


Вывод сессии:

PHP:
скопировать код в буфер обмена
  1. session_start();
  2.         if (isset($_SESSION['login']) && isset($_SESSION['id'])){
  3.             $get = $_SESSION['login'];
  4.             echo '<div class="log2" align="center">'.$get.'</div>'.'<br>';
  5.             ?>
  6.             <script>
  7.                 $('#entline').css('display','none');
  8.             </script>
  9.             <?
  10.         }


Добрый вечер! Извините, я не увидел запись в COOKIE в коде "там где проверка и запись в COOKIE:"
У Вас значения передаются через сессию и для этого в первом коде должен быть session_start();
перед:
$_SESSION['password'] = $password;
$_SESSION['login'] = $login;
$_SESSION['id'] = $result['id'];
 
 Top
Pavel8897
Отправлено: 13 Сентября, 2017 - 09:18:06
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Авг. 2017  


Помог: 0 раз(а)




Vladimir Kheifets пишет:
Добрый вечер! Извините, я не увидел запись в COOKIE в коде "там где проверка и запись в COOKIE:"
У Вас значения передаются через сессию и для этого в первом коде должен быть session_start();
перед:
$_SESSION['password'] = $password;
$_SESSION['login'] = $login;
$_SESSION['id'] = $result['id'];


Спасибо большое! Там стоит сессия выше, не прописал просто.
Проблему решил, но теперь появилась другая, с кодировкой. Вместо русского текста вылезают знаки вопроса. Функция iconv не помогает Недовольство, огорчение
 
 Top
Vladimir Kheifets
Отправлено: 13 Сентября, 2017 - 09:51:31
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Pavel8897 пишет:
Спойлер (Отобразить)

Спасибо большое! Там стоит сессия выше, не прописал просто.
Проблему решил, но теперь появилась другая, с кодировкой. Вместо русского текста вылезают знаки вопроса. Функция iconv не помогает Недовольство, огорчение

Доброе утро! У Вас кодировка PHP - UTF-8.
Попробуйте вставить в PHP-код обязательно до <html>(также пробелов и пустых строк не должно быть) cтроку:
PHP:
скопировать код в буфер обмена
  1. ini_set("default_charset", "windows-1251");

или если языков несколько, например, $_GET['sp'] ru,de,en
PHP:
скопировать код в буфер обмена
  1. $ENT=($_GET['sp']=="ru")?"windows-1251":"iso-8859-1";
  2. ini_set("default_charset", $ENT);

(Отредактировано автором: 13 Сентября, 2017 - 09:58:24)

 
 Top
Pavel8897
Отправлено: 13 Сентября, 2017 - 13:20:45
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Авг. 2017  


Помог: 0 раз(а)




Vladimir Kheifets пишет:
Доброе утро! У Вас кодировка PHP - UTF-8.
Попробуйте вставить в PHP-код обязательно до <html>(также пробелов и пустых строк не должно быть) cтроку:
PHP:
скопировать код в буфер обмена

ini_set("default_charset", "windows-1251");


или если языков несколько, например, $_GET['sp'] ru,de,en
PHP:
скопировать код в буфер обмена

$ENT=($_GET['sp']=="ru")?"windows-1251":"iso-8859-1";
ini_set("default_charset", $ENT);


Спасибо! Но все же не получается! Может такое быть, что нужно поменять кодировку в таблице phpmyadmin? Или что то может ее перебивать?
 
 Top
Vladimir Kheifets
Отправлено: 13 Сентября, 2017 - 13:59:04
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Pavel8897 пишет:

Спойлер (Отобразить)


Спасибо! Но все же не получается! Может такое быть, что нужно поменять кодировку в таблице phpmyadmin? Или что то может ее перебивать?


По-опыту. Если в PHP-файле перед первым "<?" есть хотя бы один пробел, то
ini_set("default_charset", "windows-1251") работать не будет.

Проверьте, пожалуйста, есть ли у Вас в PHP:
header("Content-Type: text/html; charset=windows-1251'', true);
и в HTML:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

Здесь это работает на PHP7:
https://www[dot]alto-booking[dot]com

Если не поможет, то попробуйте поставить mysqli_set_charset
перед mysqli_query
Удачи!

(Отредактировано автором: 13 Сентября, 2017 - 14:10:36)

 
 Top
Pavel8897
Отправлено: 14 Сентября, 2017 - 17:42:47
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Авг. 2017  


Помог: 0 раз(а)




Vladimir Kheifets пишет:
По-опыту. Если в PHP-файле перед первым "<?" есть хотя бы один пробел, то
ini_set("default_charset", "windows-1251") работать не будет.

Проверьте, пожалуйста, есть ли у Вас в PHP:
header("Content-Type: text/html; charset=windows-1251'', true);
и в HTML:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

Здесь это работает на PHP7:
https://www[dot]alto-booking[dot]com

Если не поможет, то попробуйте поставить mysqli_set_charset
перед mysqli_query
Удачи!


Спасибо огромное! Имя теперь отображается нормально, но вот все остальное превращается в каракули. Попробовал все функции, что Вы подсказали.
 
 Top
Vladimir Kheifets
Отправлено: 14 Сентября, 2017 - 20:21:38
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Pavel8897 пишет:
Vladimir Kheifets пишет:
По-опыту. Если в PHP-файле перед первым "<?" есть хотя бы один пробел, то
ini_set("default_charset", "windows-1251") работать не будет.

Проверьте, пожалуйста, есть ли у Вас в PHP:
header("Content-Type: text/html; charset=windows-1251'', true);
и в HTML:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

Здесь это работает на PHP7:
https://www[dot]alto-booking[dot]com

Если не поможет, то попробуйте поставить mysqli_set_charset
перед mysqli_query
Удачи!


Спасибо огромное! Имя теперь отображается нормально, но вот все остальное превращается в каракули. Попробовал все функции, что Вы подсказали.


Добрый вечер! Имя выбирается из базы данных.Верно? Откуда берётся остальное, которое превращается в каракули? Покажите, пожалуйста, скриншоты.
Если тексты заданы в php-коде, проверьте установки в редакторе.
Например, PHP Expert Editor есть установки Encoding: ANSI или UTF-8

(Отредактировано автором: 14 Сентября, 2017 - 20:42:44)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB