我认为这是一个相当基本的问题,但是因为我是前端的新手。所以不确定如何正确执行它。我正在做什么:创建一个很小的项目,一小部分是登录。我登录到我的页面,它检查一个数据库,如果名称和密码正确,它将登录以根据实际项目访问多个不同的页面/ html文档
我想了解如何做:我只是想将第一个初始登录名(ID)保存为变量,所以在页面顶部始终显示登录的人... Kinda像其他任何人一样基本的登录页面功能。
我如何准确地将该变量保存在JavaScript中,然后将其发送到网站上的每个新HTML页面?我不确定这是否可以完全通过javascript完成,或者我是否应该使用database / php将其保存并发送回去。感谢您提供的任何帮助!
仅需一些代码即可帮助使用变量名,并了解事物的发送/接收方式。
<script>
function ajaxLoginFunction(){
var ajaxRequest = new XMLHttpRequest();
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var ajaxDisplay = document.getElementById('ajaxDiv')
var res = ajaxRequest.innerHTML = this.responseText;
//login as a student or teacher variables to redirect
var student_page="studentview.html";
var teacher_page="teacherview.html";
var data=JSON.parse(res)
//ajaxDisplay.innerHTML = (data['questions']['question'][2].toString());
if (data['type']=="student") window.location.replace(student_page);
else if(data['type']=="teacher") window.location.replace(teacher_page);
else ajaxDisplay.innerHTML = "Login Failed";
}
};
//storing my id and password to be sent to database
//which sends back the info for student/teacher redirect pages
var ucid = document.getElementById('username').value;
var pass = document.getElementById('password').value;
var login = "login";
//how would i hold onto the ucid after logging in and redirecting to another url?
var myObj = {id: login, usr: ucid, pwd: pass};
var myJSON = JSON.stringify(myObj);
ajaxRequest.open("POST","https://myphpfile.php", true);
ajaxRequest.send(myJSON);
}
</script>
答案 0 :(得分:0)
尽管您也可以使用会话变量,但我还是建议使用cookie。如果您确定要专门使用JS,则Cookie可能是最佳途径。虽然,PHP两者都有一些不错的工具。
// JS COOKIE CREATION
function setCookie(cname,cvalue,exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
// PHP COOKIE CREATION
setcookie(<cookie name>, <cookie value>, <expiration>, <access - '/' for all site pages>);
检查cookie是否存在...
// JS COOKIE CHECK
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return ""; // If no cookie 'cname' exists
}
// PHP COOKIE CHECK
$_COOKIE[<cookie name>] // Will return cookie value; use isset() to verify cookie has been set
在每个“受限”页面上,检查cookie是否存在,如果存在,则授予访问权限;如果不是,请将其重定向到登录页面或显示其他消息。要删除Cookie或“注销”,请将到期时间设置为今天之前(负到期日期)。或者,只需设置一个空白的cookie值。我使用浏览器扩展程序(Chrome上的EditThisCookie)进行测试,并查看存储的cookie的值。如果愿意,您可以存储多个Cookie-一个用于用户名,另一个用于用户类型-或以另一种方式处理“老师”和“学生”之间的区别。切记不要将密码存储在本地。即不要将密码放在Cookie中。
PHP会话也很值得研究。到处都有大量的文档。会话变量将完全适合您要完成的工作...
// PHP SESSION VARIABLE EXAMPLES
$_SESSION['user_id'] = $user->username; // ucid
$_SESSION['priv'] = $user->type; // 'teacher' or 'student'
类似于cookie方法,在每个“受限制的”页面上,您都需要放置一些PHP以检查会话的ID和访问类型。作为PHP,这些信息都不会存储在本地,这会给您带来安全性和其他好处的奖励。