0

我有一个网站,其中的一部分应该通过登录被阻止我使用了一个登录表单,它可以在网络上的任何地方找到(请参阅登录 php 后重定向到主页

我更新了一些元素(使用 $_SESSION 等)

所以我的登录页面是 index.html

我放了

<?php
session_start();
if(!$_SESSION['username'] = $username){
header("location:index.html");
}
?>

在此文件的 login_success.php 文件的开头,您可以访问网站的所有其他页面。

我现在的问题是:

我是否必须在我网站的每个页面的开头放置“session_start()等”

并且每个页面都必须有.php 而不是.htm?

(我试图保留 .htm 但如果您知道页面名称,则无需登录即可访问页面)

如果您知道更好的网站登录保护脚本,请告诉我,最好是 php。

谢谢您的帮助。

4

6 回答 6

1

Yes, you have to put that code in every page. You may put it in a file and include it in every other files which requires login.

Your all pages are accessible because you have wrong code in if condition part. You are not comparing but assigning value to your session variable.

Use following code:

<?php
session_start();
if($_SESSION['username'] != $username){
header("location:index.html");
}
?>

Just for precaution, Remember, it must not echo any output before header()

于 2012-06-18T10:56:24.170 回答
1

的,您必须在您网站的每个页面的开头放置“session_start()等”

的,每个页面都必须有 .php 扩展名

于 2012-06-18T10:48:27.027 回答
1

是的,你需要在每一页都有它。

每个页面都必须是 .php。

一种常见的方法是有一些 'config.php' 将有 session_start(); 和其他配置/常见的东西。

所以一个页面看起来像:

<?php

include('config.php');

?>

一般来说,将所有文件都保存为 .php 会更干净,并且更改 html 文件的扩展名不会对任何事情产生太大影响。并允许您根据需要向其他页面介绍您的 php。

于 2012-06-18T10:49:37.410 回答
0

更好的解决方案是使用一些使用单个 index.php(或 startup.php 等)的框架来处理页面请求。然后,在处理页面请求之前,您必须start_session()check_login()仅在此范围内执行一次...index.php

于 2012-06-18T11:34:31.410 回答
0

把这个脚本:

<?php
session_start();
if($_SESSION['username'] != $username){
header("location:/index.php");
die("you should be login")
}
?>

在名为check.php的 php 文件中

并将其添加到每个不公开的页面中:

<?php
include_once("check.php");
?>
<html>
.....
于 2012-06-18T10:48:34.140 回答
0

我的两分钱:

  • 用户登录时设置 cookie。
  • 每个生成 html 的 php 文件都应该有一个函数 check_login 或类似的函数来检查用户是否已经登录 - 如果他已经登录,则生成页面,如果没有重定向到登录页面。

要重定向到其他页面,您可以使用<? header("location: http://.........."); ?>

于 2012-06-18T10:49:00.317 回答