表单提交后如何保持会话数组的值?

时间:2016-03-25 23:09:08

标签: php arrays session

我使用两个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>

感谢所有人:)

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

这很容易。代替

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

你应该

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

此处的问题是= +1,它将值设置为1并且不会增加。

相关问题