【问题标题】:how to set logic the right way to use post variables如何设置逻辑以正确的方式使用 post 变量
【发布时间】:2012-12-21 13:02:34
【问题描述】:

您好,我对每个页面开头的以下代码有疑问:

session_start();

if (!isset($_SESSION['a'])){
    ...create the session from some variables...
$_SESSION['a'] = $var;
$var = $_SESSION['a'];
}else{
    $var = $_SESSION['a'];
    $what = "some text";

    if (isset($_POST['one']) ){
        $var = "new input";
            $_SESSION['a'] = $var;
        echo "one was posted";
    }
    if (isset($_POST['two']) ){
            $var = "new input";
            $_SESSION['a'] = $var;
        echo "two was posted";
    }   
}

要发布的表单放在页脚中:

<form action="'.$_SERVER['PHP_SELF'].'" method="post">      
    <input type="submit" id="one" name="one"/><div>set one</div>
</form>
<form action="'.$_SERVER['PHP_SELF'].'" method="post">  
    <input type="submit" id="two" name="two"/><div>set two</div>
</form>

上面代码背后的逻辑似乎有问题。调用页面并发送帖子问题时,它不会回显并且不会将会话更改为新值。

所以如果有人可以帮助我,我真的很感激。

非常感谢。

更新:

好的,代码完全可以运行到“else”部分:

else{
    $var = $_SESSION['a'];

    if (isset($_POST["one"]) ){
        echo "post one was send";
    }
    if (isset($_POST["two"]) ){
        echo "post en was send";
    }

echo "session already exists.";
}

此部分仅显示回显:会话已存在。整个后置短语不起作用。 根据某些变量,页脚将被嵌入。所以html中的全部内容都会被回显:

echo '...
      <ul class="drop_down">
    <form action="'.$_SERVER['PHP_SELF'].'" method="post">      
        <input type="submit" id="one" name="one value="one"/><div>set one</div>
    </form>
    <form action="'.$_SERVER['PHP_SELF'].'" method="post">  
        <input type="submit" id="two" name="two" value="two"><div>set two</div>
    </form>
      </ul>
     ...';

【问题讨论】:

    标签: php html forms logic


    【解决方案1】:

    改变你的形式

       <form action="<?=$_SERVER['PHP_SELF']?>" method="post">      
       <input type="submit" id="one" name="one" value="one"/><div>set one</div>
       </form>
    <form action="<?=$_SERVER['PHP_SELF']?>" method="post">  
       <input type="submit" id="two" name="two" value="two"/><div>set two</div>
    </form>
    

    值需要发送..


    编辑#1:


    在我的系统中这工作正常..

            <?php
            session_start();
    
            if (!isset($_SESSION['a'])){
               $var='hi';
            $_SESSION['a'] = $var;
            $var = $_SESSION['a'];
            }else{
                $var = $_SESSION['a'];
                $what = "some text";
    
                if (isset($_POST['one']) ){
                    $var = "new input";
                        $_SESSION['a'] = $var;
                    echo "one was posted";
                }
                if (isset($_POST['two']) ){
                        $var = "new input";
                        $_SESSION['a'] = $var;
                    echo "two was posted";
                }   
            }
            ?>
            <form action="<?=$_SERVER['PHP_SELF']?>" method="post">      
                <input type="submit" id="one" name="one"/><div>set one</div>
            </form>
            <form action="<?=$_SERVER['PHP_SELF']?>" method="post">  
                <input type="submit" id="two" name="two"/><div>set two</div>
            </form>
    

    编辑#2


    再试一次...

            if (!isset($_SESSION['a'])){
               $var='hi';
            $_SESSION['a'] = $var;
            $var = $_SESSION['a'];
            }else{
                $var = $_SESSION['a'];
                $what = "some text";
    
                if (isset($_POST['one']) ){
                    $var = "new input1";
                        $_SESSION['a'] = $var;
                    echo "one was posted";
                    print_r($_SESSION);
                }
                if (isset($_POST['two']) ){
                        $var = "new input2";
                        $_SESSION['a'] = $var;
                    echo "two was posted";
                    print_r($_SESSION);
                }   
            }
            ?>
            <form action="<?=$_SERVER['PHP_SELF']?>" method="post">      
                <input type="submit" id="one" name="one"/><div>set one</div>
            </form>
            <form action="<?=$_SERVER['PHP_SELF']?>" method="post">  
                <input type="submit" id="two" name="two"/><div>set two</div>
            </form>
    

    这里session 打印正确

    【讨论】:

    • 它存在但忘记添加问题。
    • 这似乎也是错误的,它不起作用。在我尝试之前,帖子被毫无价值地发送。这不是必需的。
    • html 是在 php 解析器上设置的,所以它会回显 html。
    • 您好,感谢您回答这个问题,我尝试了编辑 2,但这根本不起作用。
    • 检查你的 php.ini 以获得会话支持..:)
    【解决方案2】:

    表格:

    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">      
        <input type="submit" id="one" name="one" value='one'/><div>set one</div>
    </form>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">  
        <input type="submit" id="two" name="two"value='two' /><div>set two</div>
    </form>
    

    PHP:

    <?php
    
        session_start();
    
        if (!isset($_SESSION['a'])){
            $var = 1;
            $_SESSION['a'] = $var;
            //$var = $_SESSION['a']; this is unnecessary 
        }else{
            $var = $_SESSION['a'];
            $what = "some text";
    
            if (isset($_POST['one']) ){
                $var = "one";
                $_SESSION['a'] = $var;
                echo "one was posted";
            }
            if (isset($_POST['two']) ){
                $var = "two";
                $_SESSION['a'] = $var;
                echo "two was posted";
            }   
        }
    
    ?>
    

    【讨论】:

      【解决方案3】:

      这部分需要澄清。你到底想做什么?

      if (!isset($_SESSION['a'])){
      ...create the session from some variables...
      $_SESSION['a'] = $var;
      $var = $_SESSION['a'];
      }else{
      $var = $_SESSION['a'];
      $what = "some text";
      

      试试这个:

          <?PHP
      session_start();
      if (isset($_POST['one']) )
          {
            $_SESSION['a'] = "langauage one";
            echo "one was posted";
          }
          elseif (isset($_POST['two']) )
              {
                  $_SESSION['a'] = "langauge two";
                  echo "two was posted";
              }   
              else
                  {
                      if (!isset($_SESSION['a']))
                          {
                              $_SESSION['a'] = "default langauge";
                          }
      
                  }
      

      这是 SELECT 的示例

          <?PHP
          session_start();
          if (isset($_POST['language']) )
          {
            $_SESSION['a'] = $_POST['language'];
            echo "Language has ben set to ".$_POST['language'];
          }
          else
              {
                  if (!isset($_SESSION['a']))
                      {
                          $_SESSION['a'] = "default langauge";
                      }
      
              }
      ?>
      <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
      <select title="Please choose your Language" name="language">    
           <option value="langauage one">langauage one</option>
           <option value="langauge two">langauge two</option>
      </select>
      </form>
      

      【讨论】:

      • 我将在会话中保存语言设置。因此,如果给定,它将从浏览器中读出首选语言,如果没有,它将手动设置默认值。该设置保存在 $var 中。在下一步中设置会话,如果发布特定的“id”来更改会话中保存的语言,它将回显/标题。
      • 如果您尝试设置语言,使用
      猜你喜欢
      • 2023-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      相关资源
      最近更新 更多