如何设置逻辑使用post变量的正确方法

时间:2012-12-21 13:02:34

标签: php html forms logic

你好我的每个页面的头部都有以下代码的问题:

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.";
}

此部分仅显示echo:session已存在。整个帖子短语不起作用。 根据某些变量嵌入页脚。所以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>
     ...';

3 个答案:

答案 0 :(得分:0)

更改表格

   <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正确打印

答案 1 :(得分:0)

这部分需要澄清。你究竟想做什么?

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>

答案 2 :(得分:0)

形式:

<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

    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";
        }   
    }

?>