2016-10-01 2 views
1

Dies ist mein erstes Cordova-Projekt. Meine HTTP-Anfrage verarbeitet die lokale PHP-Datei nicht mit POST. Der Code funktioniert und verarbeitet ihn ordnungsgemäß, wenn die PHP-Datei auf dem Server gehostet wird. Aber nicht, wenn die PHP-Datei lokal ist. Das Bearbeiten von Dateien direkt auf dem Server ist so mühsam und dauert viel Zeit, anstatt es nur lokal zu haben. Und ich wollte die Lösung dafür wissen, weil es die Entwicklung wirklich viel einfacher macht. HierCordova - HTTP-Anfrage verarbeitet kein lokales PHP

ist der Javascript-Code

$(document).ready(function() { 
$("input").on("focus", function (e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    window.scrollTo(0,0); 
}); 

$("#loginBtn").click(function() { 
    swal({ 
     title: "Logging in ...", 
     imageUrl: "../images/ring-alt.gif", 
     showConfirmButton: false, 
    }); 
    var username = document.getElementById("username").value; 
    var password = document.getElementById("password").value; 

    if (username != "") { 
     if (password != "") { 
      $.post("../php/login.php", 
      { 
       username: username, 
       password: password 
      }, 
      function (data, status) { 
       alert(data);  
      }); 
     } else { 
      sweetAlert("Oops...", "Please enter your password!", "error"); 
     } 
    } else { 
     sweetAlert("Oops...", "Please enter your username!", "error"); 
    } 
}); 
}); 

alert (Daten) zeigt die gesamte PHP-Datei, anstatt sie zu verarbeiten. Hingegen, wenn es aus der Ferne zugegriffen wird, funktioniert es gut.

Hier ist der Code js Arbeits (remote/hosted PHP-Dateien)

$(document).ready(function() { 
$("input").on("focus", function (e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    window.scrollTo(0,0); 
}); 

$("#loginBtn").click(function() { 
    swal({ 
     title: "Logging in ...", 
     imageUrl: "../images/ring-alt.gif", 
     showConfirmButton: false, 
    }); 
    var username = document.getElementById("username").value; 
    var password = document.getElementById("password").value; 

    if (username != "") { 
     if (password != "") { 
      var xmlhttp = new XMLHttpRequest(); 
      xmlhttp.onreadystatechange = function() { 
       if (this.readyState == 4 && this.status == 200) { 
        if (this.responseText == "successsuccess") { 
         window.location.href = '../html/dashboard.html'; 
        } else { 
         sweetAlert("Oops...", "Invalid username or password!", "error"); 
         document.getElementById("password").value = ""; 
        } 
       } 
      } 
      xmlhttp.open("POST", "http://www.sampleee.esy.es/login.php", true); 
      xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
      xmlhttp.send("username=" + username + "&" + "password=" + password); 
     } else { 
      sweetAlert("Oops...", "Please enter your password!", "error"); 
     } 
    } else { 
     sweetAlert("Oops...", "Please enter your username!", "error"); 
    } 
}); 
}); 

hier Jetzt ist die PHP-Datei

<?php 
include("connectdb.php"); 
$username = mysqli_escape_string($conn, $_POST['username']); 
$password = mysqli_escape_string($conn, $_POST['password']); 
    $password = md5($password); 

$getLogin = "SELECT id FROM user WHERE username = '$username' and password = '$password'"; 
$result = mysqli_query($conn, $getLogin); 
if(!$result){ 
    echo "Query Error: ". mysqli_error($conn); 
    die(); 
} 
$count = mysqli_num_rows($result); 
if($count == 1){ 
    echo "success"; 
}else{ 
     echo "failed"; 
} 
?> 
+0

PHP-Code funktioniert in keiner Umgebung; Es muss tatsächlich von einem PHP-fähigen Server verarbeitet werden. Für lokale Entwicklung, installiere ein PHP dev env wie xampp und sende deine AJAX Anfragen an 'localhost'. –

+0

Folgen Sie @ChrisG Beratung: Bauen Sie sich eine richtige Entwicklungs-/Produktionspipeline. Build & Test lokal (dh Ihre Entwickler-Box hostet eine lokale Version Ihres Servers), dann drücken Sie auf Produktion, wenn Sie zur Prime-Time bereit sind. Sie werden in der Lage sein, ein gut konstruiertes System zu entwerfen, das dem Test der Nutzung standhält. Selbst wenn Sie auf dem Weg eine Methode finden, einen Server lokale PHP-Dateien verarbeiten zu lassen, tun Sie das nicht. Ihr Server wird in kürzester Zeit tief gehackt. – YvesLeBorg

+0

Schätzen Sie die Kommentare, Sir. Vielen Dank! –

Antwort

1

Sie nicht PHP-Code auf Ihrem cordova Projekt ausführen können . Das PHP muss auf einer PHP-fähigen Umgebung wie Ihrem Server ausgeführt werden. Ihr PHP-Code verwendet auch eine Datenbank, und diese Datenbank muss auf einem Server konfiguriert werden, was lokal durchgeführt werden kann, aber dann wird sie offensichtlich nicht zwischen den Geräten geteilt.

Es scheint, dass Sie nicht genau wissen, was PHP ist. Sie sollten anfangen, darüber zu lernen und zu verstehen, wie es funktioniert.

+0

Ich denke, ich weiß genug, um zu wissen, dass PHP auf einem Server läuft und eine Datenbank verwendet. Ich wollte nur Dinge klären. Ich bin ein wenig verwirrt auch, weil ich Artikel lese, dass Sie Ajax benutzen, um mit PHP in cordova zu kommunizieren. Schnitt mich etwas locker :) –

+0

Ich hatte meine Datenbank auf einem Server konfiguriert. Ich wollte nur wissen, ob es möglich ist, PHP lokal, aber die Datenbank auf einem Server zu verarbeiten. –

+0

Kurze Antwort: Nein. – Scalpweb

Verwandte Themen