私はphp用のGAEを試していて、app.yamlファイルの構築に迷いました。すべてのURLリクエストを単一のファイルに向ける方法を示すGoogleチュートリアルの部分を理解できます
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 に属している場合
header('場所: /Dept1/main.php');
そうしないと
header('場所: /Deptx/main.php');
したがって、多くのリダイレクトが予想され、各リダイレクトは、設定されているセッション変数も引き継ぐことができなければなりません。通常のPHPサーバーで実行中にこれを行うことができます。GAE 版は再学習が必要です。聞くまで時間を割いて読んでくれた人に、事前に感謝したいと思います。ありがとうございました。
また、app.yaml の使用方法と、w3school のようなデモ例での使用方法に関する詳細なチュートリアルを誰かが実行できるとよいでしょう。