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

Problem z skryptem logowania

Object Storage Arubacloud
0 głosów
145 wizyt
pytanie zadane 12 lutego 2016 w PHP przez qwertz Użytkownik (850 p.)

Witam wszystkich.

Mam taki problem ze skryptem logowania, że prawdopodobnie nie wykrywa mi danych wysłanych metodą post.

Oto skrypt logowania: 

<?php

	session_start();
	
	if((isset($_POST['login'])) && (isset($_POST['haslo'])))
	{

		
		require_once "settings/connect.php";
		mysqli_report(MYSQLI_REPORT_STRICT);
		
		try
		{
			$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
			if($polaczenie->connect_errno!=0)
			{
				throw new Exception(mysqli_connect_errno());
			}
			else
			{
				$login = $_POST['login'];
				$haslo = $_POST['haslo'];
				
				$login = htmlentities($login, ENT_QUOTES, "UTF-8");
				
				if ($rezultat = $polaczenie->query(
				sprintf("SELECT * FROM uzytkownicy WHERE user='%s'",
				mysqli_real_escape_string($polaczenie,$login))))
				{
					$ile_userow = $rezultat->num_rows;
					
					if($ile_userow>0)
					{
						if (password_verify($haslo, $wiersz['pass']))
						{
							$wiersz = $rezultat->fetch_assoc();
							
							$_SESSION['user_zalogowant'] = true;
							$_SESSION['user_id'] = $wiersz['id'];
							$_SESSION['user_user'] = $wiersz['user'];
							$_SESSION['user_email'] = $wiersz['email'];
							$_SESSION['user_uprawnienia'] = $wiersz['uprawnienia'];
							$_SESSION['user_data'] = $wiersz['data'];
							
							unset($_SESSION['e_blad']);
							$rezultat->free_result();
							header('Location: index.php');
						}
						else
						{
							$_SESSION['e_blad'] = "Niepoprawna nazwa użytkownika lub haslo!";
							header('Location: logowanie.php');
						}	
					}
					else
					{
						$_SESSION['e_blad'] = "Niepoprawna nazwa użytkownika lub haslo!";
						header('Location: logowanie.php');
					}	
				}
				else
				{
					throw new Exception($polaczenie->error);
				}
				
				$polaczenie->close();
				
			}
		}
		catch(Exception $e)
		{
			echo '<span style="color:red;">Błąd serwera! Przepraszamy za niedogodności i prosimy o rejestrację w innym terminie!</span>';
			echo '<br />Informacja developerska: '.$e;
		}
	}
	
	
?>

Oraz formularz w tym samym pliku:


					<form style="padding: 20px;" method="post">	
						Nazwa użytkownika: </br>
						<input type="text" name="login" /></br>
						</br>
						Hasło:</br>
						<input type="password" name="haslo"/></br>
						</br>
						<input type="submit" value="Zaloguj" />		
					</form>			
					
					<?php				
						if(isset($_SESSION['e_blad']))
						{
							echo '<div class="error">'.$_SESSION['e_blad'].'</div>';
							unset ($_SESSION['e_blad']);
						}				
					?>

Będę wdzięczny za każdą pomoc.

1 odpowiedź

0 głosów
odpowiedź 12 lutego 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)

prawdopodobnie nie wykrywa mi danych wysłanych metodą post

Skąd takie podejrzenie? Byłoby znacznie prościej jakbyś powiedział co dokładnie nie działa ;) 

komentarz 12 lutego 2016 przez qwertz Użytkownik (850 p.)

Gdy próbuje wypisać echo $_SESSION['login'] wywala mi błąd:

Notice: Undefined index: login in D:\Programy\xampp\htdocs\strona\logowanie.php on line 5

komentarz 12 lutego 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)
A przypisujesz gdzieś do sesji login? Bo ja nie widzę.

Z formularza dane do skryptu są przesyłane metodą POST ($_POST). A do sesji przypisujesz tylko błędy i dane po zalogowaniu. W żadnym miejscu nie widzę przypisania do $_SESSION['login'].
komentarz 12 lutego 2016 przez qwertz Użytkownik (850 p.)
Sorry chodziło mi o $_POST['login'];
komentarz 12 lutego 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)
Hm, no zdaje mi się, że powinno to działać skoro masz to wszystko w tym samym pliku.

Może spróbuj wyświetlić całą tablicę $_POST np. przez var_dump
komentarz 12 lutego 2016 przez qwertz Użytkownik (850 p.)

wyświetla mi array(0) { }

komentarz 12 lutego 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)
No to ciekawie. Po wysłaniu formularza też jest pusta tablica tak?

Bardzo dziwne, powinno to działać.
komentarz 12 lutego 2016 przez qwertz Użytkownik (850 p.)
Dzięki wielkie za poświęcony mi czas.

W końcu udało mi się to zrobić, nie wiem jak ale działa :)

Podobne pytania

0 głosów
1 odpowiedź 873 wizyt
pytanie zadane 6 lipca 2016 w PHP przez GaCeL Dyskutant (7,500 p.)
0 głosów
1 odpowiedź 151 wizyt
pytanie zadane 1 stycznia 2016 w Java przez taloni Początkujący (250 p.)
–1 głos
1 odpowiedź 283 wizyt
pytanie zadane 4 sierpnia 2016 w PHP przez ThePatrykOOO Dyskutant (8,400 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...