2015-11-21 51 views
0


我一直在研究一个广泛的想法/项目,并且我差不多完成了。我创建了一个注册数据库,并且认为我试图访问我登录后的信息的另一个数据库。我遇到的一个问题是让我的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>&nbsp;</td> 
<td>&nbsp;</td> 
<td><input type="Submit" name="submit" value="Register"></td> 
</tr> 
</form> 
<tr> 
<td>&nbsp;</td> 
<td>&nbsp;</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> 
+1

您需要在所有页面上使用session_start() – Tristan

+0

我现在可以登录,但我在页面顶部看到此消息。警告:session_start()[function.session-start]:无法发送会话缓存限制器 - 已经发送的头文件 – Cory

+0

session_start()需要是脚本中的第一件事,以避免首先发送任何头文件。另一个好主意是在执行代码之前使用ob_start()来缓冲发送的任何头文件。 – Tristan

回答

1
<?php 
    if(!isset($_SESSION['username'])) { 
    die("Please login"); 
} 
    else { 
    echo "what user can see"; 
} 
?> 
0

试试这个..

session_start(); 
if (($_SESSION['username'] == '') || (!isset($_SESSION['username'])) { 
    die("Please login"); 
} 
+0

我最终得到了分析错误:语法错误,意外的'{' – Cory

+0

试图找到你的代码错误,如果你需要使用SESSION变量,你需要'session_start();'在页面顶部设置SESSION和使用SESSION。 为什么投票这是工作代码.. 希望这有助于任何方式.. –

+0

session_start确实工作。如果我登录,我只能查看页面。我在页面顶部出现此错误。 警告:session_start()[function.session-start]:无法发送会话缓存限制器 - 已发送的头文件 – Cory

相关问题