dqask02082 2019-04-03 07:13
浏览 47

如何在我的类test.php中将$ _POST ['count']作为它的属性?

I need to optimize my code, creating an input property that'd get $_POST['count'] but I don't know how to do it... And use different functions to minimize the code. So the goal of this is to make an input where you'd type respectively : 3 (click button), 2 (click button), ... 0 using session variables ($_SESSION['count'] here).

I've tried to make a constructor and put the post in it using a property. But I don't think this is a good way. So I am asking you :').

index.php

<?php
session_start();
include_once 'test.php';
?>
<!DOCTYPE html>
<html>
    <head>
        <title>Countdown</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <form action="<?php echo $_SERVER['PHP_SELF']?>" method="POST">
            <p>
                <label for="count">Chiffre : </label>
                <input type="text" id="count" for="count" name="count" required />
                <input type="submit" value="Envoyer" />
            </p>
        </form>
        <?php
        $test = new Test();
        if(isset($_POST['count'])) {
            $test->validateInput($_POST);
            echo $test->getMessage();
        } else if(!isset($_SESSION['count'])) {
            echo "Veuiller saisir 3 afin de commencer le compte à rebours.";
        }
        ?>
    </body>
</html>

test.php

<?php

class Test {

    private $input;
    private $message;
    private $regex = '/^[0-3]{1}$/';

    public function getInput()
    {
        return $this->input;
    }

    public function setInput($message)
    {
        $this->input = $input;
    }

    public function getMessage()
    {
        return $this->message;
    }

    public function setMessage($message)
    {
        $this->message = $message;
    }

    public function getRegex()
    {
        return $this->regex;
    }

    public function setRegex($regex)
    {
        $this->regex = $regex;
    }

    public function validateInput($input) {
        //Vérification variable de session créée
        if(!isset($_SESSION['count'])) {
            //Vérification chiffre compris entre 0 et 3 et si saisie = 3
            if(preg_match($this->getRegex(), $input['count'])) {
                if($input['count'] == 3) {
                    $this->setMessage("Le chiffre suivant est ".($input['count']-1));
                    $_SESSION['count'] = $input['count'];
                    return true;
                } else {
                    $this->setMessage("Vous devez commencer par le chiffre 3");
                    return false;
                }
            } else {
                $this->setMessage("Saisie incorrecte, vous avez saisi '".$input['count']."' alors que le chiffre : ".($_SESSION['count']-1)." est attendu.");
                return false;
            }
        } else {
            if (preg_match($this->getRegex(), $input['count'])) {
                //Vérification ancienne valeur-1 = valeur actuelle saisie
                if (($_SESSION['count'] - 1) == $input['count'] && $input['count'] > 0) {
                    $this->setMessage("Le chiffre suivant est " . ($input['count'] - 1));
                    $_SESSION['count'] = $input['count'];
                    return true;
                    //Vérification si valeur saisie = 0
                } else if (($_SESSION['count'] - 1) == $input['count'] && $input['count'] == 0) {
                    $this->setMessage("Fini ! - Pour recommencer, saisissez 3.");
                    session_destroy();
                    unset($_SESSION['count']);
                    return true;
                } else {
                    $this->setMessage("La valeur saisie ne correspond pas à l'ordre du compte à rebours (3 2 1 0)<br>"
                                    . "La valeur attendue est : " . ($_SESSION['count'] - 1));
                    return false;
                }
            } else {
                $this->setMessage("Saisie incorrecte, vous avez saisi '" . $input['count'] . "' alors que le chiffre : " . ($_SESSION['count']-1) . " est attendu.");
                return false;
            }
        }
    }
}
?>

At the end, the form countdown should simply work correctly. Thank you in advance for your help, have a nice day !

  • 写回答

1条回答 默认 最新

  • dsfsdf5646 2019-04-03 08:15
    关注

    @ArtisticPhoenix

    Hmm now nothing seems to be working.. Do I do it correctly ?

    index.php

    <?php
    session_start();
    include_once 'test.php';
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <title>Countdown</title>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
        </head>
        <body>
            <form action="<?php echo $_SERVER['PHP_SELF']?>" method="POST">
                <p>
                    <label for="count">Chiffre : </label>
                    <input type="text" id="count" for="count" name="count" required />
                    <input type="submit" value="Envoyer" />
                </p>
            </form>
            <?php
            if($test = new Test($_POST['count'])) {
                $test->validateInput($count);
                echo $test->getMessage();
            } else if(!isset($_SESSION['count'])) {
                echo "Veuillez saisir 3 afin de commencer le compte à rebours.";
            }
            ?>
        </body>
    </html>
    

    test.php

    <?php
    
    class Test {
    
        protected $count;
        private $message;
        private $regex = '/^[0-3]{1}$/';
    
        public function __construct($count) {
            $this->count = $count;
        }
    
        public function getCount()
        {
            return $this->count;
        }
    
        public function setCount($count)
        {
            $this->count = $count;
        }
    
        public function getMessage()
        {
            return $this->message;
        }
    
        public function setMessage($message)
        {
            $this->message = $message;
        }
    
        public function getRegex()
        {
            return $this->regex;
        }
    
        public function setRegex($regex)
        {
            $this->regex = $regex;
        }
    
        public function validateInput($count) {
            //Vérification variable de session créée
            if(!($this->getCount() !== null)) {
                $this->setMessage("Saisie vide, chiffre attendu : " . ($_SESSION['count']-1));
                return false;
            } else {
                if(!isset($_SESSION['count'])) {
                    //Vérification chiffre compris entre 0 et 3 et si saisie = 3
                    if(preg_match($this->getRegex(), $this->getCount())) {
                        if($this->getCount() == 3) {
                            $this->setMessage("Chiffre suivant : " . ($this->getCount()-1));
                            $_SESSION['count'] = $this->getCount();
                            return true;
                        } else {
                            $this->setMessage("Chiffre attendu : 3");
                            return false;
                        }
                    } else {
                        if($_SESSION['count'] == 0) {
                            $this->setMessage("Saisie : '" . $this->getCount() . "' - Chiffre attendu : " . ($_SESSION['count']+3));
                            return false;
                        } else {
                            $this->setMessage("Saisie : '" . $this->getCount() . "' - Chiffre attendu : ".($_SESSION['count']-1));
                            return false;
                        }
                    }
                } else {
                    if (preg_match($this->getRegex(), $this->getCount())) {
                        //Vérification ancienne valeur-1 = valeur actuelle saisie
                        if (($_SESSION['count'] - 1) == $this->getCount() && $this->getCount() > 0) {
                            $this->setMessage("Chiffre suivant : " . ($this->getCount() - 1));
                            $_SESSION['count'] = $this->getCount();
                            return true;
                            //Vérification si valeur saisie = 0
                        } else if (($_SESSION['count'] - 1) == $this->getCount() && $this->getCount() == 0) {
                            $this->setMessage("Fini ! - Pour recommencer, saisissez 3.");
                            session_destroy();
                            unset($_SESSION['count']);
                            return true;
                        } else {
                            $this->setMessage("Chiffre saisi != de l'ordre (3 2 1 0)<br>"
                                            . "Chiffre attendu : " . ($_SESSION['count'] - 1));
                            return false;
                        }
                    } else {
                        $this->setMessage("Saisie : '" . $this->getCount() . "' - Chiffre attendu : " . ($_SESSION['count']-1));
                        return false;
                    }
                }
            }
        }
    }
    ?>
    

    Thank you for your time & paying that much attention to me ! And if you have any idea on how could I minimize the if part I'd be grateful !

    评论

报告相同问题?

悬赏问题

  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败