I've fixed this, thank you everyone for your help!
The value of $_SESSION["nama_pengguna"] and $_SESSION["kata_laluan"] remains NULL and doesn't change to $nama_pengguna and $kata_laluan after passing all 3 if statements.
when:
value I get:
expected value:
extra information:
$_SESSION["login"] works fine
I've tried removing the first appearance of $_SESSION["nama_pengguna"] and $_SESSION["kata_laluan"], but those two variables stopped existing once I did that.
snippet from login.php
<?php
session_start();
include("sambungan.php");
$_SESSION["login"] = false;
$_SESSION["nama_pengguna"] = NULL; #Problem
$_SESSION["kata_laluan"] = NULL; #Problem
if (!empty($_POST) && !empty($_POST["nama_pengguna"]) && !empty($_POST["kata_laluan"])) {
$nama_pengguna = $_POST["nama_pengguna"];
$kata_laluan = $_POST["kata_laluan"];
if (isset($_POST["daftar"])) {
$sql = "INSERT INTO urusetia (nama_pengguna,kata_laluan) VALUES ('$nama_pengguna','$kata_laluan')";
$result = mysqli_query($sambungan,$sql);
if ($result) {
$_SESSION["login"] = true;
$_SESSION["nama_pengguna"] = $nama_pengguna; #Problem
$_SESSION["kata_laluan"] = $kata_laluan; #Problem
$_POST = array();
header("Location:./hakim.php");
die();
}
}
...
snippet from login.php
...
<form action="login.php" method="post">
<table>
<tr>
<td>Nama Pengguna</td>
<td><input type="text" name="nama_pengguna" autocomplete="off" placeholder="max 30 characters" required></td>
</tr>
<tr>
<td>Kata Laluan</td>
<td><input type="password" name="kata_laluan" autocomplete="off" placeholder="max 15 characters" required></td>
</tr>
</table>
<input type="submit" name="daftar" value="Daftar">
<input type="submit" name="log_masuk" value="Log Masuk">
</form>
...
echo-ing all the $_SESSION variables
You checked just $_POST in first condition. it is good practice to check if $_POST["nama_pengguna"] and $_POST["kata_laluan"] is not empty too. (isset is not enough):
...
if ($_POST && !empty($_POST["nama_pengguna"]) && !empty($_POST["kata_laluan"])) {
// not you can be sure both of that data is exist and have some data.
$nama_pengguna = $_POST["nama_pengguna"];
$kata_laluan = $_POST["kata_laluan"];
....
} else {
// return some error because of being empty needed data.
}
but you maybe you have to add an "else" to you condition for return some errors because the data does not have enough data we need.