首先,我正在开发一个使用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。
任何帮助都会很棒。感谢
答案 0 :(得分:2)
是的,看起来你很亲密。但反过来说。
如果安全性具有任何重要性,您应该考虑到这一点:
$.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就足够了,页面根本不会对此代码作出反应并显示其内容而没有任何阻碍。
链接: