Verbinden Android-app auf externe Datenbank (phpmyadmin)

Ich versuche eine Verbindung zu meinem android-Anwendung mit einer externen Datenbank.
Ich habe einige php-Skripte auf einem ftp-server, bieten eine Funktion für meine Datenbank.
Auf meiner phpmyadmin-Datenbank habe ich eine Tabelle 'users'.
wenn ich versuche, fügen Sie einen neuen Benutzer meine android-app Zugriff auf meine php-Skripte, sondern dann die "mysql_query" return immer false und der Benutzer erscheint nicht in meiner Tabelle auf der online-Datenbank.
in meinem ftp-site habe ich ein index.php Datei-und einen Ordner "include". in diesem Ordner habe ich die drei Dateien mit den Funktionen und Parameter: config.php, db_connect.php, db_function.php.

wahrscheinlich der Fehler ist doof, aber ich bin neu in php.
vielen Dank an alle.

hier ist mein java-code:
ich benutze registerUser einfügen der Benutzer mit getjsonfromurl

private static String loginURL = "php_script_adress_on_ftp";
    private static String registerURL = "php_script_adress_on_ftp";

    private static String login_tag = "login";
    private static String register_tag = "register";

public JSONObject registerUser(String name, String email, String password){
        //Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("tag", register_tag));
        params.add(new BasicNameValuePair("name", name));
        params.add(new BasicNameValuePair("email", email));
        params.add(new BasicNameValuePair("password", password));

        //getting JSON Object
        JSONObject json = jsonParser.getJSONFromUrl(registerURL, params);
        //return json
        return json;
    }

//das ist die jsonfromurl Funktion

public JSONObject getJSONFromUrl(String url, List<NameValuePair> params) {

        //Making HTTP request
        try {
            //defaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);
            httpPost.setEntity(new UrlEncodedFormEntity(params));

            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
            Log.e("JSON", json);
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        //try parse the string to a JSON object
        try {
            jObj = new JSONObject(json);            
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }

        //return JSON String
        return jObj;

    }

hier ist meine index.php Datei, die rufe ich aus dem android app.
$user = $db->storeUser($name, $email, $Passwort); return immer false bei Fehler Nummer '1' Fehler in der Registrierung

<?php

/**
 * File to handle all API requests
 * Accepts GET and POST
 * 
 * Each request will be identified by TAG
 * Response will be JSON data

  /**
 * check for POST request 
 */
if (isset($_POST['tag']) && $_POST['tag'] != '') {
    //get tag
    $tag = $_POST['tag'];

    //include db handler
    require_once 'include/DB_Functions.php';
    $db = new DB_Functions();

    //response Array
    $response = array("tag" => $tag, "success" => 0, "error" => 0);

    //check for tag type
    if ($tag == 'login') {
        //Request type is check Login
        $email = $_POST['email'];
        $password = $_POST['password'];

        //check for user
        $user = $db->getUserByEmailAndPassword($email, $password);
        if ($user != false) {
            //user found
            //echo json with success = 1
            $response["success"] = 1;
            $response["uid"] = $user["unique_id"];
            $response["user"]["name"] = $user["name"];
            $response["user"]["email"] = $user["email"];
            $response["user"]["created_at"] = $user["created_at"];
            $response["user"]["updated_at"] = $user["updated_at"];
            echo json_encode($response);
        } else {
            //user not found
            //echo json with error = 1
            $response["error"] = 1;
            $response["error_msg"] = "Incorrect email or password!";
            echo json_encode($response);
        }
    } else
 if ($tag == 'register') {
        //Request type is Register new user
        $name = $_POST['name'];
        $email = $_POST['email'];
        $password = $_POST['password'];

        //check if user is already existed
        if ($db->isUserExisted($email)) {
            //user is already existed - error response
            $response["error"] = 2;
            $response["error_msg"] = "User already existed";
            echo json_encode($response);
        } else {
            //store user
            $user = $db->storeUser($name, $email, $password);
            if ($user) {
                //user stored successfully
                $response["success"] = 1;
                $response["uid"] = $user["unique_id"];
                $response["user"]["name"] = $user["name"];
                $response["user"]["email"] = $user["email"];
                $response["user"]["created_at"] = $user["created_at"];
                $response["user"]["updated_at"] = $user["updated_at"];
                echo json_encode($response);
            } else {
                //user failed to store
                $response["error"] = 1;
                $response["error_msg"] = "Error occured in Registration";
                echo json_encode($response);
            }
        }
    } else {
        echo "Invalid Request";
    }
} else {
    echo "Access Denied";
}
?>

hier ist meine config.php. ist es richtig, geben Sie den host in dieser Weise? ich habe auch versucht mit http

<?php

/**
 * Database config variables
 */
define("DB_HOST", "sql3.freemysqlhosting.net");
define("DB_USER", "my_user");
define("DB_PASSWORD", "my_psw");
define("DB_DATABASE", "mydb_name");
?>

hier connect_db.php

<?php
class DB_Connect {

    //constructor
    function __construct() {

    }

    //destructor
    function __destruct() {
        //$this->close();
    }

    //Connecting to database
    public function connect() {
        require_once 'include/config.php';
        //connecting to mysql
        $con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
        //selecting database
        mysql_select_db(DB_DATABASE);

        //return database handler
        return $con;
    }

    //Closing database connection
    public function close() {
        mysql_close();
    }

}

?>

hier db_functions.php

<?php

class DB_Functions {

    private $db;

    //put your code here
    //constructor
    function __construct() {
        require_once 'DB_Connect.php';
        //connecting to database
        $this->db = new DB_Connect();
        $this->db->connect();
    }

    //destructor
    function __destruct() {

    }

    /**
     * Storing new user
     * returns user details
     */
    public function storeUser($name, $email, $password) {
        $uuid = uniqid('', true);
        $hash = $this->hashSSHA($password);
        $encrypted_password = $hash["encrypted"]; //encrypted password
        $salt = $hash["salt"]; //salt
        $result = mysql_query("INSERT INTO users(unique_id, name, email, encrypted_password, salt, created_at) VALUES('$uuid', '$name', '$email', '$encrypted_password', '$salt', NOW())");
        //check for successful store
        if ($result) {
            //get user details 
            $uid = mysql_insert_id(); //last inserted id
            $result = mysql_query("SELECT * FROM users WHERE uid = $uid");
            //return user details
            return mysql_fetch_array($result);
        } else {
            return false;
        }
    }

    /**
     * Get user by email and password
     */
    public function getUserByEmailAndPassword($email, $password) {
        $result = mysql_query("SELECT * FROM users WHERE email = '$email'") or die(mysql_error());
        //check for result 
        $no_of_rows = mysql_num_rows($result);
        if ($no_of_rows > 0) {
            $result = mysql_fetch_array($result);
            $salt = $result['salt'];
            $encrypted_password = $result['encrypted_password'];
            $hash = $this->checkhashSSHA($salt, $password);
            //check for password equality
            if ($encrypted_password == $hash) {
                //user authentication details are correct
                return $result;
            }
        } else {
            //user not found
            return false;
        }
    }

    /**
     * Check user is existed or not
     */
    public function isUserExisted($email) {
        $result = mysql_query("SELECT email from users WHERE email = '$email'");
        $no_of_rows = mysql_num_rows($result);
        if ($no_of_rows > 0) {
            //user existed 
            return true;
        } else {
            //user not existed
            return false;
        }
    }

    /**
     * Encrypting password
     * @param password
     * returns salt and encrypted password
     */
    public function hashSSHA($password) {

        $salt = sha1(rand());
        $salt = substr($salt, 0, 10);
        $encrypted = base64_encode(sha1($password . $salt, true) . $salt);
        $hash = array("salt" => $salt, "encrypted" => $encrypted);
        return $hash;
    }

    /**
     * Decrypting password
     * @param salt, password
     * returns hash string
     */
    public function checkhashSSHA($salt, $password) {

        $hash = base64_encode(sha1($password . $salt, true) . $salt);

        return $hash;
    }



}

?>

EDIT: ich veränderte die db_function.php zurück auch mysql_error aber nichts zurück

public function storeUser($name, $email, $password,$error) {
        $uuid = uniqid('', true);
        $hash = $this->hashSSHA($password);
        $encrypted_password = $hash["encrypted"]; //encrypted password
        $salt = $hash["salt"]; //salt
        $result = mysqli_query("INSERT INTO users(unique_id, name, email, encrypted_password, salt, created_at) VALUES('$uuid', '$name', '$email', '$encrypted_password', '$salt', NOW())");
        //check for successful store
        if (!$result) {
            //get user details 
            $uid = mysqli_insert_id(); //last inserted id
            $result = mysqli_query("SELECT * FROM users WHERE uid = $uid");
            //return user details
$error = mysql_error();            
return mysql_fetch_array($result);
        } else {
$error = mysql_error();
            return false;
        }
    }

und ich modiied die index.php die Rückkehr der mysql_error
....
....

 $user = $db->storeUser($name, $email, $password,$error);
            if ($user) {
                //user stored successfully
                $response["success"] = 1;
                $response["uid"] = $user["unique_id"];
                $response["user"]["name"] = $user["name"];
                $response["user"]["email"] = $user["email"];
                $response["user"]["created_at"] = $user["created_at"];
                $response["user"]["updated_at"] = $user["updated_at"];
                echo json_encode($response);
            } else {
                //user failed to store
                $response["error"] = 1;
                $response["error_msg"] = $error;
                echo json_encode($response);
            }

...
...

auch ich verwendet mysqli_query und nicht mysql_query aber nichts geändert.

LÖSUNG:
Ich fand heraus, dass altervista gemacht, eine Umleitung von HTTP-POST und nach dem redirect wurde es ein HTTP-GET ohne Parameter. ich weiß nicht, was der Grund war. ich habe die domain .com -, aber es leitet die Anfrage an .org. also habe ich die Anfrage direkt zu .org und es beginnt zu arbeiten!

  • php scripts on a ftp server Ich glaube nicht, dass ein FTP-server können PHP-Dateien
  • danke für die Antwort! sind Sie sicher? und wo muss ich den php-Dateien? und wenn der ftp-server nicht ausgeführt, php-Dateien, warum es wieder den "Fehler" string in die index.php Datei?
  • Ich denke, dass du es hochgeladen mit FTP auf einen web-server? Auf einem web-server (wie Apache) mit PHP läuft.
  • Versuchen Sie, die Ausgabe mysql_error() am Ende der Methode storeUser(). Ich weiß nicht, wo Ihr code fehlschlägt. Vielleicht fügen Sie einige Ausgänge, so dass Sie sehen können, die Verzweigungen, die getroffen werden, wenn die Klauseln etc.
  • btw: die mysql_* Funktionen sind veraltet. Schalter auf mysqli_* oder PDO
  • Sorry im newby mit php.. Wie kann ich Ausgaben hinzufügen, wenn ich nicht eine Konsole? Ich setze "return mysql_error() ;" und nicht "return false;"? Und die Meldung im java-code als json-Objekt?
  • $error = mysql_error(); return false; nichts zurückgibt, ist es nur weist den MySQL-Fehler auf die nicht verwendete variable $error. Wenn Sie ersetzen Sie es mit die(mysql_error()); den MySQL-Fehler wird zurückgegeben, um Ihre Java-code
  • alle Rechte erhalte ich die Fehlermeldung: access denied for user 'my_user_ftp'@'localhost'(using password: NO) Wie kann ich es lösen?
  • Anscheinend sind Sie nicht mit der Datenbank verbunden. Sind Sie sicher, dass Benutzer die richtigen Verbindungseinstellungen? Die Nachricht sagt, dass Sie versuchen, eine Verbindung ohne Angabe eines Kennworts.
  • Ok, also das problem ist, dass die Parameter, die ich übergebe mein httppost null auf server-Seite, aber nicht auf null, wenn ich ausführen, die httppost. also, wenn ich Zugang zu index.php die "tag" - Wert null ist und das Skript zurückgeben, die mir den string in die Letzte "else" - Klausel, die lautet "Zugriff Verweigert" weiß jemand, warum meine parameter sind null auf server-Seite?

InformationsquelleAutor user2953054 | 2013-11-04
Schreibe einen Kommentar