php не показывает блок else - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь узнать о session_start(), но когда я запускаю файл, он показывает только то, что находится внутри

if (isset($_SESSION['username'])&& isset($_SESSION['password'])==$password) {
?>
    <a href="home.php">log out</a>
<?php } ?>

и не показывает else{...}, и даже после того, как я нажму кнопку «Выйти»,он не будет ничего печатать в операторе else, а будет печатать только внутри оператора if.Я использую другой файл, чтобы выполнить процедуры выхода из системы, но я не знаю правильный код для session_destroy()

, вот код logout.php ниже:

<?php
session_start(); 
session_destroy(); 
header("location: home.php"); 
?>

вот полный код:

<?php 
session_start();
include("DB/db.php");
$_SESSION['username']=$username;
$_SESSION['password']=$password;
$_SESSION['is_log_in'] = true; 
 ?><!DOCTYPE html>
<html>
<head>
    <title></title>
    <link rel="stylesheet" type="text/css" href="css/css.css">
</head>
<body>
<div id="blank"></div>
    <div id="panel">
        <nav id="bar">
            <div id="submen">
                <form id="sir">
                <input type="Search" name="search" placeholder="Search.." id="search">
            </form>
                <a  href="wallpaper.php" id="menu">Walpaper</a>
                <a  href="art.php" id="menu">Art</a>
                <a  href="photo.php" id="menu">Photos</a>
                <a  href="image.php" id="menu">Image</a>
 <?php
    if (isset($_SESSION['username'])&& isset($_SESSION['password'])==$password) {?>

                <?php echo $username?>
                    <a href="logout.php">log out</a>

            </div>
        </nav>
    </div>
</table>
    <?php } else {
    ?>
                <a href="log_in.php" id="member">login</a>
                <a href="register.php" id="member">register</a>
            </div>
        </nav>
    </div>
    </table>
    <?php } ?>

    </body>
   </html>

ОБНОВЛЕНИЕ для сценария входа в систему

<?php
session_start();

include("DB/db.php"); 

if ($_GET['log']=='out'){
    session_destroy();
} 
if ($_POST['user']){
    $sql = "Select password from user where username = '".$_POST['user']."' ";
    $result = mysqli_query($koneksi, $sql);
    if (mysqli_num_rows($result)){ 
        $row = mysqli_fetch_assoc($result);

        if ($row['password'] == md5($_POST['pass'])) {

            $_SESSION['login'] = TRUE;
            $_SESSION['username'] = $user;
            $_SESSION['password'] = $pass;
        }else{

            $pesan = "Username and password mismatch";
        }
    }else{

        $pesan = "please register";
    }
}   

?><!DOCTYPE html>
<html>
<head>
    <title>Log in</title>
</head>
<body>
    <?php

    if ($_SESSION['login']) {

        echo "text";
    }else{
        ?>
        <h1>Login</h1>
        <form method="post" action="rahasia.php">
            Username: <input type="text" name="user">
            Password: <input type="password" name="pass">
            <input type="submit" name="" value="Login">
        </form>
        <form method="post" action="register.php">
            <input type="submit" name="register" value="register"> 
        </form>

        <?php
    }
    echo $pesan;
    ?>
</body>
</html>

где я ошибся

1 Ответ

0 голосов
/ 24 мая 2018

Ваши переменные $ _SESSION всегда установлены, а $ password всегда равен $ _SESSION ['password'].

$_SESSION['username']=$username; // null, plus notice in error_log
$_SESSION['password']=$password; // null, plus notice in error_log

Если эти две переменные не установлены в include("DB/db.php");, в этом случае это плохопрактика.Можете ли вы вставить db.php, чтобы увидеть, что происходит внутри?

ОБНОВЛЕНИЕ.

Хорошо, так что настройки устанавливаются.Теперь это означает:

$_SESSION['username']=$username; // a
$_SESSION['password']=$password; // 123456789

Поэтому они все равно будут совпадать.Вы должны изменить эти строки для правильной работы.Вы уверены, что учетные данные mysql - это то, что вы хотите для своего вошедшего в систему пользователя?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...