Javascript 将会话与php一起使用时出错
我正在开发一个使用JS、JQuery和PHP的简单登录页面 login.phpJavascript 将会话与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
<!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
}
?>