【问题标题】:How to keep value of session array after form submit?表单提交后如何保持会话数组的值?
【发布时间】:2016-03-25 23:09:08
【问题描述】:

我正在使用两个 php 文件编写问题脚本。其中之一是存储我的问题答案和一个整数值的问题。程序就是这样运行的。

例如

$kelime[5]["question"] = "Mavi";
$kelime[5]["answer"] = "blue";
$kelime[5]["number"] = 0;

问题是“Mavi”,答案是“蓝色”

当它问我是否给出真实答案时,如果数字 >= 10,数字必须增加 1,不要再问我这个问题。但是数值永远不会增加它在我做错的地方提交后总是一样的?

questions.php

<?php

$kelime[0]["tr"] = "Sarı";
$kelime[0]["en"] = "yellow";
$kelime[0]["nr"] = 0;

$kelime[1]["tr"] = "Kırmızı";
$kelime[1]["en"] = "red";
$kelime[1]["nr"] = 0;

$kelime[2]["tr"] = "Yeşil";
$kelime[2]["en"] = "green";
$kelime[2]["nr"] = 0;

$kelime[3]["tr"] = "Siyah";
$kelime[3]["en"] = "black";
$kelime[3]["nr"] = 0;

$kelime[4]["tr"] = "Beyaz";
$kelime[4]["en"] = "white";
$kelime[4]["nr"] = 0;

$kelime[5]["tr"] = "Mavi";
$kelime[5]["en"] = "blue";
$kelime[5]["nr"] = 0;

$kelime[6]["tr"] = "Turuncu";
$kelime[6]["en"] = "orange";
$kelime[6]["nr"] = 0;

$kelime[7]["tr"] = "Gri";
$kelime[7]["en"] = "grey";
$kelime[7]["nr"] = 0;

$kelime[8]["tr"] = "Mor";
$kelime[8]["en"] = "purple";
$kelime[8]["nr"] = 0;

$kelime[9]["tr"] = "Pembe";
$kelime[9]["en"] = "pink";
$kelime[9]["nr"] = 0;

$kelime[10]["tr"] = "Altın";
$kelime[10]["en"] = "gold";
$kelime[10]["nr"] = 0;

$sayi = array(0,1,2,3,4,5,6,7,8,9,10);

?>

asking.php

    <?php

    session_start();
    require "kelimeler.php";
    $_SESSION['sayi'] = $sayi;
    $_SESSION['kelime'] = $kelime;

    $i = rand(0,4);

    print_r($_SESSION['kelime']);
    setcookie("soru", $_SESSION['kelime'][$_SESSION['sayi'][$i]]["tr"]);
    setcookie("cevap", $_SESSION['kelime'][$_SESSION['sayi'][$i]]["en"]);

?>

<html>
<body>
    <div class="content">
        <div class="kelime"><?php echo $_SESSION['kelime'][$_SESSION['sayi']     [$i]]["tr"] ?></div>
        <form method="post" action="">
            <input id="cvp" type="text" name="kelime" placeholder="die Antwort">
            <input type="submit" name="gonder" value="SENDEN !"/>
        </form>
    </div>
    <?php

        if (isset($_POST["kelime"])) {

            if ($_POST["kelime"] == $_COOKIE['cevap']) {
                    echo '<div class="bildirim">You are right &#10004</div>';
                    $_SESSION['kelime'][$i]["nr"] = +1;
                    if ($kelime[$i]["nr"] >= 10) {
                        unset($_SESSION['sayi'][$i]);
                    }
            } else {
                    echo '<div class="bildirim">'.$_COOKIE['soru'].' = '.$_COOKIE['cevap'].'</div>';
            }

        }

    ?>
</body>
</html>

感谢所有从现在开始:)

【问题讨论】:

    标签: php arrays session


    【解决方案1】:

    我认为主要问题出在脚本的开头:

    session_start();
    require "kelimeler.php";
    $_SESSION['sayi'] = $sayi;       // <<<--here
    $_SESSION['kelime'] = $kelime;   // <<<--and here
    

    您似乎在每次页面加载时都将这些会话值重置为原始数组。仅当它们尚未设置时才应初始化它们。

    session_start();
    require "kelimeler.php";
    if (!isset($_SESSION['sayi'])) {
        $_SESSION['sayi'] = $sayi;
    }
    if (!isset($_SESSION['kelime'])) {
        $_SESSION['kelime'] = $kelime;
    }
    

    然后,正如另一个答案指出的那样,$_SESSION['kelime'][$i]["nr"] = +1; 不会增加该值。也许您打算使用$_SESSION['kelime'][$i]["nr"] += 1;

    【讨论】:

      【解决方案2】:

      这很容易。而是

      $_SESSION['kelime'][$i]["nr"] = +1;
      

      你应该

      $_SESSION['kelime'][$i]["nr"]++;
      // or $_SESSION['kelime'][$i]["nr"] += 1;
      

      这里的问题是 = +1 将值设置为 1 并且不递增。

      【讨论】:

        猜你喜欢
        • 2020-08-06
        • 1970-01-01
        • 2011-01-15
        • 2013-01-08
        • 1970-01-01
        • 2021-01-13
        • 1970-01-01
        • 2017-07-22
        • 2012-04-11
        相关资源
        最近更新 更多