Logowanie użytkownika do bazy

0

Hej, mam skrypt który rejestruje użytkownika w bazie i drugi do logowania. Rejestrowanie działa, logowanie działało ale nic nie zmieniając w kodzie nagle przestał działać. Jest to prosta forma sprawdzająca tylko funkcjonalność bazy danych do pracy.

<?php
session_start();
$serverName = "DESKTOP-04GJBNV\RAFALDB";
$connectionOptions = [ 
						"Database"=>"test2",
                         "Uid"=>"",
                         "PWD"=>""
						 ];

$conn = sqlsrv_connect( $serverName, $connectionOptions);
if( $conn === false )
	die( print_r( sqlsrv_errors(), true));

$name = $_POST['name'];	
$user_data = "SELECT haslo FROM Uzytkownicy WHERE nazwa_uzytkownika='$name'";

$password= $_POST['password'];
$password_hash = password_hash($password, PASSWORD_DEFAULT);

$dane = sqlsrv_query( $conn, $user_data);   
if($dane  === false) {
    die( print_r( sqlsrv_errors(), true) );
}
while( $row = sqlsrv_fetch_array($dane, SQLSRV_FETCH_ASSOC) ) {
   $row['haslo']; // echo wyrzuca dobrą wartość więc chyba w dalszej części coś jest nie tak
}
if (password_verify($password_hash, $row)){
$_SESSION['user'] = htmlspecialchars($_POST['name']);
echo "Witaj <b>$name!</b>";
}
?>

Widzicie gdzieś błąd?

0
R1D3Rekk napisał(a):
Widzicie gdzieś błąd?

Nie widzę żadnego fragmentu, gdzie by problemu nie było, od samej idei, przez wykonanie, stosowanie języka i biblioteki standardowe bez zrozumienia itd ...

0

Nie widzę żadnego fragmentu, gdzie by problemu nie było, od samej idei, przez wykonanie, stosowanie języka i biblioteki standardowe bez zrozumienia itd ...

Kod skopiowany gdzieś z ang. forum, szukając rozwiązania trafiłem na takie w sumie jedyne które zadziałało.

Dodam, ze to tylko część kodu, sporo nie podałeś. — ZrobieDobrze

W zasadzie do logowanie mam jeszcze tylko formularz a skrypt w całości wstawiłem.

0
R1D3Rekk napisał(a):

Nie widzę żadnego fragmentu, gdzie by problemu nie było, od samej idei, przez wykonanie, stosowanie języka i biblioteki standardowe bez zrozumienia itd ...

Kod skopiowany gdzieś z ang. forum, szukając rozwiązania trafiłem na takie w sumie jedyne które zadziałało.

Kopiowanie kodu z netu wymaga WIĘKSZYCH kwalifikacji niż napisanie własnoręczne.
Strzelamy jakieś przypadkowe kody z netu, aż któryś "zadziała" ... W czasie poświęconym na szukanie, byś mógł czytać dok i pisać własnoręcznie

Nie wiem, czy pomyślałeś o tym, dlaczego kod się znalazł na angielskim forum? Gdyby był naprawdę dobrym kodem, mało prawdopodobne, żeby sie pojawił, a pewnie tak jak na 4p, pojawił sie, bo ktoś miał problem.

Mi wystarczy gołe hasło, aby nie analizować głęboko - była by to jatka.

ps. widzę, ze twoja działalność jest wyłącznie kopiarska - czym sie motywujesz, bez edukacji, kopiując bez zrozumienia, stoisz w miejscu (a dokładnie, betonujac złe nawyki, sie cofasz, choc trudno sobie wyobrazić cofanie z poziomu startowego). Nie czytałeś najmniejszych tutków z baz danych, języka (jakies egzotyczne operatory === i AND skąś kopiowałeś)

0

Nie wiem, czy pomyślałeś o tym, dlaczego kod się znalazł na angielskim forum? Gdyby był naprawdę dobrym kodem, mało prawdopodobne, żeby sie pojawił, a pewnie tak jak na 4p, pojawił sie, bo ktoś miał problem.

Był trochę w innej postaci przerobiłem go do swoich celów i zadziałał. Czytałem tam komentarze próbując zrozumieć zasadę działania ale chyba jednak nie do końca mi to wyszło. Czytając dokumentacje PHP jeszcze trudniej jest mi coś ogarnąć.

ps. widzę, ze twoja działalność jest wyłącznie kopiarska

Fakt nie zaprzeczalny jak mi jest coś potrzebne to szukam rozwiązania w gotowcach. Co do tematu jakieś porady gdzie szukać rozwiązania?

0

@R1D3Rekk zobacz https://www.php.net/manual/en/function.password-verify.php
Jako password podajesz plain text hasła.
Jako hash podajesz to co wyciągnąłeś z bazy danych o ile poprawnie wykonałeś po stronie rejestracji.
Czyli jeśli po stronie rejestracji jest wszystko ok, to password_verify powinien wyglądać jakoś tak:

if (password_verify($password, $row['password'])){

Dodatkowo walisz dane od użytkownika prosto w zapytanie do bazy. Ale to już inna sprawa.

0

Dalej mi wyrzuca błąd, chyba że coś robię źle:

<?php
$name = $_POST['name'];	
$check_name= "SELECT haslo FROM Uzytkownicy WHERE nazwa_uzytkownika='$name'";
$check = sqlsrv_query( $conn, $check_name);  
if($check_name === false) {
    die( print_r( sqlsrv_errors(), true) );

}
while( $row = sqlsrv_fetch_array($check, SQLSRV_FETCH_ASSOC) ) {
   $row['haslo'];
}
if (password_verify($_POST['password'], $row)){
$_SESSION['user'] = htmlspecialchars($_POST['name']);
echo "Witaj <b>$name!</b>";
}else{
	echo "Błąd";
}
?>
0
R1D3Rekk napisał(a):

Dalej mi wyrzuca błąd,

A jakiż to ten błąd ?

R1D3Rekk napisał(a):

Fakt nie zaprzeczalny jak mi jest coś potrzebne to szukam rozwiązania w gotowcach. Co do tematu jakieś porady gdzie szukać rozwiązania?

U autora tego co zaj.. ś ?

R1D3Rekk napisał(a):

. Czytając dokumentacje PHP jeszcze trudniej jest mi coś ogarnąć.>

Czarno widzę perspektywy z takim podejściem. Nie wiem, co doradzić.
Nawet jeśli zrobisz jakieś zaliczenie, nawet jeśli dostaniesz trochę kasy od jakiegoś Januszexu, nie wyskoczysz nigdzie wyżej (chyba ze w innym pionie)

Nie wiem, jaki masz wrodzony talent, ale mogę postawić tezę, że dotychczasowa ścieżka szukania gotowców go z przód nie rozwinęła.

1 użytkowników online, w tym zalogowanych: 0, gości: 1