通过在URL中添加唯一ID来使配置文件页面唯一。但是怎么样?

时间:2013-12-01 12:17:03

标签: php mysql

我正在使用PHP / MySQL创建社交网络脚本。一切都很好。主页,个人资料,编辑个人资料等。但个人资料页面包含网址 - http://www.localhost/socialnetwork/profile.php

我有5个虚拟用户,并且使用用户名/密码访问配置文件时。可以在浏览器上看到相同的URL。

但我想要像 -

这样的东西

网址 - http://www.localhost/socialnetwork/profile.php?u=testuser

其中'u'可以是数据库中的唯一用户ID。怎么实现呢?这是我的代码 -

<?php  
include("includes/session.php");
include("includes/database.php");
include("includes/user.php");
include("includes/functions.php");
if(!$session->is_logged_in()) { redirect_to("login.php");}
?>

 <?php
$user_id = $_SESSION['id'];
// - Here's What I have added  - But nothing changes. The URL is same.
if(isset($_GET['id'])){
$uid =   $_GET['id']; 

}

$sql    = "SELECT * FROM users WHERE id = '$user_id' LIMIT 1"; 
$result = $database->query($sql);
while($record = $database->fetch_array($result)){

$fname      = $record['fname'];
$lname      = $record['lname'];
$email      = $record['email'];
$sex        = $record['sex'];
$password   = $record['password'];
$phone      = $record['phone'];
$birthday   = $record['birthday'];
$display    = $record['dp'];
$bio        = $record['bio'];
 }

3 个答案:

答案 0 :(得分:1)

  1. 使用$_GET['u']读取网址
  2. 在您的DbTable中添加一个带有UNIQUE INDEX的列用户名
  3. 使用结合两者的SQL查询来读取用户配置文件

答案 1 :(得分:0)

BEFORE PROFILE.PHP

当用户“foo”(虚拟用户名)登录时,他被重定向到页面

http://www.localhost/socialnetwork/profile.php?u=foo

大!但是我们怎么做呢?重定向是在PHP中进行的,例如:

header('location: /socialnetwork/profile.php?u=' . $theusername_just_logged);

header()功能基本上会重定向到另一个页面。调用该函数后,您将进入页面

http://www.localhost/socialnetwork/profile.php?u=foo

INTO PROFILE.PHP

然后,在profile.php文件中,通过变量$ _GET检索用户名。在这种特殊情况下,$ _GET ['u']将包含用户名,即“foo”。 Here more info about $_GET

检索完用户名后,您可以查询数据库以获取该用户的所有信息并根据它们构建页面!

这样,基于$ _GET ['u'],你总会得到一个不同的页面!如果数据库中不存在用户名,请考虑制作正确的错误页面

希望有所帮助

答案 2 :(得分:0)

在你的while循环中添加它

$id=$record['id'];

然后在你的while循环中建立一个链接 像这样

echo '<p>
<a href="the url of your profile page.php?id='$id'">

'.$fname.'

    </a></p>';

这将回显数据库中的所有名称,并为它们添加唯一性。 当您在个人资料页面上,您可以使用

获取该特定用户的ID
echo $_GET[id'];