我正在做一个项目。有 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:xampphtdocsProjectUASinputPerwalian.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,您可以从任何其他页面读取,因此您的输入Perwarian页面可以像这样检查它:$nrp = $_SESSION['nrp'];