在HTML文档之间转发变量和其他信息

时间:2019-04-15 02:03:19

标签: javascript php html function

我认为这是一个相当基本的问题,但是因为我是前端的新手。所以不确定如何正确执行它。我正在做什么:创建一个很小的项目,一小部分是登录。我登录到我的页面,它检查一个数据库,如果名称和密码正确,它将登录以根据实际项目访问多个不同的页面/ 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>

1 个答案:

答案 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,这些信息都不会存储在本地,这会给您带来安全性和其他好处的奖励。