我已經解決了這個問題,謝謝大家的幫助!
$_SESSION["nama_pengguna"] 和 $_SESSION["kata_laluan"] 的值保持為 NULL,并且在通過所有 3 個 if 陳述句后不會更改為 $nama_pengguna 和 $kata_laluan。
什么時候:
- $_POST 不為 NULL
- $_POST["daftar"] 不為 NULL
- $result 不為 NULL
我得到的價值:
- $_SESSION["nama_pengguna"] => NULL
- $_SESSION["kata_laluan"] => NULL
期望值:
- $_SESSION["nama_pengguna"] => $nama_pengguna
- $_SESSION["kata_laluan"] => $kata_laluan
額外的資訊:
$_SESSION["login"] 作業正常
- 當通過所有 if 陳述句時,$_SESSION["login"] => true
- 當沒有通過所有 if 陳述句時,$_SESSION["login"] => false
- 我希望 $_SESSION["nama_pengguna"] 和 $_SESSION["kata_laluan"] 復制這種行為,但事實并非如此。
我已經嘗試洗掉 $_SESSION["nama_pengguna"] 和 $_SESSION["kata_laluan"] 的第一次出現,但是一旦我這樣做了,這兩個變數就不再存在了。
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();
}
}
...
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>
...
回顯所有 $_SESSION 變數
我已經解決了這個問題,謝謝大家的幫助!
$_SESSION["nama_pengguna"] 和 $_SESSION["kata_laluan"] 的值保持為 NULL,并且在通過所有 3 個 if 陳述句后不會更改為 $nama_pengguna 和 $kata_laluan。
什么時候:
- $_POST 不為 NULL
- $_POST["daftar"] 不為 NULL
- $result 不為 NULL
我得到的價值:
- $_SESSION["nama_pengguna"] => NULL
- $_SESSION["kata_laluan"] => NULL
期望值:
- $_SESSION["nama_pengguna"] => $nama_pengguna
- $_SESSION["kata_laluan"] => $kata_laluan
額外的資訊:
$_SESSION["login"] 作業正常
- 當通過所有 if 陳述句時,$_SESSION["login"] => true
- 當沒有通過所有 if 陳述句時,$_SESSION["login"] => false
- 我希望 $_SESSION["nama_pengguna"] 和 $_SESSION["kata_laluan"] 復制這種行為,但事實并非如此。
我已經嘗試洗掉 $_SESSION["nama_pengguna"] 和 $_SESSION["kata_laluan"] 的第一次出現,但是一旦我這樣做了,這兩個變數就不再存在了。
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();
}
}
...
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>
...
回顯所有 $_SESSION 變數

uj5u.com熱心網友回復:
您在第一個條件下僅檢查了 $_POST 。檢查 $_POST["nama_pengguna"] 和 $_POST["kata_laluan"] 是否也不為空是一個好習慣。(isset 還不夠):
...
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.
}
但是您可能必須在條件中添加“else”才能回傳一些錯誤,因為資料沒有我們需要的足夠資料。
uj5u.com熱心網友回復:
我找到了問題,這是一個愚蠢的錯誤,謝謝大家幫助我,你們都很好。問題出在這里:
if isset($_POST["daftar"])
回傳假
還有另一部分使登錄為真,但沒有更改其他兩個會話變數。
SESSION?">uj5u.com熱心網友回復:
您在第一個條件下僅檢查了 $_POST 。檢查 $_POST["nama_pengguna"] 和 $_POST["kata_laluan"] 是否也不為空是一個好習慣。(isset 還不夠):
...
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.
}
但是您可能必須在條件中添加“else”才能回傳一些錯誤,因為資料沒有我們需要的足夠資料。
uj5u.com熱心網友回復:
我找到了問題,這是一個愚蠢的錯誤,謝謝大家幫助我,你們都很好。問題出在這里:
if isset($_POST["daftar"])
回傳假
還有另一部分使登錄為真,但沒有更改其他兩個會話變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/458988.html
上一篇:從JavaScript執行POST/GET請求的最佳方法
下一篇:注銷禁用的用戶-Laravel8
