无法使用我的phonegap应用程序连接到mysql服务器

时间:2013-10-03 22:16:46

标签: javascript php jquery mysql cordova

我刚刚使用jquery完成了我的移动应用程序,它在我的网络浏览器上完美运行,但是当我使用手机间隙编译它时。我甚至无法登录,当我通过ajax调用它们时,我的php文件似乎不起作用,并且我正在使用外部免费的mysql托管站点并且我的所有数据都已设置并准备好这是我的代码

登录页面的HTML页面

<a href="#" data-transition="slideup" id="login" data-add-back-btn="true" data-iconpos="right" style="float:right;" data-icon="arrow-r">Login</a>

 <form ajax="true" class="login-user" action="php/li.php" method="POST">
<table style=" text-decoration:none;">
<tr>
        <td>
        <label>Username</label>
        </td>
        <td colspan="1">
        <input name="username" id="Lusername" placeholder="username" type="text" >
        </td>
    </div>
    </tr>
    <tr>
    <td>
    <div align="center" data-role="fieldcontain" style="width:100%;overflow:hidden" data-appbuilder-object="input" data-position="static">
        <label>Password</label>
        </td>
        <td colspan="1">
        <input name="password" id="Lpassword" placeholder="password" type="password" >
        </td>
        </tr>
        </table>
    </div>
    </form>

javascript处理数据并提交到php文件

$('#login').live('click', function(){
       var that = $('form.login-user'),
       urls = that.attr('action'),
       methods = that.attr('method'),
       data = {};
      data = that.serialize();
        console.log(data);


       $.ajax(
    {
        url: urls,
        type: methods,
        //dataType: 'json',
        data : data,
        beforeSend: function(response){},
        success: function(ret){
            if(ret == true)
            {
               $.mobile.changePage('gbalet.html');
               refreshPage();
            }else if(ret == false)
            {
                alert('Incorrect Username or Password');
            }
            else
            {
                alert('Cannot Connect to Server');
            }
        },
        error: function(xhr, textStatus, errorThrown){alert("Check Internet Connection\nCannot Connect to Server");
        },
        complete: function(response){},
    }
    );
       return false;
       });

我的php端代码

<?php
 //connecting to remotedatabase
 $con =  mysql_connect("sql4.freemysqlhosting.net", "sql419167","dJ8%vC7%") or  die("could not connect to server ".mysql_error());
   $db = mysql_select_db("sql419167")or die("could not connect to database".mysql_error());

function signin($nameoremail, $password)
{
    $query = "SELECT `username`, `password` FROM `userinfo` WHERE `username` = '$nameoremail' OR `email` = '$nameoremail' AND `password` = '$password'";
    $quring = mysql_query($query) or die(mysql_error());
    if($quring)
    {
        if(mysql_num_rows($quring) < 1)
        {
                return false;
        }
        else
        {
            $data = mysql_fetch_assoc($quring);
            $_SESSION['username'] = $data['username'];
            return true;
        }

    }
    else
    {
        return false;
    }
}

$name =  htmlentities($_POST['username']);//htmlentities($values[0]);
$password =  htmlentities($_POST['password']);//htmlentities($values[2]);

if(isset($name) && isset($password))
{
$value = signin($name,$password);
echo $value;
session_start();
$_SESSION['username'] = $name;
}
else
{
echo 'not set';
}
?>

1 个答案:

答案 0 :(得分:1)

哇...你真的想分享你的完整数据库凭据吗?

你应该在ajax中发布你得到的错误 - 例如:textStatus或xhr.status / xhr.state的值

此外,您可以使用GET方法(仅用于测试),然后在查询字符串中提交用户的登录字段和值。从那里,您可以确认php正在提供结果而不是抛出错误。即你可以直接从移动设备的浏览器而不是通过ajax(如果你还没有测试过)那样做。

其他要注意的事项 - 检查phonegap的config.xml文件(靠近底部)。您需要将域设置为有效 - 一旦将所有内容都内置到PG中,这可能是最重要的...

最后,查看“SQL注入”并确保在查询字符串中使用提交的用户名/密码之前应用real_escape_string ...