【问题标题】:I have trouble with my SESSION that change when i insert somethnig with POST当我用 POST 插入一些东西时,我的 SESSION 发生了变化
【发布时间】:2015-03-20 21:55:12
【问题描述】:

我在下面的代码中遇到了一些问题,将$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>

【问题讨论】:

  • 通过phpinfo();检查register_globals

标签: php forms session


【解决方案1】:

我想说会话变量最常见的问题是在文档顶部忘记session_start()。您实际上已将 session_start() 放在它所属的位置,但您忘记定义会话变量 :)

这就是它的完成方式。

$_SESSION['level'] = $_POST['level'];

【讨论】:

    【解决方案2】:

    您的意思是将$level 放入$_SESSION['level']。您可以将 $_SESSION 变量视为一个数组,您必须在其中给键一个值。 你的情况

    $_SESSION['level'] = $_POST['level']
    

    【讨论】:

      【解决方案3】:
      <?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;
      

      请注意:伪代码

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-13
        • 1970-01-01
        • 1970-01-01
        • 2014-05-19
        • 2010-10-01
        • 1970-01-01
        相关资源
        最近更新 更多