我们为客户构建了一个小型项目原型(prototype),由于我们的保密协议(protocol),该原型(prototype)需要密码保护。然而,即使我们已经登录,我们对 $_SESSION 变量的使用似乎也破坏了从辅助源输入时提供的参数。
这就是我们想要发生的事情:
www.externalsite.com -> oursite.com/#/route?param="value"
这就是发生的事情:
externalsite.com -> oursite.com/#/route?param="value"-> oursite.com/#/defaultRoute
如果有人能告诉我如何解决这个问题,那就太棒了 - 通过提供实际的解决方案或链接到可能帮助或引导我们指向正确方向的资源。
这是我们的index.php
!doctype html>
<html>
<head>
<title>prototype</title>
</head>
<body ng-app="angularApp" ng-controller="mainCtrl">
<?php require('access.php'); ?>
<div class="wrap">
<!-- CONTENT -->
</div>
</body>
</html>
access.php:
<?php
$password = '43844e5d424a5c7d228f265f8c899d47a65cf52f';
session_start();
if (!isset($_SESSION['loggedIn'])) {
$_SESSION['loggedIn'] = false;
}
if (isset($_POST['password'])) {
if (sha1($_POST['password']) == $password) {
$_SESSION['loggedIn'] = true;
} else {
die ('Incorrect password');
}
}
if (!$_SESSION['loggedIn']): ?>
<html>
<head>
<title>Login</title>
</head>
<body>
<form method="post">
<div class="form-group">
<label for="passwordInput">Password</label>
<input type="password" name="password">
</div>
<input type="submit" value="Login">
</form>
</body>
</html>
<?php
exit();
endif;
?>
最佳答案
session_start()
函数必须是文档中的第一个内容。在任何 HTML 标记之前。您需要将其移动到 index.php
:
<?php
session_start();
?>
<!doctype html>
<html>
<head>
<title>prototype</title>
</head>
<body ng-app="angularApp" ng-controller="mainCtrl">
<?php require('access.php'); ?>
<div class="wrap">
<!-- CONTENT -->
</div>
</body>
</html>
关于javascript - $_SESSION 破坏 url 中的参数(在 Angular 项目中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29825605/