Хостинг-проект с dev_appserver.py дает разные результаты при развертывании в Google Cloud - PullRequest
0 голосов
/ 30 марта 2020

Проект предназначен для ввода пользовательских данных и проверки подключенного хранилища данных Google на предмет совпадения. При размещении с использованием dev_appserver.py все работает как задумано.

Это не относится к живой версии, загруженной с gcloud app deploy. Проблема возникает при попытке извлечь объект, используя его ключ для lookup.

<?php
require __DIR__ . "/vendor/autoload.php";

use Google\Cloud\Datastore\DatastoreClient;

$datastore = new DatastoreClient([
"projectId" => "54327567209-project"
]);

// Retrieving user entities
function lookup_user(DatastoreClient $datastore, string $id) {
  $key = $datastore->key("user", $id);
  $user = $datastore->lookup($key);
  return $user;
}

// Validation
$authErr = "";
$id = $pword = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  // Existence check
  if (!empty($_POST["id"]) && !empty($_POST["password"])) {
    $id = $_POST["id"];
    $pword = $_POST["password"];
    // Attempt to get user from Google Cloud
    $user = lookup_user($datastore, $id); // <---- Error happens here
    // Check if user exists and password matches
    if (!empty($user["name"]) && $user["password"] == $pword) {
      // Removed for debugging
    } else {
      // Id or password authentication fail
      $authErr = "User id or password is invalid";
    }
  } else {
    // Missing id or password
    $authErr = "User id or password is invalid";
  }
}
?>

<!DOCTYPE html>
<html>
  <head>
    <style>
      .error {color: #FF0000;}
    </style>
  </head>
  <body>
    <h2>Account Access</h2>
    <form method="post" action="">
      <div>Username: <input name="id" type="text"></input></div>
      <div>Password: <input name="password" type="password"></input></div>
      <div><input type="submit" value="Login"></div>
      </br>
      <span class="error"><?php echo $authErr; ?></span>
    </form>
  </body>
</html>

. Страница становится пустой при попытке выполнить поиск, аналогично выполнению exit(). Там нет сообщения об ошибке, которое я вижу. Мне интересно, есть ли какая-нибудь регистрация, которую я могу включить, чтобы помочь с этим.

1 Ответ

0 голосов
/ 02 апреля 2020

Проблема была с функцией lookup_user(). Удаление этой функции и вставка того же кода в строку исправили проблему.

...