Итак, я пытаюсь настроить основную форму входа пользователя.Я хочу сравнить входные данные с существующей базой данных.Все отлично работает в Firefox.Вся информация передается.Но в: Chrome, Safari, IE.Почти все, что я пытаюсь.Ни один из данных сеанса не проходит?
Например.
Это мой существующий код.Он отлично работает в Firefox
login.php
<?php
require_once('../../config/sessionHandler.php');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
<script src="JavaValidate.js" type="text/javascript"></script>
<title>Login</title>
</head>
<body>
<div class="container">
<form class="form-horizontal" role="form" id="logForm" name="logForm" method="POST" action="ajax.php">
<div id="userName-group" class="form-group">
<label for="txtUserName" class="col-sm-2 control-label">User Name:</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="inputUserName" name="txtUserName" placeholder="User Name" maxlength="9">
</div>
</div>
<div class="form-group">
<label for="txtPasswordInput" class="col-sm-2 control-label">Password:</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="inputPassword" name="txtPassword" placeholder="Password" value="">
</div>
</div>
<div class="form-group">
<div class="col-sm-10 col-sm-offset-2">
<button type="submit" class="btn btn-success">Submit <span class="fa fa-arrow-right"></span></button>
</div>
</div>
<div class="form-group">
<div class="col-sm-10 col-sm-offset-2">
<input id="btnLogout" onclick="location.href = 'logout.php';" name="logout" type="button" value="logout" class="btn btn-primary">
</div>
</div>
</form>
</div>
</body>
</html>
У меня есть базовый HTML с 2 входами.Имя пользователя и пароль. Используется 3 файла.мой ajax.php, sessionHandler.php и мой JavaValidate.js
sessionHandler.php
<?php
if(session_status() === PHP_SESSION_NONE)
{
session_start();
}
$userName= $_SESSION['UserName'];
?>
JavaValidate.js
$(document).ready(function()
{
$('#logForm').submit(function(event)
{
var logData = {
'userName': $('input[name=txtUserName]').val(),
'password': $('input[name=txtPassword]').val(),
}
$.ajax({
type : 'POST',
url : 'ajax.php',
data : logData,
dataType : 'json',
encode : true
})
.done(function(data)
{
if(!data.success)
{
if (data.errors.userName)
{
$('#userName-group').addClass('has-error');
$('#userName-group').append('<div class="help-block">' + data.errors.userName+ '</div>');
}
}
else
{
//APPEND SUCCESS
$('form').append('<div class="alert alert-success">' + data.message + '</div>');
}
})
.fail(function(data)
{
});
event.preventDefault();
});
});
ajax.php
<?php
require_once('../../config/sessionHandler.php');
//VARIABLE DECLARATION
$formdata = array();
$inputString = $_POST['userName'];
$inputPass = $_POST['password'];
$data['message'] = 'Success!';
$_SESSION['UserName'] = $inputString;
$_SESSION['Password'] = $inputPass;
$_SESSION['Errors'] = $errors['userName'];
echo json_encode($data);
?>
Когда я запускаю это в разных браузерах, я получаю разные результаты?После того как я отправлю форму со следующими данными:
FireFox
Input: "Username", "Password1"
$_SESSION['Username'] = Username
$_SESSION['Password'] = Password1
Google Chrome
Input: "Username", "Password1"
$_SESSION['Username'] = Username
$_SESSION['Password'] = NULL
Браузер Safari (на моем телефоне)
Input: "Username", "Password1"
$_SESSION['Username'] = Username
$_SESSION['Password'] = NULL
Почему-то это работает точно так, как и ожидалось в FireFox?тем не менее, он кажется ненадежным в любом другом браузере.Я не уверен, что я что-то пропускаю, потому что разные браузеры по-разному читают данные сессий?По какой-то причине мой сеанс паролей виден только через firefox?Я подумал, что мог бы использовать данные сеанса, чтобы сохранить их несколько скрытыми, прежде чем хэшировать.
Если кто-нибудь сможет помочь мне пролить некоторый свет на это, это будет очень признательно!Спасибо всем за потраченное время!