使用PHP链接到用户配置文件

时间:2010-09-10 20:45:14

标签: php html

我希望我的php查询显示用户名,并带有指向用户个人资料的链接。

<?php

$get_items = "SELECT * FROM items WHERE category='test'";
$result = mysql_query($get_items);

while($item = mysql_fetch_array($result, MYSQL_ASSOC)){
    $creator = $item['created_by'];
     echo "<b>Seller: </b>"."<a href='userprof.php?id=$creator'>$creator</a>";  
    }
?>

点击此链接可将其转到我创建的用户个人资料页面。但我希望“userprof.php?id = $ creator”知道哪个用户显示帐户信息。这是最好的方法吗?如何阅读网址并显示正确的信息?

4 个答案:

答案 0 :(得分:2)

<?php
$userId = $_GET['id'];
$sql = "SELECT * FROM user WHERE id = " . intval($userId);
$result = mysql_query($sql);
...

答案 1 :(得分:0)

您正在发送GET变量。

$id = $_GET['id']; // Contains whatever was in $creator;

答案 2 :(得分:0)

使用$_GET从URL获取变量。 就像在你的代码中你想要访问用户配置文件然后从url获取用户ID 像

http://localhost/test/user_profile.php?uid=2

这里的url uid是2,它是你的用户ID。 您可以使用代码

获取此ID
$user_id = $_GET['uid'];

在查询中使用此变量。

答案 3 :(得分:0)

OMG !!令人难以置信的PHP!它扼杀了我的眼睛!!

这些人,他们都没有做出正确的事情:

  1. 总是过滤用户输入!!
  2. 永远不要信任PHP ESCAPE功能,ESP不是intval()addslashes() !!
  3. 即使mysql_real_escape_string()具有脆弱性,也不应使用。
  4. 您应该在2010年使用所有内容的预备语句。
  5. 这是正确的方法:

    <?php
    if (!filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT))
    {
        trigger_error('Invalid User ID. It must be an integer (number).', PHP_USER_ERROR);
        exit;
    }
    
    $userId = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT);
    $sql = "SELECT * FROM user WHERE id = ?";
    
    $pdo = new PDO('mysql:host=localhost;db=mydb', $dbUsername, $dbPassWord);
    $statement = $pdo->prepare($sql);
    $statement->execute(array($userId));
    
    $result = $statement->fetch(PDO::FETCH_ASSOC);
    

    这是100%安全的。我希望人们既不会投票,也不会降低我的答案。糟糕的代码是如此系统化,我们只需要从屋顶大喊大叫,直到新人开始正确学习它,否则PHP作为专业语言会受到严重损害。