2015-07-28 7 views
5

vorliegen Ich habe zwei Sätze von Daten in einem JSON (data.json) wie folgt:Wie für ein JSON-Objekt zu überprüfen, in einem anderen

UP = [{"password": "jhonjhon", "username":"jhon"}, {"password": "juliejulie", "username":"julie"}, {"password": "blakeblake", "username":"blake"}]; 

Und

Admins = '[{"Admin":"jhon"}, {"Admin":"julie"}]'; 

Ich habe ein HTML Formular, das der Benutzer verwenden wird, um sich anzumelden.

<html> 
<body> 

    <form name="myForm" onsubmit="finalCheck()"> 
     UserName<input type="text" id="uid" value="UserId"/> 
     UserPassword<input type="password" id="pwd" value="UserPwd"/> 
     <input type="submit"/> 
    </form> 
</body> 
    <script src="data.json"></script> 
    <script src="checking.js"></script> 
</html> 

Auf dem Klick auf den Button einreichen Ich möchte zuerst prüfen, ob der Benutzername (in einem var gespeichert, sagen x) eingegeben in meinem JSON Datei an die Admins Liste gehört oder nicht. ZB: wenn x ist jhon Ich möchte wissen, ob das gleiche jhon existiert in der Admins der JSON.

JavaScript wie jetzt ist als:

function finalcheck(){ 
    var x = document.forms["myForm"]["uid"].value; 
    var y = document.forms["myForm"]["pwd"].value; 
} 

Hilfe mit JavaScript ist sehr willkommen!

+1

** SICHERHEIT ** Legen Sie niemals Passwörter in Benutzer zugänglichen Ort, verwenden Sie immer Back-End-Validierung, codieren Sie immer Ihre Passwörter. Dein Ansatz ist SEHR SEHR unsicher. Ich kann immer die JSON-Quelldatei überprüfen und sehen, welche Logins ich als Administrator anmelden kann. – Justinas

+0

@justinas ja Ich werde eine Backend-Validierung für das Passwort verwenden, aber um sicherzustellen, dass ich ein klares Verständnis von JSON habe, versuche ich dieses Beispiel. – TheLuminor

Antwort

1

Sie sollten durch das JSON-Objekt durchlaufen und überprüfen Sie die uid ist vorhanden oder nicht.

adminFlag wird auf "True" gesetzt, wenn x in Admins vorhanden ist.

den Code unten gegeben Versuchen:

function finalCheck(){ 
    var adminJSON = JSON.parse(Admins), // since Admins is string, parse to Json first 
     length = adminJSON.length, 
     x = document.forms["myForm"]["uid"].value, 
     y = document.forms["myForm"]["pwd"].value, 
     adminFlag = false; 

     // for loop to find admin is present or not 
     for(var i = 0; i < length; i++){ 
      if(adminJSON[i].Admin == x){ 
       adminFlag = true; 
       break; 
      } 
     } 
} 
+1

if (adminJSON [i] == x) { sollte sein if (adminJSON [i] .Admin == x) { –

+0

Das funktioniert völlig in Ordnung! Vielen dank für Deine Hilfe! Prost! :) @ Utkarsh – TheLuminor

+0

Ja, was Danton sagt, ist richtig. Obwohl ich die gleiche Ausgabe bekam, obwohl ich einfach nur versuchte, was Utkarsh vorschlug. Und warum würde das passieren? @Danton – TheLuminor

2

Um zu überprüfen, ob password gleiche wie in JSON durch den Benutzer ist, haben Sie Schleife, dass JSON-Array und Werte überprüfen:

for (var i = 0; i < UP.length; i++) { 
    if (UP[i].username == x && UP[i].password == y) { 
     for (var j = 0; j < Admins.length; j++) { 
      if (Admin[i].Admin == x) { 
      //It's correct logins, do something 
      } 
     } 
    } 
} 

SECURITY


nie Passwörter in Benutzer zugänglichen Ort setzen, Verwenden Sie immer die Back-End-Validierung, codieren Sie immer Ihre Passwörter. Dein Ansatz ist SEHR SEHR unsicher. Ich kann immer JSON-Quelldatei überprüfen und sehen, welche Logins ich mich anmelden kann als Admin

1

Ich nehme an, dass diese Aufgabe für eine Lernzweck ist. Bitte tu dies niemals in der Produktion. Sie könnten mit diesem Beispielcode spielen. Es gibt viele intelligentere Lösungen, aber meiner Meinung nach würde dies Ihnen helfen, die Grundlagen zu verstehen.

var UP = [{"password": "jhonjhon", "username":"jhon"}, {"password": "juliejulie", "username":"julie"}, {"password": "blakeblake", "username":"blake"}]; 
var ADMINS = [{"Admin":"jhon"}, {"Admin":"julie"}]; 

function finalcheck() 
{ 
var x = 'jhon'; 
var y = 'jhonjhon'; 

for(var i = 0; i < UP.length; i++) 
{ 
    if (UP[i].password == x && UP[i].username == y) 
    { 
    console.log(y + ' has access!'); 
    for (var j = 0; j < ADMINS.length; j++) { 
     if (ADMINS[j].Admin == y) 
     { 
     console.log(y + ' is Admin'); 
     } 
    } 
    } 
} 
} 
Verwandte Themen