Идентификатор пользователя не отображается в системе входа в систему

  • Автор темы asiapharm
  • 99
  • Обновлено
  • 18, May 2024
  • #1
Здравствуйте друзья,

Я следую руководству с YouTube по созданию системы входа в систему.

это было написано в mysql

я преобразовал большую часть частей в MySQLi

но в какой-то момент застрял

я просто хочу отобразить идентификатор пользователя на основе входа в систему

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

но он не отображает идентификатор

хотя вход работает

мой код для index.php

 

<?php

//ini_set('display_errors','1');

//error_reporting(E_ALL);

global $conn;

if(isset($_POST["username"])&& isset($_POST["password"])){

$username = $_POST["username"];

$password = $_POST["password"];

$password_hash = md5($password);

if(!empty($username) && !empty($password)){

$query = "SELECT `id` FROM `users` WHERE `username` ='$username' AND `password` ='$password_hash'";

if($query_run = mysqli_query($conn,$query)){

$query_num_rows = mysqli_num_rows($query_run);

if($query_num_rows==0){

echo "invalid username/password combination";

}else if($query_num_rows==1){

$row = mysqli_fetch_assoc($query_run);

echo $user_id = $row['id'];

}

}

}else{

echo "you must fill in the username and password properly";

}

}

?>

<form action ="<?php echo $current_file; ?>" method="POST">

Username:<input type="text" name="username"> Password:<input type="password" name="password">

<input type="submit" value="Log in">

</form>
PHP: мой код для Connect.inc.php
 <?php //ini_set('display_errors','1'); //error_reporting(E_ALL); global $conn; if(isset($_POST["username"])&& isset($_POST["password"])){ $username = $_POST["username"]; $password = $_POST["password"]; $password_hash = md5($password); if(!empty($username) && !empty($password)){ $query = "SELECT `id` FROM `users` WHERE `username` ='$username' AND `password` ='$password_hash'"; if($query_run = mysqli_query($conn,$query)){ $query_num_rows = mysqli_num_rows($query_run); if($query_num_rows==0){ echo "invalid username/password combination"; }else if($query_num_rows==1){ echo $user_id = mysqli_fetch_assoc($query_run); } } }else{ echo "you must fill in the username and password properly"; } } ?> <form action ="<?php echo $current_file; ?>" method="POST"> Username:<input type="text" name="username"> Password:<input type="password" name="password"> <input type="submit" value="Log in"> </form>
PHP: мой код для логинформ.инк.php

 <?php //$conn_error = "could not connect"; $mysql_host= "localhost"; $mysql_user = "root"; $mysql_pass =""; $mysql_db ="a_database"; $conn = mysqli_connect($mysql_host,$mysql_user,$mysql_pass,$mysql_db); /*if(!mysqli_connect($mysql_host,$mysql_user,$mysql_pass) && !mysqli_select_db($mysql_db)){ die($conn_error); } */ if(!$conn){ die("Connection failed: ". mysqli_connect_error()); } ?>


PHP:

я думаю, что ошибка в этой строке

логинформ.инк.php

echo $user_id = mysqli_fetch_assoc($query_run);

обратите внимание, я не ищу объектно-ориентированное решение или решение PDO, я знаю, что оно есть

поскольку я новичок в PHP, позвольте мне сначала изучить процедурный подход mysqli

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

Я работаю над своим новым loginform.inc.php.

 <?php require "core.inc.php"; require "connect.inc.php"; include "loginform.inc.php"; ?>
PHP:

asiapharm


Рег
18 Nov, 2013

Тем
2

Постов
4

Баллов
24
  • 18, May 2024
  • #2
Вы, должно быть, используете довольно старое руководство, поскольку в наши дни md5 слишком слаб, чтобы его можно было использовать для хеширования паролей. В PHP теперь есть встроенные функции (5.4 и новее) для работы с хэшами паролей (https://www.php.net/manual/en/ref.password.php
 

altuninho


Рег
30 May, 2013

Тем
0

Постов
2

Баллов
2
  • 18, May 2024
  • #3
... и именно этих ошибок мы пытаемся помешать вам повторить.

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

Нет ничего более болезненного, чем смотреть, как другие совершают ошибки, которым вы уже научились лучше, чем «трудный путь».

Подобно устаревшему, вышедшему из моды, полудуральному вбросу переменных в строки запроса, то, что нам в течение полутора десятилетий советовали прекратить делать! Тем не менее, новые обучающие программы до сих пор выкладываются на YouTube любым старым способом, предлагая людям сделать это.
 

spdating.ru


Рег
10 Mar, 2015

Тем
0

Постов
2

Баллов
2
  • 21, May 2024
  • #4
Я считаю, что это прекрасный пример для обучения, но я разочарован тем, что ФП не взял то, что было изучено на прошлой неделе, и не применил его, прежде чем обращаться за помощью.

Нет никаких свидетельств отладки или попытки использования другого кода.

Категорический отказ от использования PDO наивен.

Обновление учебника полученными знаниями станет хорошей проверкой его/ее новых навыков.
 

Muratt


Рег
29 Aug, 2012

Тем
0

Постов
1

Баллов
1
  • 01, Jun 2024
  • #5
Нет.

Большинство основных PHP-фреймворков (например, Laravel, Symphony, Zend и т. д.) не связаны с копированием и вставкой кода новичков.

Эти системы написаны людьми, у которых можно многому научиться (да, конкретно у вас). Я бы хотел поучаствовать в этом вместе с вами, если вы создадите еще одну тему =)
 

dlevykin


Рег
01 Jan, 2011

Тем
1

Постов
3

Баллов
13
  • 04, Jun 2024
  • #6
Код отстой.

Слишком много людей тратят драгоценное время, пытаясь обойти необходимые шаги, необходимые для изучения программирования. Сначала вам следует изучить язык PHP, прочитав простые учебные пособия, чтобы понять, как работает код PHP.

ЗАТЕМ переходите к урокам по созданию полноценных приложений.

К сожалению, новички пытаются пропустить первый шаг, затем задают МИЛЛИОН вопросов о копировании и вставке импровизированного кода и никогда не понимают, в чем проблема или даже как ее исправить.

Они тратят СЛИШКОМ МНОГО времени на пробы и ошибки, прося других сделать это за них или создавая больше обходных путей вместо того, чтобы потратить короткий период времени на чтение основ программирования и языка.

Даже если вам удастся показать идентификатор пользователя (чертовски просто, если вы знаете язык в течение 1 дня), у вас все равно останется СТАРЫЙ устаревший код, уязвимый для SQL-атаки, позволяющей хакеру с элементарным уровнем навыков испортить весь ваш код.

база данных и приложение. Ползти.

Ходить.

Бегать.

Попробуй сначала побежать, и ты окажешься на заднице.

Ты сейчас на заднице.
 

Alexander Boiko


Рег
27 Sep, 2012

Тем
0

Постов
2

Баллов
2
  • 05, Jun 2024
  • #7
Вы понимаете, что только что описали те концепции, которые защищали, верно? Ситуация только усугубляется тем, что упомянутые «фреймворки» создаются людьми, столь же скованными их методологией, как и лохами, которыми они пользуются.
 

de4ik83


Рег
29 Apr, 2015

Тем
0

Постов
2

Баллов
2
  • 08, Jun 2024
  • #8
омг, эта тема превращается в поле битвы

Я никогда не говорил, что не буду изучать подготовленный оператор/PDO, но дело в том, что я сейчас нахожусь в середине серии руководств, в которой 200 видеороликов, и я хочу сначала закончить это, что бы я ни понял, или я оставлю это в середине?

при всем уважении ко всем.

вы, ребята, ветераны, а я новичок, и я это принимаю.

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

и это только для целей обучения, я не собираюсь использовать этот код для профессионального использования.

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

верно? и нам всем следует учиться на ошибках, я тоже.. спасибо всем за участие в этой теме
 

bumer1


Рег
18 Oct, 2012

Тем
1

Постов
7

Баллов
17
  • 09, Jun 2024
  • #9
Серьезно, выбросьте мусор herpaderp mysqli в пользу PDO. Очень тяжело работать с подготовкой/выполнением. (это ЕДИНСТВЕННЫЙ способ помещения переменных в запросы) и позволяет использовать слишком много устаревших, вышедших из моды и просто мусорных методов из старых устаревших функций mysql_. ... и да, какой бы учебник вы ни следовали, это некомпетентный мусор.
 

Щукевский


Рег
27 Aug, 2010

Тем
1

Постов
4

Баллов
14
  • 10, Jun 2024
  • #10
Затем они решили научиться делать это неправильным, устаревшим, вышедшим из моды способом, ПРЕДНАЗНАЧЕННЫМ для того, чтобы заставить их все испортить. Наденьте штаны большого мальчика и научитесь делать это правильно, а не по-старому.
 

MaxNews.net


Рег
22 Dec, 2012

Тем
1

Постов
3

Баллов
13
  • 10, Jun 2024
  • #11
Для сравнения я подумал: «Почему все так спокойно относятся к этой теме?» Это не что иное, как иногда бывает здесь, добро пожаловать в DP.
 

i_cruz


Рег
01 Jan, 2011

Тем
0

Постов
3

Баллов
3
  • 11, Jun 2024
  • #12
все в порядке... пожалуйста, порекомендуйте мне несколько хороших обучающих программ по последней версии PHP (было бы лучше, если бы это было видео) от новичка до продвинутого уровня, за исключением школ w3schools, которые учат вас от начинающих до продвинутых... я посмотрю на это... спасибо
 

maximusis


Рег
21 Sep, 2014

Тем
1

Постов
4

Баллов
14
  • 13, Jun 2024
  • #13
Привыкайте использовать filter_input вместо прямого доступа к переменным $_POST, ОСОБЕННО при их помещении в запрос к базе данных. Вы указали количество строк? Вы повторили запрос и проверили, получаете ли вы ожидаемый результат, если запустите его в phpMyAdmin? Что вы получаете от var_dump $user_id?
 

Lazary


Рег
16 Jul, 2015

Тем
1

Постов
2

Баллов
12
Тем
49554
Комментарии
57426
Опыт
552966

Интересно