简体   繁体   English

用php / javascript用户登录

[英]User login with php/javascript

I have a php script that I call through ajax to initialize session variables for a user login. 我有一个PHP脚本,可以通过ajax调用它来初始化用户登录的会话变量。 When I retrieve the session info later on it doesn't seem to be there. 当我稍后检索会话信息时,它似乎不存在。 What is missing from this. 这缺少什么。 I must say I am assuming that the $_SESSION variable is there. 我必须说我假设$ _SESSION变量在那里。 I haven't done this before. 我以前没做过

PHP code that searches for user in db and initializes session variable PHP代码在db中搜索用户并初始化会话变量

while (true) {
    $md5_pw = md5($password_text);
    $r_getuser = mysql_query("SELECT * FROM users WHERE (user_name = BINARY '".mysql_real_escape_string($l_un_em)."' OR email = '".mysql_real_escape_string($l_un_em)."') AND (password = '$md5_pw' OR temp_password = '$md5_pw') AND status >= 0");
    if (mysql_num_rows($r_getuser) == 0) {
        /* echo $messages['log_un_em_pw_incorrect'];
        return; */
        $return['return_code'] = -1;
        $return['return_msg'] = $messages['log_un_em_pw_incorrect'];
        echo json_encode($return);
    }
    $row = mysql_fetch_assoc($r_getuser);
    /* if ($row['privs'] < 1) { echo $messages['log_no_privs']; break; } */
    if ($row['temp_password'] == $md5_pw) { //new password
        mysql_query("UPDATE users SET password = '".$md5_pw."', temp_password = NULL WHERE user_id = '{$row['user_id']}'");
    }
    $today = date('Y-m-d');
    if ($row['login_0'][0] == '9') { //first login
        mysql_query("UPDATE users SET login_0 = '".$today."', login_1 = '".$today."', login_cnt = 1 WHERE user_id = '{$row['user_id']}'");
    } else {
        mysql_query("UPDATE users SET login_1 = '".$today."', login_cnt = login_cnt+1 WHERE user_id = '{$row['user_id']}'");
    }
    $_SESSION['uid'] = $row['user_id'];
    $_SESSION['unm'] = stripslashes($row['user_name']);
    $_SESSION['uml'] = stripslashes($row['email']);
    $_SESSION['cL'] = $row['language'];
    /* echo '<meta http-equiv="refresh" content="0;url=livemass_CENTER34.php">'; */ //default page
    break;
}

PHP code to retrieve session variable. PHP代码检索会话变量。

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

echo 'user id '.$_SESSION['uid'].'<br/>';
echo 'username '.$_SESSION['unm'].'<br/>';
echo 'uml '.$_SESSION['uml'].'<br/>';
echo 'cL '.$_SESSION['cL'].'<br/>';

?>

Javascript to show session info. 显示会话信息的Javascript。

$.ajax({
      url: "get_session_info.php",
      type: "GET",
      data: {},
      cache: false,
      async: false,
      success: function (response) {
      alert ('session info response <br/>'+response);
      },
});

add session_start() to all your files which access session varibale values session_start()添加到访问session变量值的所有文件中

<?php
session_start();
ini_set('display_errors', 1);

// remaining items

?>

http://php.net/manual/en/function.session-start.php http://php.net/manual/zh/function.session-start.php

To build on what @Frits said. 以@Frits所说的为基础。 To use php sessions you must place the function session_start(); 要使用php会话,您必须放置函数session_start(); at the beginning of every page that you want to access $_SESSION on. 在您要访问$_SESSION的每个页面的开头。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM