好的,我正在使用 jQuery 和 Cordova 尝试登录到 mySQL 数据库。遇到一些问题也许有人可以帮我解决。
<script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
<script type="text/javascript" charset="utf-8" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript" charset="utf-8" src="jquery.mobile-1.1.1.js"></script>
<script type="text/javascript" charset="utf-8">
function login() {
$(document).ready(function() {
var user = $("#user")[0].value;
var pass = $("#pass")[0].value;
$.ajax({
type: "GET",
url: "http://www.greekhighlight.com/mob_login.php",
data: "users"+user+"&pass="+pass,
success: function(result){
if (value){
$("#message")[0].value = "Success "+result;
} else {
$("#message")[0].value = "error";
}
});
}
};
</script>
这是我在 head 标签中的 javascript。
<form>
Username: <input type="text" size="25" id="user" onkeyup= "login()" />
<br />
Password: <input type="text" size="25" id="pass" onkeyup= "login()"/>
<br />
<input type="text" size="25" id="message" value="error" />
</form>
这是我的 HTML 表单。
<?php
$user = $_REQUEST['user'];
$pass = $_REQUEST['pass'];
include('php/connect.php');
$result = mysql_query("SELECT email, password, userid FROM users WHERE email = '$user'");
while($row = mysql_fetch_array($result)){
if(md5($pass) == $row["password"]){
echo $row["userid"];
} else {
echo "";
}
}
?>
这是我的 PHP 文件。
这是我第一次使用 Phonegap 等,所以我希望这不是我忽略的东西。我的连接文件是正确的。我遵循的教程取得了成功,所以我不确定为什么我的教程没有成功。
如果有人能在正确的方向上插入我,我希望我能弄明白。
提前致谢。
更新:决定使用 Aurigma Up 并且只使用网站的移动版本,因为该项目才刚刚起步。希望在某个时候回到这个问题并使其正常工作。再次感谢您的帮助。
最佳答案
您的代码有几个问题:
- 你应该为这个请求使用
POST
并且我假设你想在你的成功函数检查中使用result
值(可以考虑返回一个带有状态
). - 你的
ajax.data
应该更符合这条线{"user":user,"pass":pass}
- 您的 php 代码不安全,应该使用准备好的语句。
- 如今将密码存储为
md5(password)
是一个很大的不行,对更好/更安全的哈希函数进行一些研究。 - 您的登录事件是
onkeyup
一些为您指明正确方向的示例
HTML:
...
<input type="text" size="25" id="pass"/>
...
<input type="button" id="#login_button" value="Login">
...
JS:
$(document).ready(function() {
$('#login_button').click(function() {
// ... ajax request here ...
});
});
PHP:
$stmt = $con->prepare('SELECT email, password, userid, salt FROM users WHERE email = ?');
$stmt->bind_param($email);
$stmt->bind_result($hash,$salt);
$stmt->execute();
if ($stmt->fetch_result()) {
if (hash('sha512',$password.$salt)==$hash) {
// ... OK ...
}
}
祝你好运。
注意事项: PHP prepared statement reference ,谷歌“用盐保护密码存储”,在jsfiddle.net上玩
关于php - Phonegap (Cordova) jQuery Ajax 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11770836/