我正在制作一个项目。共有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)&amp;密码。这是代码:
<?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
作为帮助文件。 NRP&amp;将检查来自loginMHS
的varchar。如果用户没有输入NRP,程序会显示消息&#34;输入perwalian belum dapat diakses saat ini&#34;。我真的需要这个文件吗?或者,我只能使用2个文件(loginMHS
&amp; 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&amp; 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=
因此,该程序不会显示我之前选择的数据库中的数据。
我该怎么做才能解决这些错误?请解释一下你的答案。谢谢。
答案 0 :(得分:1)
使用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,因此您的inputPerwalian页面可以像这样检查:$nrp = $_SESSION['nrp'];