Login details in array php MySQL

Bună seara, revin și eu cu o întrebare.
Cum pot adaugă datele dintr-un query într-un array in php.

Sistemul pe care îl folosesc deja folosește o baza de date stocata într un array de tipul

$users = array(
'username' => 'password',
);

Dacă vin cu datele din baza de date, ma lasă să mă loghez doar cu ultima intrare din baza de date.

Am încercat și cu while(mysqli_fetch_assoc($result)){}

Tot ultima intrare o ia.

Mulțumesc

Presupunând că ai variabilele $user și $password, ar trebui să verifici așa:

if( $users[ $user ] ?? false === $password ) {}

Acum, restul întrebării este destul de ambiguu, despre ce query vorbești? Ce este $result?

Ai initializat array-ul?

PS: Pune si tu un cod care ar reproduce minimal problema. Ca astfel te putem ajuta mai usir si nu mai pierdem timpul cu raspunsuri inutile sau presupuneri.

$queryUserCredentials = "SELECT * FROM users";

$resultUserCredentials = mysqli_query($conn, $queryUserCredentials);

if(mysqli_num_rows($resultUserCredentials) > 0){
    $userCredentialsRow = mysqli_fetch_assoc($resultUserCredentials);
       
        $auth_users = array(
            $userCredentialsRow['username'] => $userCredentialsRow['password'],
        );

 } 

Practic tot ce face query in db sa fie trecut in array ul acela, insa imi ia mereu doar ultima intrare,

La fiecare rând inițializezi array-ul cu valoarea curentă.

https://www.php.net/manual/en/function.array-push.php

Example #1 array_push() example

<?php
$stack = array("orange", "banana");
array_push($stack, "apple", "raspberry");
print_r($stack);
?>

The above example will output:

Array
(
[0] => orange
[1] => banana
[2] => apple
[3] => raspberry
)

De ce tragi toți utilizatorii din DB în loc sa-l cauți doar pe cel introdus la login?

Ce vrei tu să faci este: $auth_users[] = ..... Adică un [] după numele variabilei.

DAR dacă tu vrei să autentifici utilizatorul, poate că ar trebui să faci SELECT-ul să se ocupe de asta. E.g. SELECT * FROM users WHERE username=? AND password=?.

PS: presupun că aici vorbim doar conceptual și te ocupi și de hash-ul parolei și de curățarea datelor.

1 Like

Ca și task a trebuit sa lucrez pe un sistem gata făcut care nu avea o baza de date.

M am ocupat și de hash și de curățare. :slight_smile: dacă era dupa mine nu mai foloseam asa ceva și luam direct din baza de date… Dar dacă asa s-a cerut.

Va mulțumesc din suflet

Dacă nu aveai baza de date, înseamnă că nu aveai nici codul pentru interogarea bazei de date. Prin urmare, normal ar fi să extragi un singur utilizator din baza de date. Nu să-i extragi pe toți și apoi să verifici cu php. E greșit ce faci dar tu știi mai bine. Cred că asta ceri:

<?php
$queryUserCredentials = "SELECT * FROM users";

$resultUserCredentials = mysqli_query($conn, $queryUserCredentials);

$users = [];

if(mysqli_num_rows($resultUserCredentials) > 0){
	while($user_row = mysqli_fetch_assoc($resultUserCredentials)){
		$users[] = array(
			$user_row['username'] => $user_row['password'],
		);
	}
} 

Mai departe, array-ul $users va conține toți utilizatori. Va trebui să treci prin toți (sau până găsești username-ul), ca să le verifici datele de autentificare.

1 Like

Documentatie php mai citesti si tu din cand in cand ? Ca iti dau aia mura-n gura cum se citesc datele dintr-o interogare mysql. Dar na, e mai simplu sa intrebi pe forum sa-ti rezolve altii problemele.

1 Like

Nu o sa stau sa îți dau un răspuns pe măsură, însă am fost ajutat de fiecare data și poate la rândul meu am ajutat și eu pe acest forum. Însă tu tot la acest nivel de ura și hate o sa ramai.

Cine a vorbit de o interogare și o citire a documentației? A fost o chestie de care pur și simplu nu mi am dat seama, sub presiune, oboseala…

Nu reusesti nimic in viata daca nu depui efort. Cu atat mai putin in programare. Nu e hate, e un sfat din experienta unuia care a vazut de n ori acelasi tipar: cand se obtine informatia usor, se uita usor. Cand iti da cineva un Lamborghini gratis il vei baga in sant in secunda 2. Dar daca muncesti 10 ani sa-l cumperi, o sa il lasi nepotilor fara zgarieturi.

8 Likes

Am înțeles ce ai vrut sa zici și ai dreptate, însă ți am spus ca am fost presat de anumite probleme și trebuia sa termin în timp util și știam ca exista aici oameni care ma pot ajuta cu un sfat sau o informație.

Mersi oricum de sfaturi!