使用phpmysql登录cordova

时间:2016-11-20 06:22:43

标签: javascript php mysql ajax cordova

的javascript

<script type="text/javascript">
$(document).ready(function()
{
$("#insert").click(function(){
var email=$("#email").val();
var pass=$("#pass").val();
var dataString="email="+email+"&pass="+pass+"&insert=";
if($.trim(email).length>0 & $.trim(pass).length>0 )
{
$.ajax({
type: "POST",
url:"http://www.gaurav2444.5gbfree.com/login.php",
data: dataString,
crossDomain: true,
cache: false,
beforeSend: function(){ $("#insert").val('Connecting...');},
success: function(data){
if(data=="success")
{
alert("successful");
localStorage.login="true";
localStorage.email=email;
window.location.href = "index.html";
}
else if(data=="error")
{
alert("error"); 
$("#insert").val('Login');
}
}
});
}return false;
});
});
</script>

腓: 的login.php

 <?php
 include "db.php";
 if(isset($_POST['insert']))
   {
 $email=$_POST['email'];
 $pass=$_POST['pass'];
 $sql = "SELECT * from `course_details` where `email`='$email' and `pass`='$pass'";
 $result = mysqli_query($con, $sql);

 if (mysqli_num_rows($result) > 0)
 {
 echo "success";
 }
 else
 {
  echo "error";
 }
 }
 ?>

db.php中

 <?php
 header("Access-Control-Allow-Origin: *");
 $con = mysqli_connect("localhost:3306","","","gaurav_sos") or die ("could not connect database");
 ?>

程序在xampp服务器上运行良好,但是当托管php文件和数据库时,它无法在cordova应用程序上运行。 例如,当登录页面中输入以下登录ID和密码时,whwn文件位于xampp服务器中,它可以正常工作,但是当托管php文件和数据库并且从cordova应用程序调用php文件时,它不会给出任何结果。 登录ID:hero@d.com 密码:123

1 个答案:

答案 0 :(得分:1)

...这是AJAX跨域请求的正常行为 - 不能您手动设置Access-Control-Allow-Origin标头。

为了使您的代码有效,您必须使用某种代理,因为CORS policy禁止AJAX请求(因为它们违反了same-origin security policy),这样您就可以进行跨域AJAX请求如果无法在目标网站上启用CORS,即您不拥有该网站时,可以从第三方网站访问资源

例如,您可以通过AJAX首先调用PHP cross-domain proxy,然后将您的请求转发给真实服务器。

使用PHP跨域代理库进行简单的代码修改:

$.ajax({
  type: "POST",
  url:"proxy.php", //This is where PHP cross-domain proxy is located
  csurl: "http://www.gaurav2444.5gbfree.com/login.php" //Your remote server
  });