使用 HTML <form action method=GET> 在 PHP 页面中重新启动会话
Posted
技术标签:
【中文标题】使用 HTML <form action method=GET> 在 PHP 页面中重新启动会话【英文标题】:restart session in PHP page using HTML <form action method=GET> 【发布时间】:2017-08-02 11:44:36 【问题描述】:我正在尝试调用函数session_destroy()
并打印一个字符串但没有成功。我试图关注这个帖子calling-a-php-function-within-an-a-tag-anchor-tag 并重定向到另一个页面,但我收到了错误
警告:session_destroy(): 试图销毁未初始化的会话
显然,如果我转到另一个页面,则没有初始化要销毁的会话。我想我应该使用像
这样的功能function restartSession
session_destroy();
print "SESSION has been destroyed - all session data deleted";
并使用 <form action="<?php $_SERVER['PHP_SELF'] ?>" method="GET">
,但我如何通过使用一个 php 文件来做到这一点?
【问题讨论】:
【参考方案1】:GET
可以使用普通的锚标记:
<a href="http://localhost/lab5.php?restartSession=true">restart Session</a>
然后你也可以把它放到你的 index.php 中:
if(isset($_GET["restartSession"]))
restartSession();
function restartSession()
if(session_id() == '') //check if Session already exists
print "Only start Session";
session_start();
else
session_destroy();
session_start();
print "Session restarted";
【讨论】:
谢谢!它适用于重新启动计数器!但会话 ID 保持不变,并且“会话已启动”附加到会话 ID 中,并且屏幕截图 2 中的信息保持不变,我无法显示屏幕截图 3 中的信息。还有其他想法吗? @sirio 你把代码放在哪里了?将其放在顶部并在输出中添加一个 以将行彼此分开 如果我这样做,我会收到通知:会话已经开始 - 忽略 session_start(),然后忽略之前的所有代码。该页面应仅显示屏幕截图 3 中的代码,而不仅仅是将其分开。 @sirio 您可以将应该在其他情况下显示的 html 放在 if 括号中 正如 URL 所说的 action=restartSession 我相信应该使用 【参考方案2】:我没有看到您的 lab5destroy.php 文件的代码,但我想这段代码来自该页面:
function restartSession
session_destroy();
print "SESSION has been destroyed - all session data deleted";
如果是这样,您必须在会话销毁之前初始化会话:
function restartSession
session_start();
session_destroy();
print "SESSION has been destroyed - all session data deleted";
如果你想在一个页面上销毁会话,你不需要使用表单。 您只需更新您的链接:
<a href="http://localhost/lab5.php?restart=1">restart session</a>
在您的 lab5.php 之上,您只需插入以下代码:
<?php
if (!empty($_GET['restart']))
session_start();
session_destroy();
header('Location: http://'.$_SERVER['HTTP_HOST'].'lab5.php');
?>
【讨论】:
【参考方案3】:我的选择:创建一个 head.php 文件,其中包含 session_start();
src 文件夹中的内容,并在每个页面的顶部包含它:
<?php include "src/head.php"; ?>
稍后在您的项目中,您可以在每个页面上放置 mysql connect、style.css 和其他您想要包含的内容。
【讨论】:
以上是关于使用 HTML <form action method=GET> 在 PHP 页面中重新启动会话的主要内容,如果未能解决你的问题,请参考以下文章
form里面的action和method(post和get的方法)使用
使用 HTML <form action method=GET> 在 PHP 页面中重新启动会话