PHP-скрипт с использованием форматирования сессий и перенаправления на 500 - PullRequest
0 голосов
/ 19 октября 2018

Я новичок в php и работаю над палачом.У меня есть home.php, который ведет вас на домашнюю страницу, и это форма login, которую пользователь должен отправить username и password.Если username и password совпадают с тем, который я установил, он будет перенаправлен на hangman.php.Мне нужен совет, если способ написания сценария правильный или нет.Кроме того, я получаю ошибку 500 после входа пользователя в систему. Я не знаю почему.Я вставлю код ниже.

Обновление: я добавил код для hangman.php

home.php

<?php

    // starting a new session
    session_start();

    if(isset($_POST['uname'], $_POST['psw'])){

        $uname= "my_admin";
        $psw = "password";

        if($_POST['uname'] == $uname && $_POST['psw'] == $psw) {

            $_SESSION["uname"] = "my_admin";
            $_SESSION["psw"] = "password";

            # array holds errors
            $errors = array();

        # validation starts here
        if(empty($_POST['uname'])){
            $errors['uname1'] = "Your name cannot be empty";
        }

            # check strlength
        if(strlen($_POST['uname']) < 6){
            $errors['uname2'] = "Must be longer than 6 characters";
        }

            # check username
        if ($_POST['uname'] !== "my_admin"){
            $errors['uname3'] = "You are not the admin";

        }

        if($_POST['uname'] == "my_admin" &&  $_POST['psw'] == "password"){
            header('Location:hangman.php');
            exit();
        }else{
            $errors['uname4'] = "Please try again";
        }


        if(empty($_POST['psw'])){
            $errors['psw1'] = "Your password cannot be empty";
        }

        if(strlen($_POST['psw']) < 6){
            $errors['psw2'] = "Must be longer than 6 characters";
        }

        if($_POST['psw'] !== "password"){
            $errors['ps3'] = "AH AH AH thats not it";
        }else{
            header('Location:hangman.php');
            exit();
        }


        if(count($errors) == 0){
            # redirect to the game page
            header('Location:hangman.php');
            exit();
        }
    }
}


    ?> 

form for my script to run against

<div class="container">
</p>

<label for="uname"><b>Username</b></label>
<input type="text" placeholder="Enter Username" name="uname">
<p>
<?php if(isset($errors['uname1']))
        echo $errors['uname1'];  ?>
</p>
<p>
<?php if(isset($errors['uname2']))
        echo $errors['uname2'];  ?>
</p>
<p>
<?php if(isset($errors['uname3']))
        echo $errors['uname3'];  ?>
</p>
<p>
<?php if(isset($errors['uname4']))
    echo $errors['uname4'];  ?>
</p>




<label for="psw"><b>Password</b></label>
<input type="password" placeholder="Enter Password" name="psw">
<p>
<?php if(isset($errors['psw1'])) echo $errors['psw1'];  ?>
</p>
<p>
<?php if(isset($errors['psw2'])) echo $errors['psw2'];  ?>
</p>
<?php if(isset($errors['psw3'])) echo $errors['psw3'];  ?>
</p>

<button name="check" type="submit" value="submit">Login</button>
</div>
</form>

hangman.php

<code><?php
    require_once 'hangedman.php';
    $words = array('VIETNAM', 'PEOPLE', 'PYTHON');
    $numwords = 0;
    function printPage($image, $guesstemplate, $which, $guessed, $wrong) {
        echo <<<ENDPAGE
        <!DOCTYPE html>
        <html>
        <head>
        <title>Hangman</title>
        <link rel="stylesheet" type="text/css" href="home.css">
        </head>
        </html>
        <body>

        <h1 style='color: red'>Hangman Game</h1>
        <br />
        <pre style='color: red'>$image
Слово угадать: $ guesstemplate Буквы, используемые в догадках: $ угадано
Ваше следующее предположение Угадай
ENDPAGE;} function loadWords () {global $ words;глобальные $ numwords;$ input = fopen ("./ words.txt", "r");while (true) {$ str = fgets ($ input);if (! $ str) break;$ words [] = rtrim ($ str);$ numwords ++;} fclose ($ input);} function startGame () {global $ words;глобальные $ numwords;глобальный $ hang;$ which = rand (0, $ numwords - 1);$ word = $ words [$ which];$ len = strlen ($ word);$ guesstemplate = str_repeat ('_', $ len);$ script = $ _SERVER ["PHP_SELF"];printPage ($ hang [0], $ guesstemplate, $ which, "", 0);} функция killPlayer ($ word) {echo <<<html> Палач

Вы проиграли!

Слово, которое вы пытались угадать, было $ word .

ENDPAGE;} функция поздравитьWinner ($ word) {эхо <<<html> Палач

Вы выиграли!

Поздравляем!Вы догадались, что это слово было $ word .

ENDPAGE;} function matchLetters ($ word, $ guessedLetters) {$ len = strlen ($ word);$ guesstemplate = str_repeat ("_", $ len);for ($ i = 0; $ i <$ len; $ i ++) {$ ch = $ word [$ i];if (strstr ($ guessedLetters, $ ch)) {$ pos = 2 * $ i;$ guesstemplate [$ pos] = $ ch;}} return $ guesstemplate;} function handleGuess () {global $ words;глобальный $ hang;$ which = $ _POST ["word"];$ word = $ words [$ which];$ неправильно = $ _POST ["неправильно"];$ lettersguessed = $ _POST ["lettersguessed"];$ guess = $ _POST ["письмо"];$ letter = strtoupper ($ guess [0]);if (! strstr ($ word, $ letter)) {$ неправильно ++;} $ lettersguessed = $ lettersguessed.$ Письмо;$ guesstemplate = matchLetters ($ word, $ lettersguessed);if (! strstr ($ guesstemplate, "_")) {gratulateWinner ($ word);} else if ($ неправильно> = 6) {killPlayer ($ word);} else {printPage ($ hang [$ неправильный], $ guesstemplate, $ which, $ lettersguesed, $ неправильный);}} // header ("Content-type: text / plain");loadWords ();$ method = $ _SERVER ["REQUEST_METHOD"];if ($ method == "POST") {handleGuess ();} else {startGame ();}?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...