我在下面的代码中遇到了一些问题,我不知道它是如何将$level
放入$_SESSION
的。这个$level
替换了我的用户$_SESSION['level']
,然后他就注销了。
<?php
session_start();
if( $_POST['action'] == 'Add' ) {
$level = $_POST['level'];
?>
<form action="<?php $_SERVER[PHP_SELF]; ?>" method="post" >
<input type="text" name="level" value="" placeholder="Level" /><br />
<input type="hidden" name="action" value="Add" />
<input type="submit" value="Add user" />
</form>
我认为会话变量最常见的问题是忘记了文档顶部的session_start()
。实际上,您已经将session_start()
放在了它所属的位置,但您忘记定义会话变量:)
事情就是这样做的。
$_SESSION['level'] = $_POST['level'];
您的意思是将$level
放入$_SESSION['level']
中吗。您可以将$_SESSION变量视为一个数组,您必须在其中为键指定一个值。在您的情况下
$_SESSION['level'] = $_POST['level']
<?php
session_start();
if( $_POST['action'] == 'Add' ) {
$_SESSION['level'] = ($_POST['level']) ? $_POST['level'] : null;
}
?>
然后你可以这样分配:
$level = isset($_SESSION['level']) ? $_SESSION['level'] : null;
此外,我建议用Class处理输入,这里有一个基本的类:
<?php
class Form
{
public static function post($input)
{
return ($_POST[$input]) ? $_POST[$input] : false;
}
}
?>
然后,当你有一个表单时,你不会得到一个未定义的变量,你可以像这样使用它:
Form::post('inputname');
或
if(Form::post('inputname') == 'add'):
//passed
endif;
请注意:伪代码