Переключение выхода с сессиями - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть немного кода, где я пытаюсь сделать программу переключения.Это означает, что я хочу иметь одно значение при нажатии на кнопку, а затем другое, если я нажму ее снова.Но я просто не могу понять, как.Это должно повторить «Да», а затем «Нет», спереди и сзади.Кто-нибудь здесь, кто знает, как я могу решить эту проблему?Я пытался часами, практикуя свой PHP.

<?php

session_start();
var_dump($_SESSION);

if($_SERVER['REQUEST_METHOD'] == 'POST') {

    if(isset($_SESSION['NO']) && $_SESSION['NO'] = true) {
        echo "No";
        $_SESSION['YES'] = true;
    }

    if(isset($_POST['submit'])) {
        echo "Yes";
        $_SESSION['NO'] = true;
    }
}

?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <form method="post">
      <input type="submit" name="submit" value="CHANGE">;
    </form>
</body>
</html>

Ответы [ 2 ]

1 голос
/ 29 сентября 2019

Установите начальное значение для переменной сеанса, если она не существует, и используйте 1- $value (где $ value равно 1 или 0) для переключения значения.

<?php

    session_start();

    if( !isset( $_SESSION['state'] ) ) $_SESSION['state']=0;

    if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
        $_SESSION['state'] = 1 - $_SESSION['state'];
    }
?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <?php
            if( isset( $_SESSION['state'] ) ){
                echo $_SESSION['state'] ? 'Yes' : 'No';
            }
        ?>
        <form method="post">
            <input type="submit" name="submit" value="CHANGE" />
        </form>
    </body>
</html>
1 голос
/ 29 сентября 2019

Используйте ОДНУ переменную сеанса, например $_SESSION['STATE'], тогда управление ее состоянием будет проще.

Также = является оператором назначения, а == для сравнения значений.

<?php

session_start();

if($_SERVER['REQUEST_METHOD'] == 'POST') {

    if(isset($_POST['submit'])) {
        // reverse the state
        $_SESSION['STATE'] = ! $_SESSION['STATE'];            
    }
} else {
    // page running for the first time so has not been submitted
    // so initialise the session
    // this will ensure you get a value output the first time the page is run
    $_SESSION['STATE'] = false;

}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <p>Current State = <?php echo $_SESSION['STATE'] ? 'YES' : 'NO'; ?></p>
    <form method="post">
      <input type="submit" name="submit" value="CHANGE">;
    </form>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...