2013-06-25 56 views
6

Tôi muốn gửi tên người dùng và mật khẩu từ trang login.html đến index.html. Làm thế nào tôi có thể làm điều đó dễ dàng nhất có thể? Và làm cách nào để mã hóa các chuỗi của tôi để chúng được mã hóa URL và UTF-8?Làm cách nào để gửi các biến từ tệp này sang tệp khác trong Javascript?

Chúc mừng

+0

Khám phá [this] (http://stackoverflow.com/q/11581543/778118). Ngoài ra, có rất nhiều thông tin có sẵn về chủ đề này. Bạn sẽ nhận được google của bạn trên. – jahroy

+0

"_Questions phải chứng minh sự hiểu biết tối thiểu về vấn đề đang được giải quyết. Hãy cho chúng tôi biết bạn đã cố gắng làm gì, tại sao nó không hoạt động và cách hoạt động._" Bỏ phiếu để đóng. – jahroy

+0

Được gắn cờ trùng lặp: * – Jack

Trả lời

16

Bạn có thể sử dụng các tập tin cookie , window.name, gửi dữ liệu theo url dưới dạng chuỗi truy vấn hoặc thông qua web storage.

Trong exaple này tôi sẽ lưu dữ liệu từ một trang và đọc nó từ một trang khác bằng cách sử dụng localStorage-(specs), và các phương pháp sau:

đăng nhập.html

function saveData(user, pass) { 
    var account = { 
    User: user, 
    Pass: pass 
    }; 
    //converts to JSON string the Object 
    account = JSON.stringify(account); 
    //creates a base-64 encoded ASCII string 
    account = btoa(account); 
    //save the encoded accout to web storage 
    localStorage.setItem('_account', account); 
} 

index.html

function loadData() { 
    var account = localStorage.getItem('_account'); 
    if (!account) return false; 
    localStorage.removeItem('_account'); 
    //decodes a string data encoded using base-64 
    account = atob(account); 
    //parses to Object the JSON string 
    account = JSON.parse(account); 
    //do what you need with the Object 
    fillFields(account.User, account.Pass); 
    return true; 
} 

Đi qua các đối tượng từ trang này sang trang khác bằng cách url như chuỗi truy vấn(tìm kiếm)

login.html

function saveData(user, pass) { 
    var account = { 
    User: user, 
    Pass: pass 
    }; 
    account = JSON.stringify(account); 
    account = btoa(account); 
    location.assign("index.html?a=" + account); 
} 

index.html

function loadData() { 
    var account = location.search; 
    if (!account) return false; 
    account = account.substr(1); 
    //gets the 'a' parameter from querystring 
    var a = (/^a=/); 
    account = account.split("&").filter(function(item) { 
     return a.test(item); 
    }); 
    if (!account.length) return false; 
    //gets the first element 'a' matched 
    account = account[0].replace("a=", ""); 
    account = atob(account); 
    account = JSON.parse(account); 
    //do what you need with the Object 
    fillFields(account.User, account.Pass); 
    return true; 
} 

Xem một câu trả lời dài ở đây: https://stackoverflow.com/a/30070207/2247494

5

Cookie! Yummy cho bụng của bạn.


Điều đó thật thú vị nhưng đây là câu trả lời thực sự. Bạn có thể muốn lưu trữ thông tin trong một cookie. Đây là một cách hay để truyền thông tin từ một phần của ứng dụng web của bạn sang ứng dụng web khác. Đó là một kỹ thuật phổ biến để tất cả các nền tảng đều hỗ trợ tốt.

Hãy nhớ rằng cookie là công khai nên không đặt bất kỳ thông tin nào có thể bị tấn công. Bạn nên băm và mã hóa giá trị trong cookie. Bạn cũng có thể tạo ra thông tin ngẫu nhiên - điều này là tốt nhất. Ví dụ: khi người dùng đăng nhập tạo một số ngẫu nhiên và lưu số đó và ID người dùng trong một bảng thì hãy chuyển số ngẫu nhiên dưới dạng cookie. Bằng cách này chỉ DB của bạn có các thông tin và bạn không thể hack cookie (bằng cách thêm một ví dụ.)

+1

Rõ ràng câu trả lời hay nhất dựa trên thành tích kỹ thuật ;-) (Tôi không ** là kẻ hủy bỏ) – jahroy

+0

@jahroy Tôi đã nghiên cứu cookie trong nhiều năm! – Hogan

+2

@Hogan Và nó cho thấy! Jack - cookie không có ý định an toàn vì vậy hãy cẩn thận những gì bạn lưu trữ trong chúng (ví dụ: tên người dùng và mật khẩu) – nick

1

Bạn có thể sử dụng encodeURI('some text to encode') đến phần thứ hai của câu hỏi của bạn

3

Bạn có thể sử dụng jquery -cookie plugin:
https://github.com/carhartl/jquery-cookie

Cách sử dụng:

<script src="/path/to/jquery.cookie.js"></script> 

Tạo cookie phiên:

$.cookie('cookieName', 'myValue'); 

Tạo hết hạn cookie, 7 ngày kể từ sau đó:

$.cookie('cookieName', 'myValue', { expires: 7 }); 

đọc cookie:

$.cookie('cookieName'); // => "myValue" 

Xóa cookie:

$.removeCookie('cookieName'); 
+0

Tôi đã sử dụng plugin đó, Rất tốt! Nhưng bạn không cần cookie, chỉ cần sử dụng [** [localStorage] (http://hacks.mozilla.org/2009/06/localstorage/) **] để lưu dữ liệu cục bộ. – jherax

Các vấn đề liên quan