为附加整数

时间:2018-06-17 01:27:28

标签: php .htaccess mysqli

您好我有一个名为profile.php的网页,用于在用户个人资料之间进行切换。通过注册创建用户后,将根据用户名创建用户名,并用于访问该页面。恩。 ricky_lake,tom_brown等我为此使用了以下.htaccess文件。

RewriteEngine On
RewriteRule ^([a-zA-Z0_9-]+)$ profile.php?profile_username=$1
RewriteRule ^([a-zA-Z0_9-]+)/$ profile.php?profile_username=$1

除非配置文件名称包含数字,否则这一切都正常。在某些情况下,有必要附加,因此我们不会在dB中有重复项。我在register.php附加了一个数字,如下所示:

//Generate username by concatenating first name and last name
$username = strtolower($fname . "_" . $lname);
$check_username_query = mysqli_query($con, "SELECT username FROM users WHERE username = '$username'");

$i = 0;
//if username exists add number to username
while (mysqli_num_rows($check_username_query) != 0) {
    $i++; //Add 1 to i
    $username = $username . "_" . $i;
    $check_username_query = mysqli_query($con, "SELECT username FROM users WHERE username = '$username'"); 
}

如果有人再次注册Tom Brown,则会返回tom_brown_1或下一个tom_brown_2。等。

问题是,唯一出现的是tom_brown。当我添加整数时,它会抛出Error 404。配置文件本身在预期的dB中,其他所有内容似乎都很好(能够登录,发帖等),但无法打开配置文件页面。我认为这与.htaccess有关,但从上面我无法发现问题。现在已经有一段时间......帮忙! :)

1 个答案:

答案 0 :(得分:1)

这应该有用;我还将两个规则合二为一,用?在正则表达式和斜杠之后它使它成为可选的。我还编辑了正则表达式。

RewriteEngine On
RewriteRule ^([a-zA-Z-_0-9]+)/?$ profile.php?profile_username=$1

你也可以做简单的测试; https://htaccess.madewithlove.be/