简体   繁体   English

使用 substr 的 PHP 表单验证

[英]PHP form validation using substr

I'm trying to make a program that accepts string even if it is misspelled as long as the first 2 letters is correct.我正在尝试制作一个接受字符串的程序,即使它拼写错误,只要前 2 个字母是正确的。 Earlier when i run my program it works fine but when i put this早些时候当我运行我的程序时它工作正常但是当我把这个

if(substr($player1, 0, 2) === "rock" || substr($player2, 0, 2) === "rock")  

then click submit it will not print anymore.然后单击提交它将不再打印。 What did i do wrong with my code?我的代码做错了什么? or what function is supposed to be use?或者应该使用什么功能?

<html>
<body>
<h1>ROCK PAPER SCISSORS</h1>
<?php


print ('<form action="" method="post">');
print ('<p>Player 1: <input type="text" name="p1" /></p>');
print ('<p>Player 2: <input type="text" name="p2" /></p>');
print ('<input type="submit" name="submit" value="PLAY" />');
print ('</form>');

if (isset($_POST['submit'])) {
    $player1score = 0;
    $player2score = 0;
    $draw = 0;
    $player1 = strtolower($_POST['p1']);
    $player2 = strtolower($_POST['p2']);

    if(substr($player1, 0, 2) === "rock" || substr($player2, 0, 2) === "rock"){

            if ($player1 == 'scissors' && $player2 == 'scissors') {
            $draw++;
            print "Player 1: $player1score<br>";
            print "Player 2: $player2score<br>";
            print "DRAW: $draw";
    }

            else if ($player1 == 'rock' && $player2 == 'rock') {
            $draw++;
            print "Player 1: $player1score<br>";
            print "Player 2: $player2score<br>";
            print "DRAW: $draw";
    }

            else if ($player1 == 'paper' && $player2 == 'paper') {
            $draw++;
            print "Player 1: $player1score<br>";
            print "Player 2: $player2score<br>";
            print "DRAW: $draw";
    }

            else if ($player1 =='rock' && $player2 =='scissors') {
            $player1score++;
            print "Player 1: $player1score<br>";
            print "Player 2: $player2score<br>";
            print "DRAW: $draw";
    }

            else if ($player1 == 'rock' && $player2 =='paper') {
            $player2score++;
            print "Player 1: $player1score<br>";
            print "Player 2: $player2score<br>";
            print "DRAW: $draw";

    }

        else if($player1 == 'scissors' && $player2 == 'rock') {
            $player2score++;
            print "Player 1: $player1score<br>";
            print "Player 2: $player2score<br>";
            print "DRAW: $draw";

    }

        else if ($player1 =='scissors' && $player2 =='paper') {
            $player1score++;
            print "Player 1: $player1score<br>";
            print "Player 2: $player2score<br>";
            print "DRAW: $draw";

    }
        else if ($player1 =='paper' && $player2 =='rock') {
             $player1score++;
            print "Player 1: $player1score<br>";
            print "Player 2: $player2score<br>";
            print "DRAW: $draw";

    }

        else if ($player1 =='paper' && $player2 == 'scissors') {
            $player2score++;
            print "Player 1: $player1score<br>";
            print "Player 2: $player2score<br>";
            print "DRAW: $draw";
    }
}
}
?>
</html>
</body>

The problem is in the string 'rock' , because the substr will only return 2 characters, not 4.问题出在字符串'rock' ,因为substr只会返回 2 个字符,而不是 4 个。

Here is what you should do:这是你应该做的:

// Checking for "rock", but only care about the beginning of "ro" ck
if(substr($player1, 0, 2) === "ro" || substr($player2, 0, 2) === "ro")

I hope that helps.我希望这有帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM