Прежде всего, я разрабатываю мобильное приложение, использующее phonegap/cordova, поэтому я и ищу этот маршрут.
Я задаюсь вопросом, возможно ли получить статус сеанса от php в javascript, поскольку я ищу для защиты всего моего приложения только для пользователей.
Php я имею следующее:
<?php
$dbhost = '';
$dbuser = '';
$dbpass = '';
$db = '';
$tbl_name="";
$conn = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($db);
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$encrypt_password=md5($mypassword);
$myusername = stripslashes($myusername);
$mypassword = stripslashes($encrypt_password);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($encrypt_password);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){
session_register("myusername");
session_register("mypassword");
session_start();
$_SESSION["Login"] = "YES";
header("location:login_success.html");
echo $_SESSION['data'];
}
else {
session_start();
$_SESSION["Login"] = "NO";
echo $_SESSION['data'];
}
?>
и html файл содержит следующий javascript
<script>$.get('checklogin.php', function(data) {
if (data != "YES"){
window.location.replace("http://aam.prettypottery.ie/index.html");
}
});</script>
Я думаю, что я близок, только каждый раз, когда я пытаюсь посмотреть любую из моих html-страниц, они все отправляют меня обратно в index.html.
Любая помощь будет большой. благодаря
Да, похоже, вы близки. Но наоборот.
Если безопасность важна для вас, вы должны принять во внимание это:
$.get('checklogin.php', function(data) {
не должно быть вообще, это должно быть сделано на стороне сервера (в PHP);$sql="SELECT * FROM $tbl_name WHERE...
по-прежнему уязвим, по крайней мере, использует PDO;MD5
которые могут быть достаточными для вашего сайта, но обычно используют соление и более сильные хеши (по крайней мере SHA1);Что-то вроде этого:
SELECT username FROM accounts WHERE ...
и это:
$authenticated = strcasecmp($username, $resulting_username) === 0;
Чтобы решить вашу проблему прямо сейчас, вам нужно будет отобразить на PHP как минимум переменную, которая сообщает Javascript-код для перенаправления. Что-то вроде этого.
В HTML/PHP:
<script>
if (<?php echo ($authenticated ? 'true' : 'false'); ?>)
{
alert("Good boy!");
} else {
alert("Bad Trudy is bad!");
}
</script>
Создание этого результата HTML:
<script>
if (true)
{
alert("Good boy!");
} else {
alert("Bad Trudy is bad!");
}
</script>
Достаточно деактивировать Javascript, и страница не будет реагировать вообще на этот код и отображать его содержимое без каких-либо препятствий.
Ссылки: