PHP만으로 간단한 오미쿠지를 만들어 보았습니다.
ㅎㅎ씨로부터, 각 코드를 보다 간소하게 해, 정규의 화면 천이인지의 체크를 추가하는 코멘트 받았습니다 때문에, 부디 이쪽 도 참조해 주세요!
※2020/10/17 추가
GitHub의 소스 코드는 여기
개요
매우 간단한 기능입니다.
우선, 초기 화면에 「오미쿠지를 당기기」버튼이 있고,
버튼을 누르면 7개의 추첨 중 하나가 무작위로 당겨 결과가 표시됩니다.
결과 세부정보를 클릭하면 추첨에 따른 주석이 표시됩니다.
구현
동작 확인 환경: PHP7.1.29
초기 화면
먼저 초기 화면을 구현합니다.
start.php<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>おみくじ</title>
</head>
<body>
<h1>おみくじ</h1>
<h2>おみくじを引いて今日の運勢を占ってみよう!</h2>
<form action="fortune.php" method="POST">
<input type="submit" name="btn" value="おみくじを引く">
</form>
</body>
</html>
하나의 양식이있는 단순한 페이지입니다.
클릭하면 "fortune.php"로 날아갑니다.
결과 화면
결과 화면에 액세스하면 무작위로 복권이 당겨 결과가 표시됩니다.
fortune.php<?php
$lots = [1, 2, 3, 4, 5, 6, 7];
if (isset($_POST['btn'])) {
$lot = array_rand($lots);
switch ($lot) {
case 0:
$res = '大吉';
$num = 1;
break;
case 1:
$res = '中吉';
$num = 2;
break;
case 2:
$res = '小吉';
$num = 3;
break;
case 3:
$res = '吉';
$num = 4;
break;
case 4:
$res = '半吉';
$num = 5;
break;
case 5:
$res = '末吉';
$num = 6;
break;
case 6:
$res = '凶';
$num = 7;
}
} else {
header('Location:button.php');
exit();
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>おみくじ</title>
</head>
<body>
<h1>結果</h1>
<h2><?= $res; ?></h2>
<p>
<a href="detail.php?num=<?= $num; ?>">結果の詳細</a>
</p>
<p>
<a href="button.php">
<button type="button">もう一度おみくじを引く</button>
</a>
</p>
</body>
</html>
else문내의 처리에 의해, 「오미쿠지를 당기기」버튼을 누르지 않고(값을 POST하지 않고) 온 액세스를, 초기 화면으로 연주하고 있습니다.
복권을 당기는 프로세스는 1에서 7까지의 값을 포함하는 배열을 만들고 배열에서 array_rand를 통해 임의로 키를 검색하고 그 값으로 결과를 분기합니다.
참고로 'array_rand'는 값을 검색하는 대신 키를 검색합니다.
array_rand — 배열로부터 1개 이상의 키를 랜덤하게 취득한다
인용 소스 : PHP 매뉴얼 array_rand
이 때문에, 계속되는 switch문의 case문에서는 0부터 값이 시작되고 있습니다.
또한 결과에 의해 변수 $num에 수치를 대입해, 그것을 URL 파라미터에 더한 링크를 생성하는 것으로, 상세 페이지 내용을 분기시킵니다.
상세 화면
URL 파라미터로부터 값을 취득해, 그것에 의해 표시시키는 코멘트를 변화시키고 있습니다.
detail.php<?php
if (isset($_GET['num']) && $_GET['num'] < 8 && $_GET['num'] > 0) {
$num = $_GET['num'];
switch ($num) {
case 1:
$res = '絶好調の運勢!';
break;
case 2:
$res = '今日という日に期待大!';
break;
case 3:
$res = 'ちょっといいことあるかも!';
break;
case 4:
$res = 'ラッキー!';
break;
case 5:
$res = '末吉よりはいいかも';
break;
case 6:
$res = '一応吉だよ';
break;
case 7:
$res = 'ダメだったらやり直せばええんやで';
}
} else {
header('Location:button.php');
exit();
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>おみくじ</title>
</head>
<body>
<h1>結果の詳細</h1>
<h2><?= $res; ?></h2>
<p>
<a href="button.php">
<button type="button">もう一度おみくじを引く</button>
</a>
</p>
</body>
</html>
이 페이지에서는
「『num』을 키로 한 GET 파라미터가 있다」
가다
「그 GET 파라미터가 1~7의 범위내」
의 경우에만 처리가 달리도록 하고 있습니다.
...실은 조금 구멍이 있고, GET 파라미터에 「2.2」등 범위내의 정수 이외의 수치를 넣으면 액세스 할 수 버립니다 ...
이것을 막는데 좋은 어드바이스라든지 코멘트 받을 수 있으면 기뻐합니다!
※2020/9/6 추가
코멘트 에서 이것을 막는 방법을 교수해 주시고 있습니다!
또, 스스로도 생각해 보았습니다만,
조건식을 아래와 같이 변경함으로써 범위 내의 정수 이외를 연주하게 되었습니다.
detail.php<?php
if (isset($_GET['num']) && in_array($_GET['num'], range(1, 7)) {
// 中略
}
아래도 참고까지.
PHP 매뉴얼 「 PHP: in_array 」
PHP 매뉴얼 「 PHP: range 」
후기
이번은 배운 지식의 아웃풋의 일환으로서 0부터 처리를 써 보았습니다.
뭔가 미비 등이 있으면, 코멘트 받을 수 있으면 다행입니다.
Reference
이 문제에 관하여(PHP만으로 간단한 오미쿠지를 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/_Taturon_/items/80158d792e66cad0d3df
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
동작 확인 환경: PHP7.1.29
초기 화면
먼저 초기 화면을 구현합니다.
start.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>おみくじ</title>
</head>
<body>
<h1>おみくじ</h1>
<h2>おみくじを引いて今日の運勢を占ってみよう!</h2>
<form action="fortune.php" method="POST">
<input type="submit" name="btn" value="おみくじを引く">
</form>
</body>
</html>
하나의 양식이있는 단순한 페이지입니다.
클릭하면 "fortune.php"로 날아갑니다.
결과 화면
결과 화면에 액세스하면 무작위로 복권이 당겨 결과가 표시됩니다.
fortune.php
<?php
$lots = [1, 2, 3, 4, 5, 6, 7];
if (isset($_POST['btn'])) {
$lot = array_rand($lots);
switch ($lot) {
case 0:
$res = '大吉';
$num = 1;
break;
case 1:
$res = '中吉';
$num = 2;
break;
case 2:
$res = '小吉';
$num = 3;
break;
case 3:
$res = '吉';
$num = 4;
break;
case 4:
$res = '半吉';
$num = 5;
break;
case 5:
$res = '末吉';
$num = 6;
break;
case 6:
$res = '凶';
$num = 7;
}
} else {
header('Location:button.php');
exit();
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>おみくじ</title>
</head>
<body>
<h1>結果</h1>
<h2><?= $res; ?></h2>
<p>
<a href="detail.php?num=<?= $num; ?>">結果の詳細</a>
</p>
<p>
<a href="button.php">
<button type="button">もう一度おみくじを引く</button>
</a>
</p>
</body>
</html>
else문내의 처리에 의해, 「오미쿠지를 당기기」버튼을 누르지 않고(값을 POST하지 않고) 온 액세스를, 초기 화면으로 연주하고 있습니다.
복권을 당기는 프로세스는 1에서 7까지의 값을 포함하는 배열을 만들고 배열에서 array_rand를 통해 임의로 키를 검색하고 그 값으로 결과를 분기합니다.
참고로 'array_rand'는 값을 검색하는 대신 키를 검색합니다.
array_rand — 배열로부터 1개 이상의 키를 랜덤하게 취득한다
인용 소스 : PHP 매뉴얼 array_rand
이 때문에, 계속되는 switch문의 case문에서는 0부터 값이 시작되고 있습니다.
또한 결과에 의해 변수 $num에 수치를 대입해, 그것을 URL 파라미터에 더한 링크를 생성하는 것으로, 상세 페이지 내용을 분기시킵니다.
상세 화면
URL 파라미터로부터 값을 취득해, 그것에 의해 표시시키는 코멘트를 변화시키고 있습니다.
detail.php
<?php
if (isset($_GET['num']) && $_GET['num'] < 8 && $_GET['num'] > 0) {
$num = $_GET['num'];
switch ($num) {
case 1:
$res = '絶好調の運勢!';
break;
case 2:
$res = '今日という日に期待大!';
break;
case 3:
$res = 'ちょっといいことあるかも!';
break;
case 4:
$res = 'ラッキー!';
break;
case 5:
$res = '末吉よりはいいかも';
break;
case 6:
$res = '一応吉だよ';
break;
case 7:
$res = 'ダメだったらやり直せばええんやで';
}
} else {
header('Location:button.php');
exit();
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>おみくじ</title>
</head>
<body>
<h1>結果の詳細</h1>
<h2><?= $res; ?></h2>
<p>
<a href="button.php">
<button type="button">もう一度おみくじを引く</button>
</a>
</p>
</body>
</html>
이 페이지에서는
「『num』을 키로 한 GET 파라미터가 있다」
가다
「그 GET 파라미터가 1~7의 범위내」
의 경우에만 처리가 달리도록 하고 있습니다.
...실은 조금 구멍이 있고, GET 파라미터에 「2.2」등 범위내의 정수 이외의 수치를 넣으면 액세스 할 수 버립니다 ...
이것을 막는데 좋은 어드바이스라든지 코멘트 받을 수 있으면 기뻐합니다!
※2020/9/6 추가
코멘트 에서 이것을 막는 방법을 교수해 주시고 있습니다!
또, 스스로도 생각해 보았습니다만,
조건식을 아래와 같이 변경함으로써 범위 내의 정수 이외를 연주하게 되었습니다.
detail.php
<?php
if (isset($_GET['num']) && in_array($_GET['num'], range(1, 7)) {
// 中略
}
아래도 참고까지.
PHP 매뉴얼 「 PHP: in_array 」
PHP 매뉴얼 「 PHP: range 」
후기
이번은 배운 지식의 아웃풋의 일환으로서 0부터 처리를 써 보았습니다.
뭔가 미비 등이 있으면, 코멘트 받을 수 있으면 다행입니다.
Reference
이 문제에 관하여(PHP만으로 간단한 오미쿠지를 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/_Taturon_/items/80158d792e66cad0d3df
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(PHP만으로 간단한 오미쿠지를 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/_Taturon_/items/80158d792e66cad0d3df텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)