2010-07-22 61 views
2

如何在MySQL中做到这一点?如何在注册期间为用户创建特定的URL?

当用户在网站上创建帐户时,我想为他/她创建一个配置文件URL。例如:http://www.domain.com/profile.php?id=111101,下一个用户的URL可能是:http://www.domain.com/profile.php?id=111102我需要设置自动增量吗? 有些字段我在用户注册过程中保存的是:

$sql="INSERT INTO Members (fldFullName, fldEmail, Password, Gender, DOB) 
VALUES 
('$fname','$email','$pass', '$gender', '$date')"; 

截至目前,对于URL字段为:ProfileURL
谢谢。

+0

请从输出更新您的问题 – 2010-07-22 15:51:39

回答

1

您可以创建一个自动递增的ID列。然而,如果你传递给你的 网址你必须非常小心你如何处理填充的查询表示,用户 分布(如避免这种情况)

SELECT * FROM Members WHERE ID = '.$id.'; 

所以,你可以做 $ SQL =“INSERT INTO成员(ID,fldFullName,fldEmail,密码,性别,DOB) VALUE ('','$ fname','$ email','$ pass','$ gender','$ date')“

小心用户输入虽然

0

为您的用户数据库表中的每条记录存储一个ID字段,并且应该将其设置为启用了auto_increment的主键。这样,无论何时将新记录添加到数据库表中,该记录都将自动获得一个唯一的ID号,以便您访问它。

接下来,当您创建profile.php时,请在页面顶部检查$ _GET数组中是否存在id,如果存在,请将其转义以防止sql注入并执行mysql查询从特定用户的记录中提取所需的信息。事情是这样的:

if(isset($_GET['id'])) { //check if id exists in $_GET 
    $id = mysql_real_escape_string($_GET['id']); //prevent sql injection 
    $resc = mysql_query("SELECT fldFullName, fldEmail, Password, Gender, DOB FROM Members WHERE id='$id' LIMIT 1"); //query the db for record 
    if(mysql_num_rows($resc) == 1) { //make sure the user exists 
     $user = mysql_fetch_assoc($resc); //convert mysql resource into array that can be used throughout your script 
    } else { 
     echo "no user with that id"; 
} else { 
    echo "no id provided."; 
} 

现在所有用户的信息都存储在一个阵列称为$user以便在整个页面中使用。

然后,如果你想获得幻想与它更好的SEO效果,看看阿帕奇mod_rewrite模块,这将允许你做URL重写,这样就可以有一个看起来像/profile/someusername而非/profile.php?id=1234网址。 好多了!

这里是开始与mod_rewrite的一些资源:`DESC members`:

  1. http://articles.sitepoint.com/article/guide-url-rewriting
  2. http://www.workingwith.me.uk/articles/scripting/mod_rewrite
相关问题