Я пробую GAE для php и потерялся в конструкции файла app.yaml. Я могу понять часть из учебника Google, в котором показано, как указать все запросы URL-адресов в одном файле.
https://developers.google.com/appengine/docs/php/gettingstarted/helloworld
Но в моем случае это не помогает. Я собираюсь опубликовать то, что у меня настроено, и структура файлов показана на рисунке.
App.yaml
application: xxx
version: 1
runtime: php
api_version: 1
threadsafe: true
handlers:
- url: /stylesheets
static_dir: stylesheets
- url: /images
static_dir: images
- url: /scripts
static_dir: scripts
- url: /favicon.ico
static_files: favicon.ico
upload: favicon.ico
- url: /
script: main.php
login: required
auth_fail_action: redirect
- url: /main
script: main.php
login: required
auth_fail_action: redirect
Итак, моя целевая страница для xxx.appspot.com или xxx.appsport.com/main будет main.php. И работает нормально.
main.php
<?php
session_start();
date_default_timezone_set('America/Los_Angeles');
require_once 'google/appengine/api/users/UserService.php';
use google\appengine\api\users\User;
use google\appengine\api\users\UserService;
$user = UserService::getCurrentUser();
$name= $user->getNickname();
$name = explode(".",$name);
$name[0]= ucfirst($name[0]);
$name[1]= ucfirst($name[1]);
$name = $name[0]." ".$name[1];
$_SESSION['name']=$name;
$_SESSION['email']= getenv('USER_EMAIL');
header('Location: login.php');
Таким образом, он загружается, запускает сеанс и получает имя пользователя и адрес электронной почты, выполняет форматирование нескольких строк, а затем устанавливается как переменная сеанса, а затем я проверяю соответствие условию и на основе условия перенаправление на другой сценарий, который выполняет дополнительную проверку и так далее. Чтобы сделать это просто, я просто перенаправляю его на login.php
login.php
<?php
session_start();
echo $_SESSION['name'];
Таким образом, отображаемый вывод должен быть именем переменной сеанса, но вместо этого я получаю это
Так что я сделал не так? Я собираюсь использовать страницу входа в систему для извлечения пользовательских данных из базы данных SQL и на основе значения перенаправлять пользователя на разные страницы, которые будут отображать разные формы, таблицы и отчеты в зависимости от их настроек.
Например. Из login.php
если userA принадлежит Dept1
заголовок ('Расположение: /Dept1/main.php');
Еще
заголовок ('Расположение: /Deptx/main.php');
Поэтому я ожидаю много перенаправлений, и каждое из перенаправлений должно также иметь возможность переносить установленные переменные сеанса. Я могу сделать это, работая на обычном сервере PHP. Версия GAE требует некоторого повторного изучения. Я хотел бы заранее поблагодарить любого, просто за то, что он нашел время, чтобы читать до конца. Спасибо.
Также было бы неплохо, если бы кто-нибудь мог сделать подробное руководство о том, как использовать app.yaml и как его можно использовать с демонстрационным примером, например, в w3school.