我遇到会话消息的问题,当我进入页面时会弹出一个空白的弹出窗口。其中没有消息。它旨在创建诸如页面删除或页面创建之类的消息。它的工作原理除了你进入页面时的开头问题,它会显示一个空白的弹出消息。
session.php文件
<?php
ini_set('session.bug_compat_warn', 0);
ini_set('session.bug_compat_42', 0);
session_start();
function message() {
if (isset($_SESSION["message"])) {
$output = htmlentities($_SESSION["message"]);
//clear message after use
$_SESSION["message"] = null;
return $output;
}
}
function errors() {
if (isset($_SESSION["errors"])) {
$errors = $_SESSION["errors"];
//clear message after use
$_SESSION["errors"] = null;
return $errors;
}
}
?>
页
<?php require_once("includes/session.php"); ?>
<div id="page">
<?php $alertmessage= message(); ?>
<?php echo "<script type='text/javascript'>alert('{$alertmessage}');</script>"; ?>
<h2>Manage Admins</h2>
<table>
<tr>
<th style="text-align: left; width: 200px;">Username</th>
<th colspan="2" style="text-align: left;">Actions</th>
</tr>
<?php while($admin = mysqli_fetch_assoc($admin_set)) { ?>
<tr>
<td>
<?php echo htmlentities($admin["username"]); ?>
<br />
<?php //echo htmlentities($admin["hashed_password"]); ?>
</td>
<td><a href="edit_admin.php?id=<?php echo urlencode($admin["id"]); ?>">Edit</a></td>
<td><a href="delete_admin.php?id=<?php echo urlencode($admin["id"]); ?>" onClick="return confirm('Are you sure you want to delete this admin?')">Delete</a></td>
</tr>
<?php } ?>
</table>
<br/>
<table>
<tr>
<td><a href="new_admin.php">Add new admin</a></td>
</tr>
</table>
</div>
答案 0 :(得分:0)
您应该检查页面模板中的消息是否为空。如果会话中没有消息,则最简单的解决方案是更改message()
和errors()
以返回false:
function message() {
if (isset($_SESSION["message"])) {
$output = htmlentities($_SESSION["message"]);
//clear message after use
$_SESSION["message"] = null;
return $output;
}
return false;
}
然后在你的模板中,你应该在回复javascript之前检查$alertmessage
是否为false:
<?php if($alertmessage)
echo "<script type='text/javascript'>alert('{$alertmessage}');</script>";?>
答案 1 :(得分:0)
如果没有消息,如果你从函数返回false,那么你可以去
<?php
if ($alertmessage = message()) echo "<script type='text/javascript'>alert('{$alertmessage}');</script>";
然后,只有在显示消息时才会收到警告