Подтвердить что ты не робот

Отправка запроса REST на Google Cloud PHPMyAdmin Server не работает?

Я успешно развернул сервер phpMyAdmin на Google Cloud, выполнив ссылку . У меня возникли проблемы с попыткой записать в базу данных, которую я создал в phpMyAdmin. Я пытаюсь создать службу уведомлений на основе нового Firebase Cloud Messaging, который выпустил Google.

NotificationInstanceService.java

public class NotificationInstanceService extends FirebaseInstanceIdService {
    private static final String TAG = "NotificationInstance";

    @Override
    public void onTokenRefresh() {

        //Getting registration token
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();

        //Displaying token on logcat
        Log.d(TAG, "Refreshed token: " + refreshedToken);

        sendRegistrationToServer(refreshedToken);

    }

    private void sendRegistrationToServer(String token) {
        //You can implement this method to store the token on your server
        //Not required for current project
        OkHttpClient client = new OkHttpClient();
        //Create the request body
        RequestBody body = new FormBody.Builder().add("Token", token).build();
        //Know where to send the request to
        Request request = new Request.Builder().url("<db link>.appspot.com/fcm/register.php")
                .post(body)
                .build();
        //Create
        try {
            client.newCall(request).execute();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

И я развернул в https://<db link>.appspot.com файл под /fcm/register.php, который выглядит так:

register.php

<?php
    if (isset($_POST["Token"])) {

           $_uv_Token=$_POST["Token"];
           $conn = mysqli_connect("<db link>.appspot.com","root","","fcm") or die("Error connecting");
           $q="INSERT INTO users (Token) VALUES ( '$_uv_Token') "
              ." ON DUPLICATE KEY UPDATE Token = '$_uv_Token';";

      mysqli_query($conn,$q) or die(mysqli_error($conn));
      mysqli_close($conn);
    }
 ?>

Я запутался, потому что, похоже, я ничего не писал в своей базе данных, называемой пользователями, которые, как я знаю, уже созданы на сервере MySQL, созданном на phpMyAdmin. Я знаю, что имя пользователя и пароль также уже установлены на register.php. Есть ли способ отлаживать, действительно ли мой script входит в PHP-код? Как я могу отлаживать код PHP? Я также утверждаю, что запрос фактически строится, поскольку я могу отлаживать эту часть кода. Любая помощь будет оценена по достоинству. Спасибо!

EDIT: некоторые файлы, которые могут быть полезны при попытке развернуть мой сервер:

app.yaml:

application: <app server url>
service: default
runtime: php55
api_version: 1
version: alpha-001

handlers:

- url: /(.+\.(ico|jpg|png|gif))$
  static_files: \1
  upload: (.+\.(ico|jpg|png|gif))$
  application_readable: true

- url: /(.+\.(htm|html|css|js))$
  static_files: \1
  upload: (.+\.(htm|html|css|js))$
  application_readable: true

- url: /(.+\.php)$
  script: \1
  login: admin

- url: /.*
  script: index.php
  login: admin

- url: /.*
  script: register.php
  login: admin

config.inc.php:

<?php 
$cfg['blowfish_secret'] = '<Secret>'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

/*
 * Servers configuration
 */
$i = 0;

// Change this to use the project and instance that you've created.
$host = '/cloudsql/<app server url>:us-central1:<database name>-app-php';
$type = 'socket';

/*
* First server
*/
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['socket'] = $host;
$cfg['Servers'][$i]['connect_type'] = $type;
$cfg['Servers'][$i]['compress'] = false;
/* Select mysql if your server does not have mysqli */
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
/*
 * End of servers configuration
 */

/*
 * Directories for saving/loading files from server
 */
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';

$cfg['PmaNoRelation_DisableWarning'] = true;
$cfg['ExecTimeLimit'] = 60;
$cfg['CheckConfigurationPermissions'] = false;
// [END all]

php.ini:

google_app_engine.enable_functions = "php_uname, getmypid"

EDIT: текст, когда в браузере, перейдите в .appspot.com/fcm/register.php

array (11) {[ "pmaCookieVer" ] = > string (1) "5" [ "pma_lang" ] = > string (2) "en" [ "pma_collation_connection" ] = > строка (15) "utf8_unicode_ci" [ "pma_console_height" ] = > строка (2) "92" [ "SACSID" ] = > строка (355) "~ AJKiYcFgym76QZfbMX35ddCTdKKf-O7q5koLvNZ0coWTMvw9aNlR5fusNyLRzFyw5DB_t2ygVuTEjHwgrgBco4-wr_V3Eer_Mf0CDuGX2e4IpirCNeiGxkRvaLgRPPyZNZWKUx1mF_DChjsksTirkY5WCzlA3G3MO9bBScrLw8kNOFGnvzkev3-B2x31s_TmnDN5aJ0G3-nPueI4FPpKaaMlPsITziccvXMpiehglQOKoo1Bol3EZSF1tjI9QoJuc-6X_sHgJ0IEppg7K-cBapaEx5CmDD2kWOggnVPWnGj1SiKFUnE3DZD46bjovf5me7IdwfVX22bv5D2PJDPQEN4m3D7yP3-Обмотка" [ "pma_console_config" ] = > строка (103) "{" AlwaysExpand "ложь" startHistory "ложь" currentQuery ": правда," enterExecutes ": ложные," darkTheme "ложь}" [ "pma_console_mode" ] = > string (4) "show" [ "phpMyAdmin" ] = > string (40) msgstr "msgstr "" "". msgstr "". "dwKZ9gQPCoe/Uk4sWS4s2g ==" }

new register.php:

<?php
    if (isset($_REQUEST["Token"])) {

           $_uv_Token=$_REQUEST["Token"];
           $conn = mysqli_connect("/cloudsql/<Database ServerURL>","root","","FCM") or die("Error connecting");
           $q="INSERT INTO users (Token) VALUES ( '$_uv_Token') "
              ." ON DUPLICATE KEY UPDATE Token = '$_uv_Token';";
      var_dump(mysqli_query($conn,$q));
      mysqli_query($conn,$q) or die(mysqli_error($conn));
      mysqli_close($conn);
    } else {
        var_dump($_REQUEST);
    }
 ?>

NotificationInstanceService.java

Новый запрос POST:

    Request request = new Request.Builder().url("<Application Server>/fcm/register.php?Token=123")
            .post(body)
            .build();
4b9b3361

Ответ 1

Я не знаю, что именно на ваш вопрос, это непонятно. но так как вы спросили: Is there any way I can debug whether or not my script is actually going into the PHP code? How can I debug the PHP code? вот ваш ответ:

Измените свой PHP-код на это:

<?php
    if (isset($_POST["Token"])) {

           $_uv_Token=$_POST["Token"];
           $conn = mysqli_connect("<db link>.appspot.com","root","","fcm") or die("Error connecting");
           $q="INSERT INTO users (`Token`) VALUES ( `{$_uv_Token}`) "
              ." ON DUPLICATE KEY UPDATE `Token` = `{$_uv_Token}`;";

      mysqli_query($conn,$q) or die(mysqli_error($conn));
      mysqli_close($conn);
    } else {
        echo "Token is not set!";
    }
?>

затем в NotificationInstanceService.java проверьте ответ вызова OkHttpClient:

...
    try {
        Response response = client.newCall(request).execute();
    } catch (IOException e) {
        e.printStackTrace();
    }

    if (!response.isSuccessful()){
        Log.w(TAG, "Unexpected response"+response.toString());
    } else {
        Log.w(TAG, "response: "+response.body().string());
    }
...