1

我有一个处理mysql连接的php文件(login.php),

然后在成功登录后重定向到某种会员页面。

这完美无瑕。

但是,当我尝试include("login.php")并使用$username变量时,它会显示重定向的 html,或者在这种情况下显示header("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>

登录.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>";
}

?>

交互.html

<html>
<head>

<title>Nexus | Envoy</title>

</head>

<body>
<p><?php echo "WELCOME ". $_SESSION['username']; ?></p>
</body>
</html>
4

2 回答 2

1

首先,您应该将 html 切片为页眉、内容和页脚。每个页面的内容更改以及页眉和页脚将保持不变。在头文件中添加 session_start() 和建立连接的代码。

只是给你一个粗略的想法...

登录.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";
   }
}

?>

登录

用户名密码:

交互.php

连结 | 使者

-> 切片 html 并包含页眉和页脚文件。-> 根据请求的 url 更改内容,例如保留一个文件,例如 index.php 并包含标题,然后是其内容,最后是页脚。-> 假设请求是 index.php?content=register,那么您将获得 $_REQUEST['content'] 的值并基于它包含内容文件 ->like if $_REQUEST['content'] = '注册',包括('register.php')。Register.php 将仅包含内容,不包含页眉和页脚。->如果 $_REQUEST['content'] 为空,则显示主页。示例 header.php:示例页脚。
于 2013-02-12T07:02:00.813 回答
0

1.切片html并包含页眉和页脚文件。
2.根据请求的url更改内容,例如保留一个文件说index.php并包含标题,然后是其内容,最后是页脚。- 假设请求是 index.php?content=register,那么您将获得 $_REQUEST['content'] 的值,并基于它包含内容文件 ->like if $_REQUEST['content'] = '注册',包括('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>
于 2013-02-12T07:37:19.093 回答