2013-08-26 96 views
2

我有一个关于php的问题。检查用户是否在页面上?

我做了一个登录/注册页面,在这里用户可以选择正确的登录和离开寄存器。我已经完成了左侧和右侧,包括我的地图根目录中的login.phpregister.php

的问题是,当用户键入login.phpregister.php后面的网址,他们得到实际的页面没有风格等

我如何检查用户是both.php页面上,如果他们试图通过手动输入来访问login.phpregister.php,自动将它们重定向到both.php

回答

5

你想要做什么是可能的,你可以在login.php顶端检查$_SERVER['REQUEST_URI'],就像这样:

<?php 
if(strpos($_SERVER['REQUEST_URI'], '/login.php') !== false){ 
    header('Location: /both.php'); 
    exit; 
} 

你会做同样的register.php然而,从重定向用户这些页面不是最好的解决方案;相反,您应该将login.phpregister.php移到您的webroot之外。您不希望用户有权访问的任何文件都应位于Web根目录之外。

假设您的webroot被称为'public_html'。在both.php

public_html: 
- both.php 
includes: 
- login.php 
- register.php 

然后,以包括其他两个文件,这样做::然后创建像这样的目录结构

require __DIR__ . '/../includes/login.php'; 
require __DIR__ . '/../includes/register.php'; 

由于这些文件是他们无法通过键入路径来查看Web根目录以外进入地址栏,但both.php仍然可以包含它们。

+0

谢谢!它的工作,我仍然使用重定向,最适合我的网站atm! – Kets

+0

@Kets不客气!请记住,出于安全原因,将脚本移到网络根外部会更好,有时更适合搜索引擎优化(这两个.php对于Google的登录表单都没有多大意义),如果将所有内容移到webroot之外并使用前端控制器可以轻松控制哪个url加载哪些资源。 – Paulpro

相关问题