我正在为 php 尝试 GAE,但在 app.yaml 文件构建中迷失了方向。我可以理解谷歌教程中的部分内容,该教程展示了如何将所有 url 请求指向单个文件
https://developers.google.com/appengine/docs/php/gettingstarted/helloworld
但这对我没有帮助。我将发布我的设置,文件结构在图片中。
应用程序.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。它工作正常。
主文件
<?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
登录.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 中的演示示例一起使用做详细教程,那就太好了。