-3

こんにちは、すべてのページの先頭にある次のコードに問題があります。

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 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>
     ...';
4

3 に答える 3

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:

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

?>
于 2012-12-21T13:34:42.500 に答える
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>

value 送信する必要があります..


編集#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は正しく印刷されています

于 2012-12-21T13:05:27.737 に答える
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>
于 2012-12-21T13:20:21.127 に答える