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

问题描述 投票:0回答:1

我需要优化我的代码,创建一个输入属性,它得到$ _POST ['count']但我不知道如何做...并使用不同的函数来最小化代码。所以这样做的目的是分别输入你输入的输入:3(单击按钮),2(单击按钮),... 0使用会话变量($ _SESSION ['count']这里)。

我试图创建一个构造函数并使用属性将帖子放入其中。但我不认为这是一个好方法。所以我问你:')。

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

最后,表单倒计时应该只是正常工作。提前感谢您的帮助,祝您有个愉快的一天!

php forms object post
1个回答
0
投票

@ArtisticPhoenix

嗯,现在似乎没有任何工作..我做得对吗?

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

感谢您的时间和关注我!如果你有任何想法我怎么能最小化if部分我会感激不尽!

© www.soinside.com 2019 - 2024. All rights reserved.