我想允许用户输入一些文本,然后使用该文本作为他们的会话用户名,然后在每个页面的顶部回显一个欢迎的“用户名”,然后是一个注销按钮,它将结束会话并允许用户输入新用户名
目前代码将允许用户输入名称,然后将显示该名称的欢迎,但如果用户更改页面,它将被销毁,输入名称的文本字段也不会消失 - 这是codeigniter中的母版页
<form action="" method="POST">
<input type="text" name="input_value">
<input type="submit" name ='in' value="LogIn">
</form>
<?php
if (session_status() == PHP_SESSION_NONE) {
session_start();
$_SESSION['userses'] = '';
}
if(session_status() == PHP_SESSION_ACTIVE && $_SESSION['userses']=='' ){
$_SESSION['userses'] = $_POST['input_value'];
echo "Welcome, ".$_SESSION['userses']."!";
}
else{
echo "Welcome, ".$_SESSION['userses']."!";
}
?>
<form action="<?php session_destroy(); ?>" method="POST">
<input type="submit" name='out' value="LogOff">
</form>
答案 0 :(得分:-1)
你必须改变
if(session_status() == PHP_SESSION_ACTIVE && $_SESSION['userses']=='' )
到
if(isset($_POST['in']) ){
$_SESSION['userses'] = $_POST['input_value'];
}
所以当他提交用户名时,这个if会捕获帖子请求,然后将输入添加到你的用户名
您不需要检查session_status
编辑:
并且如评论所述,把session_start();在每一页的开头
代码示例:
<?php session_start();
if(isset($_SESSION['userses'])) echo "Welcome".$_SESSION['userses'];
?>
<form action="" method="POST">
<input type="text" name="input_value">
<input type="submit" name ='in' value="LogIn">
</form>
<?php
if(isset($_POST['in']) ){
$_SESSION['userses'] = $_POST['input_value'];
}
?>
<form action="<?php session_destroy(); ?>" method="POST">
<input type="submit" name='out' value="LogOff">
</form>
您正在使用codeigniter,为什么不使用会话库:
https://www.codeigniter.com/user_guide/libraries/sessions.html