Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 奇怪的艾尔塞夫行为_Php_If Statement - Fatal编程技术网

Php 奇怪的艾尔塞夫行为

Php 奇怪的艾尔塞夫行为,php,if-statement,Php,If Statement,我想根据用户所处的阶段设置等待时间。我只是想快速测试一下,然后把这个: function towait(){ if ($query = mysql_query('select fase, lastone from users where id = "'.$_SESSION['id'].'"')){ while($r[]=mysql_fetch_array($query)); if ($r[0]['fase'] == 0) { $w

我想根据用户所处的阶段设置等待时间。我只是想快速测试一下,然后把这个:

function towait(){
    if ($query = mysql_query('select fase, lastone from users where id = "'.$_SESSION['id'].'"')){
        while($r[]=mysql_fetch_array($query));

        if ($r[0]['fase'] == 0) {
            $wait = 0;
        } elseif ($r[0]['fase'] == 1) {
            $wait = 300;
        } elseif ($r[0]['fase'] == 2) {
            $wait = 600;
        } elseif ($r[0]['fase'] == 3) {
            $wait = 900;
        } elseif ($r[0]['fase'] == 4) {
            $wait = 1500;
        } elseif ($r[0]['fase'] == 5) {
            $wait = 2100;
        } elseif ($r[0]['fase'] == 6) {
            $wait = 2700;
        } elseif ($r[0]['fase'] == 7) {
            $wait = 3600;
        } elseif ($r[0]['fase'] == 8) {
            $wait = 5400;
        } elseif ($r[0]['fase'] > 8) {
            $wait = 7200;
        } else {
            $wait = 0;
        }

        if((time() - $r[0]['lastone']) > $wait) {
            //go ahead
            $go = 1;
        } else {
            //you have to wait
            //I know this looks weird, but I just save the hour when OK to go as a string in the format "HHuMM"
            $go = date("H", ($r[0]['lastone'] + $wachten + 60)) . "u" . date("i", ($r[0]['lastone'] + $wachten + 60));
        }

        return $go;
    } else {
        $go = -1;

        return $go;
    }
}
奇怪的是,在第7阶段之前,一切都是完美的,但是当用户处于第7阶段时,它就会停止工作(脚本不允许用户等待)。第8阶段也是如此。在第9阶段和第9+阶段,一切都重新开始


我知道这听起来很疯狂(代码写得很糟糕),但我想知道是什么原因导致了这件事。

最可能的解释是您的会话超时。这意味着,当您返回$\u会话时,['id']将为空,并且无法工作


您可以在php.ini中增加会话时间:最容易阅读的bblog解释了这一切:

您可以通过使用数组节省大约20行代码。您是否尝试过使用$r进行var_转储以查看是否存在fase 7和8?因为我们看不到它的保存方式,并且知道
7
没有被跳过或错误插入,很难说@达贡-它实际上是可以计算出来的。@JaredFarrish arg,是的,又坏了。回到我自己的工作。请不要使用
mysql.*
函数来编写新代码。它们不再得到维护,社区已经开始。看到了吗?相反,你应该学习并使用或。如果你不能决定哪一个,我会帮你的。如果选择PDO,.Session似乎已填充,所以我想这不是问题所在。我使用了达贡建议的数组。现在一切正常。还是不知道为什么上面的这些都不行,但我现在不在乎了:)