Я новичок в 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 ();}?>