【问题标题】:Can't read PHP session array if "windows authentication" is enabled on IIS如果在 IIS 上启用了“Windows 身份验证”,则无法读取 PHP 会话数组
【发布时间】:2019-10-07 23:14:29
【问题描述】:

我尝试创建一个小的登录页面(site1),登录名应该存储在会话变量中。然后站点 2 应该读取会话变量。但是在site2上,如果我在IIS服务器上启用“windows身份验证”->如果我禁用“windows身份验证”->会话变量填写正确,则会话变量为空。

我还需要配置什么才能使用会话变量并启用“Windows 身份验证”吗?

site1.php

<?php session_start(); ?>

<?php include ("seitenlocation.php"); ?>
<form method="post" action="?login=1" accept-charset="UTF-8" id="login">
  <input type="text" id="benutzer" name="benutzer" value="myname" required>
    <button type="submit">Go</button>
</form>

seitenlocation.php

<?php
session_start();

if(isset($_GET['login'])) {
    $benutzer = $_POST['benutzer'];
    $_SESSION['uname'] = $benutzer;
    header('Location: site2.php');
}

site2.php

<?php
session_start();
echo var_dump($_SESSION['uname']);

感谢您的帮助!

【问题讨论】:

  • 您之前和现在使用的是哪个 iis 和 php 版本?您可以使用提琴手来比较成功和失败的结果。 telerik.com/fiddler

标签: php iis session-variables


【解决方案1】:

您需要对两个站点使用相同的身份验证。如果您对站点 1 使用匿名,对站点 2 使用 windows,则会话将为空白。 如果您对两个站点都使用 Windows,它将显示相同的会话 ID。

简而言之,您需要为两个站点设置相同的身份验证。

【讨论】:

  • 所有 3 个文件都在同一个文件夹中-> 所以我为该文件夹启用了“Windows 身份验证”。在您的示例中,“echo $_SESSION['uname'];”也是空的
  • 喜欢这个image1image2
  • 是的,所有 3 个文件都在同一个文件夹中。
  • 是的,我看到了会话 ID,但我需要 $_SESSION['uname']
  • 我还获得了会话用户名image。您是否仅对 site2.php 页面启用了 Windows 身份验证?如果您按照所说的那样进行操作,则需要对两个页面使用相同的身份验证。如果您使用不同的身份验证,它将无法正常工作。
猜你喜欢
  • 2014-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多