【发布时间】:2014-07-09 12:14:19
【问题描述】:
好的,我正在尝试在这里创建一个简单的登录,但我的登录代码以及介绍页无法正常工作。尝试调整 SESSION 的代码,但没有成功。
这是我 login.php 的代码:
<?php require_once("includes/connection.php"); ?>
<?php include("includes/header.php"); ?>
<?php
if(isset($_POST["login"])){
if(!empty($_POST['username']) && !empty($_POST['password'])) {
$username=$_POST['username'];
$password=$_POST['password'];
$query=mysql_query("SELECT * FROM usertbl WHERE username='".$username."' AND password='".$password."'");
$numrows=mysql_num_rows($query);
if($numrows!=0)
{
while($row=mysql_fetch_assoc($query))
{
$dbusername=$row['username'];
$dbpassword=$row['password'];
}
if($username == $dbusername && $password == $dbpassword)
{
session_start();
$_SESSION['session_username']=$username;
/* Redirect browser */
header("Location: intropage.php");
}
} else {
$message = "Invalid username or password!";
}
} else {
$message = "All fields are required!";
}
}
?>
<div class="container mlogin">
<div id="login">
<h1>LOGIN</h1>
<form name="loginform" id="loginform" action="" method="POST">
<p>
<label for="user_login">Username<br />
<input type="text" name="username" id="username" class="input" value="" size="20" /></label>
</p>
<p>
<label for="user_pass">Password<br />
<input type="password" name="password" id="password" class="input" value="" size="20" /></label>
</p>
<p class="submit">
<input type="submit" name="login" class="button" value="Log In" />
</p>
<p class="regtext">No account yet? <a href="register.php" >Register Here</a>!</p>
</form>
</div>
</div>
<?php include("includes/footer.php"); ?>
<?php if (!empty($message)) {echo "<p class=\"error\">" . "MESSAGE: ". $message . "</p>";} ?>
然后这里是我的 intropage.php 的代码,我在其中重定向页面。
<?php
session_start();
if(!isset($_SESSION["session_username"])){
header("location:login.php");
} else {
?>
<?php include("includes/header.php"); ?>
<h2>Welcome, <?php echo $_SESSION['session_username'];?>! </h2>
<p><a href="logout.php">Logout</a> Here!</p>
<?php
}
?>
有什么帮助吗?只是想让这项工作正常进行,或者如果您可以进行任何调整,以便我可以找到我犯错的地方。非常感谢!
【问题讨论】:
-
那么,您的代码 (login.php) 在中断之前可以运行多长时间?在开发过程中将错误报告添加到文件顶部
error_reporting(E_ALL); ini_set('display_errors', 1);,并使用var_dump()跟踪设置的内容和未设置的内容。 -
实际上它在登录到 intropage.php 后正确重定向(这很好)但是,如果 SESSION 确实工作正常,它必须留在 intropage.php 上(并保持登录直到注销按钮单击)但是当我按下后退按钮时,它再次将我发送到 login.php,因为我正在登录,所以它应该在 intropage.php 上。
-
您的 login.php 文件或包括 intropage.php 在内的所有其他文件,需要包含
if(!isset($_SESSION["session_username"]))或if(isset($_SESSION["session_username"])){ // do something }else{ // do something else } -
能否更具体地说明我将把该代码放在哪里?这样我就可以调整它。谢谢。
-
看到你的 PHP 包含在你的脚本顶部和
session_start()调用之间的所有这些换行符吗?它们被评估为\n,这意味着您的会话将不会启动,因为它们需要在 anything 发送到浏览器(包括新行)之前启动。