简体   繁体   中英

Disabling a button after it has been clicked in php or javascript

I am trying to make a hangman game with buttons for the letters in PHP. Problem is I want the button which is the letter input to disable after it has been clicked and processed but all the solutions i have tried dont work, i need the letter that has been clicked to disable while the rest stay active till the next session. Code is below, any thoughts?

<?php
    function plateup (){
        $plate = '';
        for ($i=0; $i < strlen($_SESSION['mystery']) ; $i++) {
            array_push($_SESSION['mysteryletters'],$_SESSION['mystery'][$i]);
            
            if (in_array($_SESSION['mystery'][$i],$_SESSION['guesses'])) {
            $plate = $plate.$_SESSION['mystery'][$i].' ';
            } else {
                $plate = $plate.'_ ';
            }
        }
        echo '<h2>'.$plate.'</h2>';
    }
    
    if (($_SESSION['numwrong'] < 5)&&(!$_SESSION['won'])){
        ?>
    
        <form name="drawer" action="./" method="post">
            <input type="submit"  class="letter" name="letter" value="A">
            <input type="submit" class="letter" name="letter" value="B">
            <input type="submit" class="letter" name="letter" value="C">
            <input type="submit" class="letter" name="letter" value="D">
            <input type="submit" class="letter" name="letter" value="E">
            <input type="submit" class="letter" name="letter" value="F">
            <input type="submit" class="letter" name="letter" value="G">
            <input type="submit" class="letter" name="letter" value="H">
            <input type="submit" class="letter" name="letter" value="I">
            <input type="submit" class="letter" name="letter" value="J">
            <input type="submit" class="letter" name="letter" value="K">
            <input type="submit" class="letter" name="letter" value="L">
            <input type="submit" class="letter" name="letter" value="M">
            <input type="submit" class="letter" name="letter" value="N">
            <input type="submit" class="letter" name="letter" value="O">
            <input type="submit" class="letter" name="letter" value="P">
            <input type="submit" class="letter" name="letter" value="Q">
            <input type="submit" class="letter" name="letter" value="R">
            <input type="submit" class="letter" name="letter" value="S">
            <input type="submit" class="letter" name="letter" value="T">
            <input type="submit" class="letter" name="letter" value="U">
            <input type="submit" class="letter" name="letter" value="V">
            <input type="submit" class="letter" name="letter" value="W">
            <input type="submit" class="letter" name="letter" value="X">
            <input type="submit" class="letter" name="letter" value="y">
            <input type="submit" class="letter" name="letter" value="z">
            </form>
    
    <?php
    } else {
        ?>
    <form name="redrawer" action="" method="post">
        <input type="submit" name="newgame" value="New Game">
    </form>
    <?php
    }
        
    
    if (isset($_POST['letter'])) {
        
        if (strlen($_POST['letter'])>0){
            $letter = ($_POST['letter'][0]);
        
        if (!in_array($letter, $_SESSION['guesses'])){
                array_push($_SESSION['guesses'],$letter);
            }
            
            if (!in_array($letter, $_SESSION['mysteryletters'])){
                $_SESSION['numwrong'] += 1;
            }
        }
    } else {
        $_SESSION['numwrong'] = 0;
        $_SESSION['guesses'] = [];
        $_SESSION['won'] = false;
        
        $lines = file('words.txt');
        
        $_SESSION['mystery'] = trim($lines[array_rand($lines)]);
        $_SESSION['mysteryletters'] = array_unique(str_split($_SESSION['mystery']));        
    }
    
    echo '<p>Guessed: [ '.implode(" ",$_SESSION['guesses']).' ]';
        
    plateup();
?>

Disabling an HTML element needs to happen on the FRONTEND, which PHP cannot do as it solely works on the BACKEND. You can have JS disable the frontend portion ,and maybe save the last pressed button in PHP Session, so it cannot be used anymore in the background..

I am sure there are other approaches, depending on what you need exactly to happen.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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