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


Cannot connect to mysql server with my phonegap app

>我最近刚刚使用 jquery 完成了我的移动应用程序,它在我的网络浏览器上运行良好,但是当我使用 phone gap 编译它时。我什至无法登录,当我通过 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';
}
?>

哇...您确实要共享完整的数据库凭证?

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

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

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

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