【问题标题】:Checking Username in PHP and MySQL在 PHP 和 MySQL 中检查用户名
【发布时间】:2014-07-15 13:49:14
【问题描述】:

我有一个有点像 Facebook 用户名的小应用程序。当我转到链接localhost/pretty-urls/index.php?id=100000001 时,我将成功使用.htaccess 重定向到localhost/pretty-urls/myusername

但是在我被重定向之前,我需要检查 id 是否已经在 MySQL 数据库中。如果是这样,那是我重定向它的时候了。

我的问题是如何检查用户名 myusername 是否存在并且它不是目录或文件,例如,如果用户将输入 localhost/pretty-urls/myusername ?如果数据库中不存在,则不是目录或文件将其重定向到 404 页面。

顺便说一句,这是我的.htaccess

Options +FollowSymLinks
RewriteEngine On

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


RewriteRule ^([^/]+)/?$ index.php?id=$1 [L,QSA]
ErrorDocument 404 /404.php

当我尝试localhost/pretty-url/usernotexist 时,我没有被重定向到 404 页面,但是当我输入类似 localhost/pretty-url/usernotexist/dfdg 的内容时,这就是我被重定向的时间。事实上,我的数据库中不存在用户名 usernotexist。我该如何解决?

提前谢谢..

【问题讨论】:

  • Htaccess 不能为您的数据库设置规则,在这种情况下您必须使用 PHP 代码进行检查。因此,即使不同,也必须进行重定向。
  • 这可能是一个很大的安全漏洞,因为用户可以输入他想要的有效用户 ID 并被重定向到 myusername 页面
  • 如果他使用有效的用户 ID,那么它将被重定向到具有类似用户 ID 的个人资料页面。但是,我也对此有所限制。

标签: php mysql .htaccess redirect


【解决方案1】:

您无法从 htaccess 文件中检查您的数据库,我会使用 php 来检查用户名并使用 header() 调用进行重定向。 http://php.net/manual/en/function.header.php

【讨论】:

  • Of course it's possible。非常不推荐。
  • 我知道我无法使用 htaccess 检查 db。但是知道usernotexist是文件还是目录有帮助吗?
猜你喜欢
  • 2017-06-13
  • 2016-12-03
  • 2014-12-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多