เพราะอะไรถึงมี Warning: Trying to access array offset on value of type null in
Warning: Trying to access array offset on value of type null in D:\xampp\htdocs\PinkDragon\register.php on line 26
เมื่อกรอกข้อมูลเรียบร้อย มันก็เก็บข้อมูลลง mysql เสร็จ แต่มันมีข้อความเตือนเป็นเพราะอะไรครับ
เขียนโค๊ดแบบนี้ครับ
require_once "connection.php";
if (isset($_POST['submit'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$userID = $_POST['userID'];
$userlevel = $_POST['userlevel'];
$account = $_POST['account'];
$bank = $_POST['bank'];
$user_check = "SELECT * FROM user WHERE username = '$username' LIMIT 1";
$result = mysqli_query($conn, $user_check);
$user = mysqli_fetch_assoc($result);
if ($user['username'] == $username) { <-------- ตรงนี้คือ line 26
echo "<script>alert('Username already exists');</script>";
} else {
$passwordenc = md5($password);
$query = "INSERT INTO user (username, password, firstname, lastname, userID, userlevel, account, bank)
VALUE ('$username', '$passwordenc', '$firstname', '$lastname', '$userID', '$userlevel','$account','$bank')";
$result = mysqli_query($conn, $query);
if ($result) {
echo "<script>alert('Insert user successfully');</script>";
} else {
echo "<script>alert('Something ERROR');</script>";
}
}
}Tag : PHP, MySQL, XAMPP
Date :
2021-07-31 20:37:03
By :
ptnaja
View :
10295
Reply :
5
เข้ามาอัพเดทเพิ่มเติม
กรณีใช้ mysql ตรวจ WHERE username อยู่แล้ว ก็ไม่จำเป็นต้องไปเอา if ตรวจใน php แบบนี้อีก $user['username'] == $username
เพราะมันซ้ำซ้อนแล้วก็อย่างที่บอกข้างบน ถ้ามันหาไม่เจอ $user จะเป็น null แล้วจะ error ดังนั้นต้องวางแผนเงื่อนไขซะใหม่
Code (PHP)
$validatedUsername = false;
if (empty($user)) {
// ถ้าว่างเปล่าแปลว่าไม่มีข้อมูลหรือหา username นั้นไม่เจอใน db.
// ให้ผ่าน
$validatedUsername = true;
}
if (isset($validatedUsername) && $validatedUsername === true) {
// ถ้าตรวจ username แล้วไม่เจอซ้ำ
// คำสั่ง insert ตรงนี้
}
แล้วก็พยายามเลี่ยงใช้ md5, sha1 ในการ hash รหัสผ่าน พยายามใช้ฟังก์ชั่นใหม่ๆ ถ้าใช้ php 5.5+
https://www.php.net/manual/en/function.password-hash.php
https://www.php.net/manual/en/function.password-verify.php
https://www.php.net/manual/en/function.password-needs-rehash.php
เพราะ md5 มันแคร็กง่ายแล้วเดี๋ยวนี้
Date :
2021-08-01 22:00:39
By :
mr.v
ขอบคุณ mr.v มากเลยครับที่ยกตัวอย่างให้ดู ผมอ่านภาษาอังกฤษไม่ค่อยออกอาศัยกอ๊อปโค๊ตไปแก้ไข
Date :
2021-09-23 12:01:14
By :
rutong
Warning: Trying to access array offset on value of type null in /home/www/virtual/bpp215.org/htdocs/page/sso_admin/keydata_news.php on line 153
แบบนี้แก้ยังไงครับ
Date :
2022-06-07 14:57:23
By :
armmer
ตอบไปหมดแล้ว อ่านเอา
Date :
2022-06-07 17:22:17
By :
mr.v
Load balance : Server 00