Проект предназначен для ввода пользовательских данных и проверки подключенного хранилища данных 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()
. Там нет сообщения об ошибке, которое я вижу. Мне интересно, есть ли какая-нибудь регистрация, которую я могу включить, чтобы помочь с этим.