会话-PHP
对于我的应用程序,有三个级别的用户:会话-PHP,php,session,Php,Session,对于我的应用程序,有三个级别的用户: 顶层(00) 中等“地区”级别 下层 构建的界面允许用户创建将分发到移动应用程序的消息 我让它工作得很好,但后来被要求添加中级。现在,尽管消息似乎更新正确,但我遇到了一个问题,在提交消息后,我没有显示“消息更新”和表单,而是收到了“您没有访问此页面的权限”消息 这种情况不会发生在中级/地区级别,仅发生在较低和较高级别。出于某些原因,对于这两个原因,在提交表单后,它没有正确地阅读$\u SESSION['store'](尽管在正常加载页面时,它会正常工作,
- 顶层(00)
- 中等“地区”级别
- 下层
$\u SESSION['store']
(尽管在正常加载页面时,它会正常工作,而不是通过POST)
我非常感谢任何指导:
<?php
session_start();
function format($input) {
$input = trim($input);
$input = stripcslashes($input);
$input = htmlspecialchars($input);
return $input;
}
$con = new PDO("sqlite:managers.db");
$store = $_SESSION['store'];
$stores;
$file;
$district;
$file = "messages/" . $store . ".txt";
if(!file_exists($file)) {
$temp = fopen($file, "w"); // create file
fclose($temp);
}
if(strpos("d", $store) == 0) {
$district = true;
$sql = "SELECT district FROM managers WHERE store = '$store'";
$statement = $con->query($sql);
$row = $statement->fetch();
$storesArray = explode(",", $row[0]);
}
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$newMessage = format($_POST['message']);
$writer = fopen($file, "w");
fwrite($writer, $newMessage);
fclose($writer);
if($district) {
foreach($storesArray as $store) {
$fileName = "messages/d" . $store . ".txt";
if(!file_exists($fileName)) {
$temp = fopen($fileName, "w"); // create file
fclose($temp);
}
$writer = fopen($fileName, "w");
fwrite($writer, $newMessage);
fclose($writer);
}
}
}
$handler = fopen($file, "r");
$currentMessage = fread($handler, filesize($file));
fclose($handler);
?>
// some code omitted //
<?php
if($store == "" || $store == null) {
echo "<p>You do not have permission to view this page</p>";
} else {
echo "<h2>Manage Messages"; if($store == "00") {
echo "<a href='admin.php'><input type='button' id='adminBack' value='Back' /></a></h2>";
} else {
echo "<a href='adminUI.php'><input type='button' id='adminBack' value='Back' /></a></h2>";
}
if($_SERVER['REQUEST_METHOD'] == 'POST') {
echo "<h2>Message Updated!</h2>";
}
echo "<form class='admin' class='col-md-6' method='post' action='manageMessages.php'>
<div class='form-group'>
<label for='message'> Message: </label>
<textarea class='form-control' id='message' name='message' >$currentMessage</textarea>
<input type='submit' value='Post Message' />
</div>
</form>";
}
?>
</div>
<!-- end page specific content -->
您的$store
变量正在被foreach覆盖:
foreach($storesArray as $store)
您必须为该foreach使用不同的名称,例如:
foreach($storesArray as $store2)
可能问题在于没有为顶级/底层用户正确设置$\u会话['store']
。我没有看到任何真正设置会话变量的代码。首先,我要看一下您的设置代码。对不起,这是在另一个(登录)页面上设置的。我将很快编辑这个问题。放置一个var_转储($_SESSION['store'])代码>位于已发布页面的顶部。然后通过post和NORMAL加载页面。在这两种情况下都是正确的还是都不正确?我想您的$store
变量正在被您的foreachforeach($storesArray as$store)
覆盖……您看到了吗?试着用一个不同的名字来命名你是绝对正确的,闪光灯。太谢谢你了!:)
foreach($storesArray as $store2)