• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Logowanie do serwisu

VPS Starter Arubacloud
0 głosów
177 wizyt
pytanie zadane 18 listopada 2020 w PHP przez Poczatkujaca s z.o.o Obywatel (1,860 p.)
Witam, mam  system logowania do serwisu na podstawie tego z odcinska 2 PHP na kanale pasji.

Działa, ale teraz chce go rozbudować o pożliwość logowania się maile lub loginem i obowiazkowo hasłem

Można to jakoś w prosty sposób zrobić?

Korzystam z ksieżki php i mysql dla każdego wydanie 2 Marcin Lis

Ale dla mnie jest chaotyczna .

2 odpowiedzi

0 głosów
odpowiedź 18 listopada 2020 przez Arkadiusz Waluk Ekspert (287,550 p.)
wybrane 18 listopada 2020 przez Poczatkujaca s z.o.o
 
Najlepsza

Warto byłoby pokazać kawałek kodu odpowiedzialny za logowanie, bo nie wiemy co dokładnie masz, nie każdy też pamięta cały kurs.

Generalnie jednak sprowadza się to do zmiany zapytania do bazy danych aby uwzględniało w warunku email lub login - coś typu: SELECT ... FROM ... WHERE login=X or email=X

komentarz 18 listopada 2020 przez Poczatkujaca s z.o.o Obywatel (1,860 p.)
przeniesione 18 listopada 2020 przez Arkadiusz Waluk
<?php

	session_start();
	
	if ((!isset($_POST['login'])) || (!isset($_POST['haslo'])))
	{
		header('Location: index.php');
		exit();
	}

	require_once "connect.php";

	$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
	
	if ($polaczenie->connect_errno!=0)
	{
		echo "Error: ".$polaczenie->connect_errno;
	}
	else
	{
		$login = $_POST['login'];
		$haslo = $_POST['haslo'];
		
		$login = htmlentities($login, ENT_QUOTES, "UTF-8");
		$haslo = htmlentities($haslo, ENT_QUOTES, "UTF-8");
	
		if ($rezultat = @$polaczenie->query(
		sprintf("SELECT * FROM uzytkownicy WHERE user='%s' AND pass='%s'",
		mysqli_real_escape_string($polaczenie,$login),
		mysqli_real_escape_string($polaczenie,$haslo))))
		{
			$ilu_userow = $rezultat->num_rows;
			if($ilu_userow>0)
			{
				$_SESSION['zalogowany'] = true;
				
				$wiersz = $rezultat->fetch_assoc();
				$_SESSION['id'] = $wiersz['id'];
				$_SESSION['user'] = $wiersz['user'];
				$_SESSION['drewno'] = $wiersz['drewno'];
				$_SESSION['kamien'] = $wiersz['kamien'];
				$_SESSION['zboze'] = $wiersz['zboze'];
				$_SESSION['email'] = $wiersz['email'];
				$_SESSION['dnipremium'] = $wiersz['dnipremium'];
				
				unset($_SESSION['blad']);
				$rezultat->free_result();
				header('Location: gra.php');
				
			} else {
				
				$_SESSION['blad'] = '<span style="color:red">Nieprawidłowy login lub hasło!</span>';
				header('Location: index.php');
				
			}
			
		}
		
		$polaczenie->close();
	}
	
?>

 

komentarz 18 listopada 2020 przez Arkadiusz Waluk Ekspert (287,550 p.)

To jak pisałem, masz zapytanie SELECT z WHERE user oraz hasło, należałoby tu dołożyć też emaila, robiąc coś w rodzaju:

WHERE (user='%s' OR email='%s') AND pass='%s'

aby obowiązkowe było pierwsze lub drugie oraz trzecie zawsze. 

Tak przy okazji, to hasło nie powinno być w taki sposób trzymane w bazie danych. Gdzieś dalej w kursie było pokazane, że się je hashuje i nie trzyma w ogóle wersji z "gołym" tekstem. Podobnie nie warto używać @, bo to ukrywa błędy, warto też korzystać z bindowania wartości do zapytań zamiast mysqli_real_escape_string() (to też chyba było później pokazane w kursie).

komentarz 18 listopada 2020 przez Poczatkujaca s z.o.o Obywatel (1,860 p.)
w którym odcinku?
komentarz 18 listopada 2020 przez Arkadiusz Waluk Ekspert (287,550 p.)
W 3 wprowadził haszowanie haseł: https://www.youtube.com/watch?v=fMJw90n8M60

W 5 widzę bindowanie wartości do zapytań i zmianę na PDO (alternatywa dla mysqli): https://www.youtube.com/watch?v=6fn55yrdwkk
komentarz 18 listopada 2020 przez Poczatkujaca s z.o.o Obywatel (1,860 p.)
a wiesz może jak zrobić taka ikonte pokazywanie hasła przy logowaniu?

I może znasz jakieś wideo gdzie w prosty spósób pokazanie jak zrobić wyszukiwarkę?

wyszukiwarte treści dodanych do bazy
komentarz 18 listopada 2020 przez Arkadiusz Waluk Ekspert (287,550 p.)

Pokazywania hasła w sensie przy inpucie że klikasz i chwilowo się pokazuje? Myślę że wystarczy w JS na np. przyciśnięcie ikonki zmienić na chwilę typ pola z password na text.

Nie mam wideo pokazującego robienie wyszukiwarki, musisz poszukać. Najprostsze szukanie treści w bazie można zrobić przez LIKE, to tak mogę powiedzieć że w tym kierunku można próbować szukać. Wystarczy zwykły SELECT z WHERE kolumna LIKE %tekst% i znajdzie wszystkie wartości które zawierają w sobie słowo tekst

0 głosów
odpowiedź 23 listopada 2020 przez Poczatkujaca s z.o.o Obywatel (1,860 p.)

Arkadiusz Waluk 

wiesz może, jak zrobić przypomnienie hasła ? mam stronę logowania, formularz logowania.

Pod min link przypomniej hasło - i co dalej domyślałam się że to jakoś php musi pobrać z bazy ?

komentarz 23 listopada 2020 przez Arkadiusz Waluk Ekspert (287,550 p.)
Hasło trzyma się zahaszowane, więc jest nie do odczytania - nie powinno być w ogóle opcji, abyś mogła je jakkolwiek odzyskać albo komuś poddać.

Wszystkie opcje tzw. przypomnienia w różnych serwisach polegają na zresetowaniu hasła - umożliwienia, aby ktoś po jakiejś weryfikacji (przeważnie przez kliknięcie linka potwierdzającego w emailu) mógł sobie ustawić nowe hasło do konta.

PS generalnie jak kontynuujesz rozmowę to pisz w komentarzach, a jak chcesz poruszyć całkowicie nową kwestię to zadawaj nowe pytanie. Zwróć uwagę na to, że nasze forum ma formułę pytań i odpowiedzi. A więc w teorii (czasem tego się nie da przestrzegać) tylko główny post powinien być pytaniem, a pod nim powinny badać odpowiedzi. Teraz Ty w odpowiedzi napisałaś kolejne dopytać o coś, a to po prostu nie jest odpowiedź, tylko dopytanie. Chodzi tylko o porządek dyskusji.
komentarz 23 listopada 2020 przez Poczatkujaca s z.o.o Obywatel (1,860 p.)
OK, będę pamiętać
komentarz 23 listopada 2020 przez Poczatkujaca s z.o.o Obywatel (1,860 p.)

@Arkadiusz Waluk,

A wiesz może jak nazywa się funcja resetowania hasła, w sensie co najlepiej wpisać by zneść informację?

komentarz 24 listopada 2020 przez Arkadiusz Waluk Ekspert (287,550 p.)
"php password reset" - coś w tym rodzaju po prostu? Na to nie ma żadnej funkcji jednej, znajdziesz pewnie poradniki jak można zrobić. Generalnie sprowadza się to do wysłania maila z jakimś linkiem (zawierającym jakiś unikalny kod przypisany do tego użytkownika, często też ważny tylko określony czas), który będzie umożliwiał reset hasła dla danego użytkownika, po czym użytkownik klika w link na tym mailu, na stronie wpisuje nowe hasło i tyle.

Podobne pytania

0 głosów
0 odpowiedzi 764 wizyt
pytanie zadane 19 sierpnia 2018 w PHP przez rejzer Użytkownik (680 p.)
0 głosów
1 odpowiedź 183 wizyt
pytanie zadane 26 kwietnia 2017 w PHP przez marcin99b Szeryf (81,480 p.)
0 głosów
4 odpowiedzi 463 wizyt

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...