Javascript 将会话与php一起使用时出错

Javascript 将会话与php一起使用时出错,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我正在开发一个使用JS、JQuery和PHP的简单登录页面 login.php <!DOCTYPE html> <head> <title>Login activity to learn AJAX</title> <link rel="stylesheet" type="text/css" href="login.css"> <script src="http://ajax.googleapis.com/a

我正在开发一个使用JS、JQuery和PHP的简单登录页面

login.php

<!DOCTYPE html>
<head>
    <title>Login activity to learn AJAX</title>
    <link rel="stylesheet" type="text/css" href="login.css">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript" src="login.js"></script>
</head>
<body>
    <h1>AJAX learning</h1>
    <h2>Login below to continue</h2>
    <div class="row">
        <p>User ID:</p>
    </div>
    <div class="row">
        <p><input type="text" name="uid" id="usr"></p>
    </div>
    <div class="row">
        <p>Password:</p>
    </div>
    <div class="row">
        <p><input type="password" name="pwd"></p>
    </div>
    <div class="row">
        <p><input type="button" onclick="checkLogin()" value="Login"></p>
    </div>
    <div class="row">
        <p id="status"></p>
    </div>
</body>

登录活动学习AJAX
AJAX学习
请在下面登录以继续
用户ID:

密码:

login.js

function ajaxRequest(){
 var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] //activeX versions to check for in IE
 if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
  for (var i=0; i<activexmodes.length; i++){
   try{
    return new ActiveXObject(activexmodes[i])
   }
   catch(e){
   }
  }
 }
 else if (window.XMLHttpRequest) // if Mozilla, Safari etc
  return new XMLHttpRequest()
 else
  return false
}
function checkLogin(){
    var xhttp=new ajaxRequest();
    var uid=$('input[name=uid]').val();
    var pwd=$('input[name=pwd]').val();
    xhttp.open("POST","do_login.php",true);
    xhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    var param = "UID="+uid+"&PASS="+pwd;
    xhttp.send(param);
    xhttp.onreadystatechange=function(){
        if(xhttp.readyState == 4){
            if(xhttp.status==200){
                generateResponse(xhttp.responseText,uid);
            }
            else{
                window.alert("Error while making request");
            }
        }
    }
}
function generateResponse(data,uid){
    if(data==="Error 1"){
        $("#status").text("USER NOT FOUND!");
        $("input[name=uid]").val("");
        $("input[name=pwd]").val("");
    }
    else if(data==="Error 2"){
        $("#status").text("INCORRECT PASSWORD!");
        $("input[name=pwd]").val("");
    }
    else{
        window.location='page2.php';
    }
}
函数ajaxRequest(){
var activexmodes=[“Msxml2.XMLHTTP”,“Microsoft.XMLHTTP”]//要在IE中检查的activeX版本
if(window.ActiveXObject){//首先测试IE中对ActiveXObject的支持(因为IE7中的XMLHttpRequest被破坏)
对于(var i=0;i
欢迎页面
你好

主要目的是在login.php页面中显示错误消息,如果凭据正确,则重定向到page2.php

按下“登录”按钮,页面将重定向到page2.php,但没有显示任何内容。整个网页为空白。请在我的代码中识别错误。

config.php

会话_start()

数据库凭据//您也可以在此处写入数据库详细信息

do_login.php

包括_once('config.php')

您的登录代码

page2.php

包括_once('config.php')


打印($_SESSION);

您的代码输入错误:

<?php
    session_start();
    if(!isset($_SESSION(['username'])) || empty($_SESSION['username']))
    header("Location: login.php");
?>
您的sql
“从登录名中选择用户,其中用户='$uid'”

尝试使用
”或1或“a
作为用户名

防止这种情况的最简单方法是使用
addslashes
封装传递给查询的变量:

"SELECT user FROM login WHERE user = '" . addslashes($uid) . "'"

首先,我<强>强<强> >建议您考虑使用。这将有助于

此外,您应该而不是存储纯文本密码,因此:

<>你应该<强>真/ <强>考虑使用和他的同事学院/P> 除此之外,我将使您的代码稍微不同,例如:

->将generateResponse函数修改为:

function generateResponse(data,uid){
if(data === "Error"){
    $("#status").text("user not found : make sure you are using correct credentials.");
    $("input[name=uid]").val("");
    $("input[name=pwd]").val("");
}
else {
    window.location='page2.php';
}
}
->仅使用一个查询(PPS将更加安全)


->最后,纠正page2.php中$u会话的误用(CREDIT转到@Dimitri-L)


你好


您忘了在
do\u login.php
页面的顶部添加
会话_start();
。从
其他
部分删除并添加到顶部,然后选中尝试执行该操作。仍然无法添加会话_start();在页面顶部的do_login.php中,从页面2中删除。phpi说,从
其他
中删除部分,并在
do_login.php
@ZaidBinKhalid中添加这两个页面都需要
<?php
    session_start();
    if(!isset($_SESSION['username']) || empty($_SESSION['username'])) {
        header("Location: login.php");
        die();
    }
?>
"SELECT user FROM login WHERE user = '" . addslashes($uid) . "'"
function generateResponse(data,uid){
if(data === "Error"){
    $("#status").text("user not found : make sure you are using correct credentials.");
    $("input[name=uid]").val("");
    $("input[name=pwd]").val("");
}
else {
    window.location='page2.php';
}
}
<?php
session_start();

$connection = mysqli_connect("localhost","shreyansh","","ajax");
$query1 = "SELECT user FROM login WHERE user = '$uid' AND pass = '$pass' ";
$result = mysqli_fetch_array(mysqli_query($connection,$query1));
// checking credentials
$response = "";
if(count($result) == 0){ $response = "Error"; } else { $_SESSION['username'] = $uid; $response = ""; }
echo $response;

?>
<?php
session_start();
if(!isset($_SESSION['username']) || empty($_SESSION['username']))
{
header("Location: login.php");
}
else
{
?>
<p>Hello <?php echo $_SESSION['username']; ?></p>
<?php
}
?>