JavaScript: se connecter/s'Inscrire avec localStorage
Hé là, je sais que c'est probablement une question facile, mais j'ai un problème avec ma Connexion/s'Inscrire en JavaScript. Je suis stocker les données des utilisateurs via localStorage et quand j'essaie de connexion il revient toujours mon message d'alerte, que l'tapé dans les données est incorrect.
EDIT: storedName est indéfini, mais le mot de passe n'est pas. Je ne comprends toujours pas..
EDIT: Problème résolu. Grâce à Hank! La Solution est dans les commentaires.
Voici mon code HTML:
<!DOCTYPE html>
<html>
<head>
<title>Learning JavaScript</title>
</head>
<body>
<form id="register-form">
<input id="name" type="text" placeholder="Name" value=""/>
<input id="pw" type="password" placeholder="Password" value=""/>
<input id="rgstr_btn" type="submit" value="get Account" onClick="store()"/>
</form>
<form id="login-form">
<input id="userName" type="text" placeholder="Enter Username" value=""/>
<input id="userPw" type="password" placeholder="Enter Password" value=""/>
<input id="login_btn" type="submit" value="Login" onClick="check()"/>
</form>
<script type="text/javascript" src="jquery-1.11.3.min.js"></script>
<script type="text/javascript" language="javascript" src="login.js"></script>
</body>
</html>
Et voici mon code JavaScript:
//Name and Password from the register-form
var name = document.getElementById('name');
var pw = document.getElementById('pw');
//storing input from register-form
function store() {
localStorage.setItem('name', name.value);
localStorage.setItem('pw', pw.value);
}
//check if stored data from register-form is equal to entered data in the login-form
function check() {
//stored data from the register-form
var storedName = localStorage.getItem('name');
var storedPw = localStorage.getItem('pw');
//entered data from the login-form
var userName = document.getElementById('userName');
var userPw = document.getElementById('userPw');
//check if stored data from register-form is equal to data from login form
if(userName.value !== storedName || userPw.value !== storedPw) {
alert('ERROR');
}else {
alert('You are loged in.');
}
}
Alors, quand j'ai vérifié la console storedName est pas défini, mais il obtient le mot de passe
une Autre question sur le mondial
Merci @Jeremy Banques
une Autre question sur le mondial
name
variable collision causant la folie.Merci @Jeremy Banques
OriginalL'auteur thissven | 2015-12-15
Vous devez vous connecter pour publier un commentaire.
vous avez 2 questions:
1. "nom" est un mot réservé, il va agir goffy sur vous, de le changer pour quelque chose d'autre comme nom1 ou nm ou quelque chose.
2. ne pas utiliser !==, != allez faire, vous est défectueux, de toute façon, changer à cela:
Mais ouais, je sais que vous êtes juste pratiquer, mais ne fait pas enregistrer les noms d'utilisateur et mots de passe sur le côté client.
Content que cela a fonctionné pour vous! !== est plus stricte que !=, vous pouvez uniquement utiliser !== (ou ===) sur les propriétés de l'exacte même type, pour moi, la plupart du temps, c'est juste une exagéré pour être si strict, sauf si vous êtes réellement vérifier le type d'une propriété spécifique, par exemple if(typeof someImg !== "undefined") { //cette propriété someImg est en fait une chose } en général, Vous voulez stocker les noms d'utilisateur et mots de passe dans la base de données avec le cryptage.
C'est pourquoi il ne fonctionne pas .. cela fait sens .. merci pour ce que vous avez répondu. Et oui, je sais que je l'ai stocké dans une base de données. En fait, je le faire avec PHP, mais pour une raison quelconque, mon professeur voulait que je recherche pour une option, pour stocker des données en JS et "localStorage" était la seule chose que je trouve de loin. De toute façon je tiens ya une bonne soirée
OriginalL'auteur Hank
C'est là que le problème est venu à vous.
Vous voulez comparer les valeurs saisies avec le
localStorage
de données. C'est bon, mais ça devrait ressembler à cela:Ce est la bonne façon d'obtenir la valeur du champ de saisie.
Ce n'était pas la question; la valeur a été correctement consulté chaque fois qu'il est destiné à être utilisé. La question-asker déjà confirmé que @Hank;s solution a fonctionné, plus de deux ans.
OriginalL'auteur Abu Haneefah