Php 在Google App Engine中使用会话变量创建无限重定向

Php 在Google App Engine中使用会话变量创建无限重定向,php,google-app-engine,session-variables,infinite-loop,configuration-management,Php,Google App Engine,Session Variables,Infinite Loop,Configuration Management,我有一个可以在本地服务器上运行的应用程序。可以在这里找到证据: 我将相同的文件推送到这个域()的Google App Engine,得到一个无限循环重定向错误。基本上,它是从index.php跳到sign_in.php,因为我怀疑会话变量没有被设置或保存在我的条件可以识别的地方,所以它们会重定向 这里是index.php的重定向逻辑 <?php session_start(); if (isset($_SESSION['username']) && $_SESSION[

我有一个可以在本地服务器上运行的应用程序。可以在这里找到证据:

我将相同的文件推送到这个域()的Google App Engine,得到一个无限循环重定向错误。基本上,它是从index.php跳到sign_in.php,因为我怀疑会话变量没有被设置或保存在我的条件可以识别的地方,所以它们会重定向

这里是index.php的重定向逻辑

<?php 
session_start();

if (isset($_SESSION['username']) && $_SESSION['permissions']==0) {
    $_SESSION['logged_in_inventory_app_obnoxiously_long_name_to_avoid_collisions_with_other_sites'] = 1;
    header('Location: ./admin/admin.php');
} else if (isset($_SESSION['username']) && $_SESSION['permissions']==1) {
    $_SESSION['logged_in_inventory_app_obnoxiously_long_name_to_avoid_collisions_with_other_sites'] = 1;
    header('Location: ./user/user.php');
} else {
    $_SESSION['logged_in_inventory_app_obnoxiously_long_name_to_avoid_collisions_with_other_sites'] = 0;
    unset($_SESSION['username']);
    unset($_SESSION['password']);
    unset($_SESSION['create_username']);
    unset($_SESSION['create_password']);
    unset($_SESSION['password_verify']);
    header('Location: sign_in.php');
}
?>
<?php
session_start();

// Check if user entered name and password
if ((!empty($_POST["username"])) && (!empty($_POST["password"]))) {
    //... 
    //authentification checks occur here if passed, the following variables are set
    //...

    $_SESSION['username'] = $username;
    if ($_SESSION['username'] == "myemailaddress@gmail.com") {
        $_SESSION['permissions'] = 0;
    } else {
        $_SESSION['permissions'] = 1;
    }
    $_SESSION['logged_in_inventory_app_obnoxiously_long_name_to_avoid_collisions_with_other_sites'] = 1;
    }
}
//echo '<pre>' . htmlspecialchars(print_r(get_defined_vars(), true));
//var_dump($_SESSION);
if (isset($_SESSION['username']) && isset($_SESSION['logged_in_inventory_app_obnoxiously_long_name_to_avoid_collisions_with_other_sites'])) {
    if ($_SESSION['logged_in_inventory_app_obnoxiously_long_name_to_avoid_collisions_with_other_sites'] == 1) {
        echo '<META HTTP-EQUIV="Refresh" Content="0; URL=index.php">';
        exit;
    }
}
?>
然后我的main.php只是一个简单的(有点多余的)代码:


app.yaml文件一开始就完全错误

将你的app.yaml更改为类似的内容,看看你的表现如何


考虑到从未根据应用程序日志访问过sign_up.php,你确定你的app.yaml文件是正确的吗?我完全忘了谈论我的.yaml文件。我不确定它是否正确,但我目前拥有的是以下内容(请参阅原始帖子中的编辑,因为评论部分中的格式设置非常糟糕)。我不知道为什么,但它停止了重定向!您是否有机会向我提供一些资源,帮助我进一步了解为什么在处理程序中添加代码:部分在这里起作用?我非常感谢你的帮助,斯图尔特!上周我对此非常生气啊哈!:-)谢谢你!这里应该包括所有内容:
application: ***name goes here***
version: 1
runtime: php
api_version: 1
threadsafe: true
handlers:
- url: .*
  script: main.php
<?php
header('Location: index.php');
?>
application: ***name goes here***
version: 1
runtime: php
api_version: 1
threadsafe: true

handlers:
- url: /(.+)\.php
  script: \1.php

- url: /.*
  script: main.php