我一直在研究一个广泛的想法/项目,并且我差不多完成了。我创建了一个注册数据库,并且认为我试图访问我登录后的信息的另一个数据库。我遇到的一个问题是让我的HTML/PHP的网站只有通过登录访问。我试图只有当我使用PHP登录时才可以访问页面
<?php
if(!isset($_SESSION['username'])) {
die("Please login");
}
?>
但它不起作用。这是我的代码,用于登录。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'on');
if(isset($_POST["submit"]))
{
$User = "****";
$Password = "****";
$Database = "****";
$Host = "localhost";
$con = mysqli_connect($Host, $User, $Password);
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_select_db($con,$Database);
$myusername = $_POST["username"];
$mypassword = $_POST["password"];
$sql = "INSERT INTO member (username, password) VALUES ('$myusername','$mypassword')";
mysqli_query($con,$sql);
mysqli_commit($con);
mysqli_close($con);
echo file_get_contents('main_login.php');
}
else
{
?>
<body style='background: url(https://peltjournal.files.wordpress.com/2013/10/bigstock-blank-chalkboard-109848.jpg);'>;
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<form name="form1" method="post" action="proInput.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3"><strong>Member Registeration </strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input type="Text" name="username"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input type="Text" name="password"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="Submit" name="submit" value="Register"></td>
</tr>
</form>
<tr>
<td> </td>
<td> </td>
<td><button id="myButton" class="float-left submit-button">Already a member?</button></td>
<script type="text/javascript">
document.getElementById("myButton").onclick = function() {
location.href = "";
};
</script>
</tr>
</table>
</td>
</tr>
</table>
</div>
<?
}
?>
这里是我只希望通过登录访问的页面。
<?php
if(!isset($_SESSION['username'])) {
die("Please login");
}
?>
<html>
<head>
</head>
<body>
<body style='background: url(https://peltjournal.files.wordpress.com/2013/10/bigstock-blank-chalkboard-109848.jpg);'>;
<table width="175" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<form name="form1" method="post" action="proInput.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3"><strong>Classes:</strong></td>
<td><select name="menu1" id="menu1">
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
</select></td>
<script type="text/javascript">
var urlmenu = document.getElementById('menu1');
urlmenu.onchange = function() {
window.open(this.options[ this.selectedIndex ].value);
};
</script>
</tr>
<tr>
<td><button onclick="goBack()">Logout</button></td>
<script>
function goBack() {
window.history.back();
}
</script>
</tr>
</table>
</body>
</html>
您需要在所有页面上使用session_start() – Tristan
我现在可以登录,但我在页面顶部看到此消息。警告:session_start()[function.session-start]:无法发送会话缓存限制器 - 已经发送的头文件 – Cory
session_start()需要是脚本中的第一件事,以避免首先发送任何头文件。另一个好主意是在执行代码之前使用ob_start()来缓冲发送的任何头文件。 – Tristan