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

Javascript - sprawdzanie zawartości localStorage

0 głosów
905 wizyt
pytanie zadane 13 października 2016 w JavaScript przez dominik3246 Początkujący (260 p.)

Witam. W programie który tworzę w ramach nauki stworzyłem formularz rejestracji i logowania. Dane którę wpiszę podczas rejestracji (login i hasło) dodawane są do localStorage. Program działa tak:

1. Po kliknięciu w button "Rejestracja" program sprawdza czy login i hasło co namniej 6 liter.

2. Jeśli login i hasło mają co najmniej 6 liter zostaje wywołana funkcja store()

3. Funkcja store() dodaje wartości loginu i hasła do localStorage (użyłem JSON.stringify oraz JSON.parse). Chciałem aby localStorage przychowywało więcej niż jeden login i hasło dlatego tworzona jest tablica obiektów.

4. Kiedy już konto zostało utworzone i chcę się zalogować za pomocą podanego wcześniej loginu i hasła klikam button "Zaloguj", zostaje wywołana funkcja check() podczas której starałem się zrobić tak aby w pętli for sprawdzało długość tablicy - tablica w localStorage wygląda tak: [{"login":"dominik123","password":"dominik123"},{"login":"321321321","password":"32132321"},{"login":"321dominik","password":"321dominik"}] , następnie chciałem aby szukało po kolei dla [0] czy jest taki login jak dominik123 i hasło dominik123, dla [1] login: 321... itd. Niestety coś tu nie działa bo jak sprawdzałem alertem jaka jest dlugość tej tablicy to dla jednego wprowadzonego do localStorage loginu i hasła wyskakiwało ponad 40 length :/ 

Niestety nie mogę znaleźć rozwiązania dlatego mam nadzieję, że ktoś będzie w stanie mi pomóc :)

Wklejam tutaj kod tych dwóch funkcji

function store() {
	var existingEntries = JSON.parse(localStorage.getItem("allEntries"));
	if(existingEntries == null) existingEntries = [];
	var name = registerName.value;
	var pass = pw.value;
	
	var entry = {
		login: name,
		password: pass
	};
	
	localStorage.setItem("entry", JSON.stringify(entry));
	existingEntries.push(entry);
	localStorage.setItem("allEntries", JSON.stringify(existingEntries));
};
function check() {
	var storedLogin = localStorage.getItem("allEntries");
	var userName = document.getElementById("login").value;
	var userPw = document.getElementById("password").value;
	alert(storedLogin.length);
	for (i=0; i < storedLogin.length; i++) {
	if (userName == storedLogin[i].login && userPw == storedLogin[i].password) {
		alert("Poprawnie zalogowano")
	}
		
	else{
		alert ("Wpisany login lub hasło jest nieprawidłowe");
	}
	}
};

 

1 odpowiedź

+3 głosów
odpowiedź 14 października 2016 przez niezalogowany
wybrane 14 października 2016 przez dominik3246
 
Najlepsza

W funkcji store

localStorage.setItem("allEntries", JSON.stringify(existingEntries));

ustawiasz allEntries jako string

function check() {
    var storedLogin = localStorage.getItem("allEntries");
    ...
    alert(storedLogin.length);
    ...
};

zatem zmienna storedLogin w funkcji check -> będzie stringiem.

Zapomniałeś sparsować ; )

komentarz 14 października 2016 przez dominik3246 Początkujący (260 p.)

Faktycznie zapomniałem. Taki mały błąd, a nie mogłem znaleźć rozwiązania. Dzięki za pomoc yes

Podobne pytania

0 głosów
0 odpowiedzi 561 wizyt
0 głosów
0 odpowiedzi 205 wizyt
pytanie zadane 19 stycznia 2023 w SQL, bazy danych przez mahciek Nowicjusz (120 p.)
0 głosów
1 odpowiedź 540 wizyt

93,771 zapytań

142,731 odpowiedzi

323,383 komentarzy

63,371 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...