-1

我需要实现一个功能:

  1. 用户想在网站上注册
  2. 用户按下按钮“快速注册我”
  3. 脚本生成唯一链接,如“mydomain.com/user/asdfsdfsdfswe3525fsdsdfs”并将其显示给用户
  4. 如果以后的用户点击此链接 - 我们验证用户并显示索引页面(因此,例如,用户可以收藏此链接并使用它而不是用户名密码)

我有一些限制:

  1. 链接必须类似于“mydomain.com/user/asdfsdfsdfswe3525fsdsdfs”。没有 GET 参数。
  2. 用户通过身份验证并加载页面后 - 用户应该在浏览器中看到此登录 url。所以我无法将用户重定向到所需的页面/脚本

我不明白如何使用 php 通过此类链接对用户进行身份验证。如何避免404错误?

4

1 回答 1

0

Mod重写我这样做的方式,这将使它更简单但同时也很困难。

.htaccess 文件_ _ __ _ __ _ __ _ __ _ ____

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /main site folder/

    RewriteRule (.*)\.xml(.*) $1.php$2 [nocase] 

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.*)$ index.php/$1
</IfModule>

/classes/simplifyURL.php 文件_ _ __ _ __ _ __ _ __ _ _

<?php

class simpleUrl{

    var $site_path;

    function __construct($site_path){
        $this->site_path = $this->removeSlash($site_path);
    }

    function __toString(){
        return $this->site_path;
    }

    private function removeSlash($string){
        if( $string[strlen($string) - 1] == '/')
        $string = rtrim($string, '/');

        return $string;
    }
    function segment($segment){

    $url = str_replace($this->site_path, '', $_SERVER['REQUEST_URI']);
    $url = explode('/', $url);
    if( isset($url[$segment]))
        return $url[$segment];
    else
        return false;
    }
}

?>

index.php 文件顶部_ _ __ _ __ _ ___

<?php
include 'classes/simplifyURL.php';

$url = new simpleUrl('/main site folder');
$url1 = $url->segment(1);
$url2 = $url->segment(2);
$url3 = $url->segment(3);
$url4 = $url->segment(4);

?>

将页面包含到基于 url_ _ __ _的 index.php 中

            <?php

 $pages_dir = 'pages';



 if (!empty($url1)) {

  $pages = scandir($pages_dir, 0);

  unset($pages[0], $pages[1]);



  $p = $url1;



  if (in_array($p.'.inc.php', $pages))  {

   include($pages_dir.'/'.$p.'.inc.php');

  } else {

   echo 'Sorry, page was not found.';

  } 

  } else {

   include($pages_dir.'/home.inc.php');

 }

 ?>

这是你必须做出的巨大转变。无论如何,让我解释一下上面的部分。它采用 url 的第一位的值,因此在域之后并检查它的文件夹页面,如果它可以找到它,它将显示它。因此,对于您的情况,您需要创建一个名为 user.inc.php 的文件。将身份验证放入其中并使用 $url2 变量访问 url 的末尾以获取您在其上的长代码。其他明智的称为动态页面。希望这可以帮助

这是很多工作,我看不出 GET 有什么问题

于 2013-06-27T22:46:11.457 回答