Сначала ответим на ваш вопрос:
Когда я захожу в index.php? View_quiz, он должен давать результат как Да, но это как Нет. Почему?
Это потому что это
if(!isset($_GET['new_quiz']) || !isset($_GET['view_quiz']) || !isset($_GET['alter_quiz'])){
проверяет, не установлен ли какой-либо из ваших параметров, что будет всегда, если вы не устанавливаете все три параметра одновременно, как это:
index.php? Alter_quiz & view_quiz & new_quiz
Как сказал @ nigel-ren, вы можете не менять эту логику на
if(isset($_GET['new_quiz']) || isset($_GET['view_quiz']) || isset($_GET['alter_quiz'])){
echo 'Yes';
, который проверяет, установлен ли хотя бы один параметр.
Если вы не хотите проверять, есть ли только один из трех установленных параметров, вам придется работать с XOR (что немного сложнее)
$a = isset($_GET['new_quiz']);
$b = isset($_GET['view_quiz']);
$c = isset($_GET['alter_quiz']);
if( ($a xor $b xor $c) && !($a && $b && $c) ){
echo 'Yes';
(на основании этого ответа: XOR трех значений )
, который возвращает true, если установлен один и только один из трех параметров.
Но - и это только предположение, пожалуйста, исправьте меня, если я ошибаюсь - я думаю, что вы пытаетесь достичь трех разных страниц (одна для создания теста, одна для его просмотра и одна для его редактирования) , Поэтому вы, скорее всего, столкнетесь с проблемой с вашей текущей настройкой. Например: что произойдет, если пользователь вызовет страницу с несколькими параметрами, например
index.php? Alter_quiz & view_quiz
Будете ли вы показывать обе страницы? Вы бы проигнорировали один параметр? Я бы порекомендовал работать с одним параметром, чтобы избежать этой проблемы в первую очередь. Например, site
, который может принимать значения alter_quiz
, view_quiz
или new_quiz
. E.g.:
index.php? Сайт = alter_quiz
Тогда вы можете работать так:
// check if site is set before getting its value
$site = array_key_exists( 'site', $_GET ) ? $_GET['site'] : NULL;
// if it's not set e.g. index.php without parameters is called
if( is_null($site) ){
// show the start page or something
}else{
$allowed_sites = ['new_quiz', 'view_quiz', 'alter_quiz'];
// never trust user input, check if
// site is an allowed value
if( !in_array($site, $allowed_sites, true) ){
die('404 - This site is no available');
}
// here you can do whatever your site should do
// e.g. include another php script which contains
// your site
include('path/to/your/site-' . $site . '.php');
// or echo yes
echo 'Yes';
}