PHP重定向和包含

时间:2013-02-12 05:49:14

标签: php redirect include

我有一个处理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>

2 个答案:

答案 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>