Я разрабатываю мобильное приложение jquery, которое использует php для получения информации из базы данных (например, логин пользователя). но у меня есть такая проблема: мне нужно, чтобы отображение конкретной информации из базы данных зависело от пользователя, вошедшего в систему (клиенты и проекты связаны друг с другом полем ‘project’ в клиентах и ’id’ в проектах)
Я пытался добавить поле ‘project’ в запрос ‘login’, но когда я сделал это, приложение не смогло войти
Заранее спасибо за помощь
———— index.html —————
<!DOCTYPE html>
<html>
<head>
<title>Home</title>
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0"/>
<link rel="stylesheet" href="theme/css/jquery.mobile.min.css" />
<link rel="stylesheet" href="theme/css/surinteractive.min.css" />
<link rel="stylesheet" href="theme/css/jquery.mobile.icons.min.css" />
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquerymobile/1.4.3/jquery.mobile.min.js"></script>
<script src="js/json.js"></script>
</head>
<body>
<div data-role="page" id="login" data-theme="a">
<header data-role="header" data-position="fixed">
<h1>Sistema de gestión de Requerimientos</h1>
</header>
<div data-role="content">
<div id="fm">
<form id="form">
<label for="username">User:</label>
<input type="text" value="" name="username" id="username"/>
<label for="password">Pass:</label>
<input type="password" value="" name="password" id="password"/>
<a data-role="button" id="login-button" data-theme="a" class="ui-btn-icon-right ui-icon-plus ui-btn-b">
Sign in
</a>
</form>
</div>
</div>
<footer data-role="footer" data-position="fixed" id="footer">
<p>© Copyright 2014 </p>
</footer>
</div>
<div data-role="page" id="menu" data-theme="a">
<header data-role="header" data-position="fixed">
<a href="#login" data-transition="slide" data-role="button" class="b_nuevo">Back</a>
<h3>Bugs List</h3>
</header>
<div data-role="content">
<h3>Welcome: </h3>
<ul data-role="listview" data-inset="true">
<li><a href="bugs/errors.html" data-transition="slide">Create a bug</a></li>
<li><a href="enh/enhacements.html" data-transition="slide">Create an enhacement</a></li>
</ul>
</div>
<footer data-role="footer" data-position="fixed" id="footer">
<p>© Copyright 2014</p>
</footer>
</div>
</body>
</html>
—————— json.js —————————
$(document).on('pagebeforeshow', '#login', function(){$('#login-button').on('click', function(){if($('#username').val().length > 0 && $('#password').val().length > 0){userObject.username = $('#username').val();
userObject.password = $('#password').val();var outputJSON = JSON.stringify(userObject);ajax.sendRequest({action : 'login', outputJSON : outputJSON});
} else {
alert('Please fill all requested information');
}
});
});var ajax = {
sendRequest:function(save_data){
var address = null;
//address = 'http://127.0.0.1/app/inc/userValidation.php?jsoncallback=?';
$.ajax({url: address,
crossDomain: true,
data: save_data,
async: true,
beforeSend: function() {
// This callback function will trigger before data is sent
$.mobile.loading('show', {theme:"a", text:"Initializing...", textonly:true, textVisible: true});
},
complete: function() {
// This callback function will trigger on data sent/received complete
$.mobile.loading('hide');
},
success: function (result) {
if(result == "true") {
$.mobile.changePage( "#menu", { transition: "slide"} );} else {
alert('Invalid login. Please try again!'); // In case result is false throw an error
}
// This callback function will trigger on successful action
},
error: function (request,error) {
// This callback function will trigger on unsuccessful action
alert('Connection error, please try again');
}
});
}
}
// We will use this object to store username and password before we serialize it and send to server. This part can be done in numerous ways but I like this approach because it is simple
var userObject = {
username : "",
password : ""}
———— userValidation.php ——————-
<?php
$jsonObject = json_decode($_REQUEST['outputJSON']); // Decode JSON object into readable PHP object
$username = $jsonObject->{'username'}; // Get username from object
$password = $jsonObject->{'password'}; // Get password from object
$connection = null;$connection = new mysqli('127.0.0.1', 'xxxx', 'xxxx', 'xxxx');$query = "SELECT * FROM clients WHERE username = '".$username."' and password = '".$password."'";
$result = mysqli_query($connection,$query);
$num = mysqli_affected_rows($connection);
if($num != 0) {
echo "true";
} else {
echo "false";
}
?>
База данных (структура & Отношения)
клиенты
идентификатор, имя, имя пользователя, пароль, проект, статус, дата создания
проектов
идентификатор, проект, описание, технологии, статус, дата создания
ошибки
id name projectid, тип, окружение, описание, статус, дата создания
projectid.clients = id.projects
id.projects = projectid.bugs
Цель: сохранить имя пользователя в глобальной переменной, которая будет восстановлена на другой странице
Наконец я решил эту проблему, создав новую схему под названием сеансы, когда пользователь подписывает ее в приложении, она будет сохранена в этой схеме. После этого, если пользователь хочет получить созданный список ошибок, будет вызвано новое SQL-предложение, чтобы присоединиться к «сессиям» в этом поиске.
Других решений пока нет …