我一直在做一个小项目,遇到了很多问题。我正在尽可能多地学习html、php、MySQL等。我用MySQL创建了一个数据库,我知道我的设置是正确的,因为我使用的登录页面能够知道什么是正确的和错误的用户帐户。成功登录后,我似乎无法将页面重定向到欢迎页面。这是我的密码。
登录页面代码
<?php
include("config.php");
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST") {
// username and password sent from form
$myusername = mysqli_real_escape_string($db,$_POST['username']);
$mypassword = mysqli_real_escape_string($db,$_POST['password']);
$sql = "SELECT id FROM admin WHERE username = '$myusername' and passcode = '$mypassword'";
$result = mysqli_query($db,$sql);
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
$active = $row['active'];
$count = mysqli_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count == 1) {
session_register("myusername");
$_SESSION['username'] = $myusername;
header("location: welcome.php");
}else {
$error = "Your Login Name or Password is invalid";
}
}
?>
<html>
<head>
<title>Login Page</title>
<style type = "text/css">
body {
font-family:Arial, Helvetica, sans-serif;
font-size:14px;
}
label {
font-weight:bold;
width:100px;
font-size:14px;
}
.box {
border:#666666 solid 1px;
}
</style>
</head>
<body bgcolor = "#FFFFFF">
<div align = "center">
<div style = "width:300px; border: solid 1px #333333; " align = "left">
<div style = "background-color:#333333; color:#FFFFFF; padding:3px;"><b>Login</b></div>
<div style = "margin:30px">
<form action = "" method = "post">
<label>UserName :</label><input type = "text" name = "username" class = "box"/><br /><br />
<label>Password :</label><input type = "password" name = "password" class = "box" /><br/><br />
<input type = "submit" value = " Submit "/><br />
</form>
<div style = "font-size:11px; color:#cc0000; margin-top:10px"><?php echo $error; ?></div>
</div>
</div>
</div>
</body>
</html>
会话代码
<?php
include('config.php');
session_start();
$user_check = $_SESSION['myusername'];
$ses_sql = mysqli_query($db,"select username from admin where username = '$user_check' ");
$row = mysqli_fetch_array($ses_sql,MYSQLI_ASSOC);
$login_session = $row['username'];
if(!isset($_SESSION['username'])){
header("location:welcome.php");
}
?>
重定向的页面
<?php
include('session.php');
?>
<html>
<head>
<title>Welcome </title>
</head>
<body>
<h1>Welcome <?php echo $login_session; ?></h1>
<h2><a href = "logout.php">Sign Out</a></h2>
</body>
</html>
<?php
session_start();
if(session_destroy()) {
header("Location: login.php");
}
strong text ?>
<?php
session_start();
include("config.php");
if($_SERVER["REQUEST_METHOD"] == "POST") {
// username and password sent from form
$myusername = mysqli_real_escape_string($db,$_POST['username']);
$mypassword = mysqli_real_escape_string($db,$_POST['password']);
$sql = "SELECT id FROM admin WHERE username = '$myusername' and passcode = '$mypassword'";
$result = mysqli_query($db,$sql);
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
$active = $row['active'];
$count = mysqli_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count == 1) {
$_SESSION['username'] = $myusername;
header("Location: welcome.php");
}else {
$error = "Your Login Name or Password is invalid";
header("Location: login.php?error=".$error);
}
}
else {
if (isset($_GET['error'])) {
echo $_GET['error'];
}
?>
<html>
<head>
<title>Login Page</title>
<style type="text/css">
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
}
label {
font-weight: bold;
width: 100px;
font-size: 14px;
}
.box {
border: #666666 solid 1px;
}
</style>
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<div style="width:300px; border: solid 1px #333333; " align="left">
<div style="background-color:#333333; color:#FFFFFF; padding:3px;"><b>Login</b></div>
<div style="margin:30px">
<form action="" method="post">
<label>UserName :</label><input type="text" name="username" class="box"/><br/><br/>
<label>Password :</label><input type="password" name="password" class="box"/><br/><br/>
<input type="submit" value=" Submit "/><br/>
</form>
<div style="font-size:11px; color:#cc0000; margin-top:10px"><?php echo $error; ?></div>
</div>
</div>
</div>
</body>
</html>
<?php
}
?>
这是会话代码
<?php
session_start();
include('config.php');
$user_check = $_SESSION['myusername'];
$ses_sql = mysqli_query($db,"select username from admin where username = '$user_check' ");
$row = mysqli_fetch_array($ses_sql,MYSQLI_ASSOC);
$login_session = $row['username'];
?>
重定向的页面
<?php
include('session.php');
?>
<html>
<head>
<title>Welcome </title>
</head>
<body>
<h1>Welcome <?php echo $login_session; ?></h1>
<h2><a href = "logout.php">Sign Out</a></h2>
</body>
</html>
<?php
session_start();
if(session_destroy()) {
header("Location: login.php");
}
?>
哦。。。不能在某些html元素之后设置标题。如果你想用php重定向,你基本上必须在加载任何东西之前设置它。您仍然可以简单地使用一些javascript重定向。。。
<script>window.location="index.html";</script>
这会使您在让它运行时返回到索引。
我希望我能帮上忙。我19岁了,跟你一样,伙计!玩得高兴
Try it, I think this is useful for you,
header('Location: http://www.example.com/welcome.php');
并尝试更改session_start((的位置;配置的顶部。
原因可能有很多。最有可能的情况是脚本在发出头之后没有退出。请注意,header()
只是向页面添加了一个标头,但不会停止进一步的执行。因此,登录页面识别您的登录,发出重定向头,但执行仍在继续,登录表单将再次呈现,从而停止重定向。
建议:将exit;
放在header()
调用之后。
另一个可能的原因是在标头输出之前有输出。也就是说,如果您不小心生成了任何文本,然后调用header(...)
,那么标头将不会起任何作用。PHP可以检测到这个问题,在这种情况下应该会收到警告。请确保您已启用错误和警告-检查ini文件中的error_reporting
是否设置为E_ALL
,display_errors
是否已变为on
。这将帮助您在开发过程中看到许多问题。
您还可以使用一些调试工具来了解这种情况下的错误。按照易于立即使用的顺序:
-
浏览器开发工具。在浏览器中的页面上单击鼠标右键,选择"检查"。它将为您打开浏览器开发工具。特别是你对"网络请求"选项卡感兴趣。切换到该选项卡,然后重新提交登录表单。你会在选项卡中看到请求。检查它:是否存在标题?方法POST是否符合您的预期?响应机构是什么?
-
正在调试代理。例如,适用于Windows的Fiddler,适用于OSX的Charles。这是一款软件,可以帮助您查看浏览器发出的所有请求。如果您的工作流有多个重定向,则浏览器的"网络"选项卡将不会显示除上次请求之外的任何内容。而proxy将存储所有url,并让您检查案例是如何演变的。
-
PHP调试器-安装并激活Xdebug,设置您的IDE(您使用它吗?(来使用它。它将帮助您逐步完成PHP代码,并查看算法是否确实正确。