我正在做一个项目。有 4 个文件:loginMHS
、manageLoginMHS
(可选)、inputPerwalian
、db
。
在db
中,程序将连接到数据库。这是代码:
<?php
$link = mysqli_connect("localhost", "root", NULL, "perwalian");
if (mysqli_connect_errno()) {
die("Connect Error : " . mysqli_connect_error());
}
?>
在 loginMHS
中,用户应该输入他们的 NRP (varchar) 和密码。这是代码:
<?php
session_start();
?>
<form action="manageLoginMHS.php?act=login" method="POST">
NRP: <input type="text" name="unrp"/><br />
Password: <input type="password" name="upass"/><br />
<input type="submit" value="LOGIN"/>
</form>
我将 manageLoginMHS
用作辅助文件。来自 loginMHS
的 NRP 和 varchar 将被检查。如果用户不输入 NRP,程序会显示消息“输入 perwalian belum dapat diakses saat ini”。我真的需要这个文件吗?或者,我只能使用 2 个文件(loginMHS
和 inputPerwalian
)?
<?php
require './db.php';
session_start();
$act = $_GET['act'];
switch ($act) {
case "login":
$nrp = $_POST['unrp'];
$pass = $_POST['upass'];
$sql = "select * from mahasiswa where nrp = '" . $nrp . "'";
$result = mysqli_query($link, $sql);
$row = mysqli_fetch_array($result);
if(isset($_POST['unrp'])){
if(empty($nrp)){
echo "<br /> Input perwalian belum dapat diakses saat ini"
. "<br />";
}
else {
header('Location: inputPerwalian.php');
}
}
if(mysqli_num_rows($result) > 0) {
if($pass == $row['password'] && $nrp == $row['nrp']) {
$_SESSION['login'] = TRUE;
header("Location: inputPerwalian.php");
}
else {
echo "Invalid Password";
}
}
else {
echo "User not found";
}
break;
default:
die("Unknown");
}
?>
然后程序将显示来自数据库的 inputPerwalian
中的数据,这些数据具有相同的 NRP 和 varchar。这是代码:
<?php
session_start();
if (isset($_SESSION['login'])) {
require './db.php';
//echo $_POST['unrp'];
//$nrp = $_POST['unrp'];
//$pass = $_POST['upass'];
$sql2 = "select nrp, nama, jatah_sks, foto_profil from mahasiswa"
. " where nrp=".$nrp; //this line is the error
$result2 = mysqli_query($link, $sql2);
if (!$result2) {
die("SQL Error " . $sql2);
}
while ($row2 = mysqli_fetch_array($result2)) {
echo "NRP: " . $row2['nrp'] . "<br />";
echo "Nama: " . $row2['nama'] . "<br />";
echo "SKS Maks: " . $row2['jatah_sks'] . "<br />";
echo "Sisa SKS: " . "<br /><br />";
}
}
?>
我有这些错误:
Notice: Undefined variable: nrp in C:\xampp\htdocs\ProjectUAS\inputPerwalian.php on line 37
SQL Error select nrp, nama, jatah_sks, foto_profil from mahasiswa where nrp=
因此,程序不会显示我之前选择的数据库中的数据。
我应该怎么做才能修复这些错误?请解释你的答案。谢谢。
最佳答案
使用 2 个文件(如果您希望数据库连接在一个单独的文件中,则为 3 个)会更容易做到这一点
您可以像这样合并您的 LoginMHS 和 ManageLoginMHS 页面:
<?php
session_start();
require './db.php';
if (isset($_POST['act']))
{
$act = $_POST['act'];
switch($act)
{
case "login":
$nrp = $_POST['unrp'];
$pass = $_POST['upass'];
$sql = "select * from mahasiswa where nrp = '" . $nrp . "'";
$result = mysqli_query($link, $sql);
$row = mysqli_fetch_array($result);
if(isset($_POST['unrp'])){
if(empty($nrp)){
echo "<br /> Input perwalian belum dapat diakses saat ini"
. "<br />";
}
else {
header('Location: inputPerwalian.php');
}
}
if(mysqli_num_rows($result) > 0) {
if($pass == $row['password'] && $nrp == $row['nrp']) {
$_SESSION['login'] = TRUE;
$_SESSION['nrp'] = $nrp;
header("Location: inputPerwalian.php");
}
else {
echo "Invalid Password";
}
}
else {
echo "User not found";
}
break;
default:
die("Unknown");
}
}
}
?>
<form action="" method="POST">
<input type="hidden" name="act" value="login" />
NRP: <input type="text" name="unrp"/><br />
Password: <input type="password" name="upass"/><br />
<input type="submit" value="LOGIN"/>
</form>
这将所有登录合并到一个表单中。它将 nrp 设置在您可以从任何其他页面读取的 session 变量中,因此您的 inputPerwalian 页面可以像这样检查它:$nrp = $_SESSION['nrp'];
关于PHP - 显示数据库数据的登录表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37472392/