我有一个处理mysql连接的php文件(login.php),
然后在成功登录后重定向到某个成员的页面。
完美无瑕。
HOWEVER ,当我尝试 include(“login.php”)并使用 $ username 变量时,它会显示我重定向的html,或者在这种情况下是标题的输出(“location:members.html”);
这可能不是一个缺陷,可能是php的功能,如果是这样,我是否应该将login.php文件分离为两个文件,一个检查,一个重定向,如果成功?
提前致谢
文件信息: 的login.html
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="login.php" method="post">
<table cellpadding=10>
<tr>
<td>Username:</td>
<td><input type="text" name="username"></input></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="password"></input></td>
</tr>
<tr>
<td colspan="2"><input type="submit"></input></td>
</tr>
</table>
</form>
</body>
</html>
的login.php
<?php
session_start();
$con = mysql_connect($host,$_POST['username'],$_POST['password']);
if(!$con)
{
die("Could Not Connect!" . "\n" . "Reason: " . mysql_error());
}
else
{
$_SESSION['username'] = $_POST['username'];
//header("Location:interact.html");
echo "<script>window.location = 'http://localhost/interact.html'</script>";
}
?>
interact.html
<html>
<head>
<title>Nexus | Envoy</title>
</head>
<body>
<p><?php echo "WELCOME ". $_SESSION['username']; ?></p>
</body>
</html>
答案 0 :(得分:1)
首先,你应该将html切成标题,内容和页脚。每个页面和页眉和页脚的内容更改将保持不变。添加session_start()和代码以在头文件中建立连接。
只是为了给你一个粗略的想法...
的login.php
<?php
session_start();
$con = mysql_connect($host,$_POST['username'],$_POST['password']);
if(!$con)
{
die("Could Not Connect!" . "\n" . "Reason: " . mysql_error());
}
else
{
$sql=mysql_query("select * from users where username = '".$_POST['username']."' and
password = '".$_POST['password']."' ");
if(mysql_num_rows > 0)
{
$_SESSION['username'] = $_POST['username'];
header("Location:interact.php");
}
else
{
echo "Invalid Username/password";
}
}
?>
登录
用户名: 密码:
Interact.php
Nexus |使者- &gt;切片html并包含页眉和页脚文件。 - &gt;根据请求的网址更改内容,例如保留一个文件说index.php并包含标题然后是其内容,最后是页脚。 - &gt;说请求是index.php?content = register,然后你会得到$ _REQUEST ['content']的值,并根据它你会包含内容文件 - &gt;就像$ _REQUEST ['content'一样] ='register',include('register.php')。 Register.php将仅包含内容,不包含页眉和页脚。 - &gt;如果$ _REQUEST ['content']为空,请显示主页。 示例header.php: 示例footer.php 示例index.php
答案 1 :(得分:0)
1.删除html并包含页眉和页脚文件 2.根据请求的网址更改内容,例如保留一个文件说index.php并包含标题然后是其内容,最后是页脚。 - 请求是index.php?content = register,然后你将得到$ _REQUEST ['content']的值,并根据它你将包含内容文件 - &gt;就像$ _REQUEST ['content'] = 'register',include('register.php')。 Register.php将仅包含内容,不包含页眉和页脚 3.如果$ _REQUEST ['content']为空,请显示主页。
示例header.php:
<?php
session_start();
$con = mysql_connect($host,$_POST['username'],$_POST['password']);
if(!$con)
{
die("Could Not Connect!" . "\n" . "Reason: " . mysql_error());
}
if($_REQUEST['content'] == 'register') $title="Register";
if($_REQUEST['content'] == 'login') $title="Login";
..
?>
<html>
<head>
<title><?php echo $title; ?</title>
</head>
<body>
示例footer.php
</body>
</html>
示例index.php
<?php
require('header.php');
if(isset($_REQUEST['content']) && !empty($_REQUEST['content']))
{
if($_REQUEST['content'] == 'register') include('register.php');
if($_REQUEST['content'] == 'interact') include('interact.php');
if($_REQUEST['content'] == 'login') include('login.php');
..
}
else
{
include('home.php');
}
require('footer.php');
?>
示例内容文件(login.php)
if(!empty($_POST))
{
$sql=mysql_query("select * from users where username = '".$_POST['username']."' and
password = '".$_POST['password']."' ");
if(mysql_num_rows > 0)
{
$_SESSION['username'] = $_POST['username'];
header("Location:interact.php");
}
else
{
echo "Invalid Username/password";
}
} ?>
<form action="login.php" method="post">
<table cellpadding=10>
<tr>
<td>Username:</td>
<td><input type="text" name="username"></input></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="password"></input></td>
</tr>
<tr>
<td colspan="2"><input type="submit"></input></td>
</tr>
</table>
</form>