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

使用PHP链接到用户配置文件,php,html,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

我希望我的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”知道哪个用户显示帐户信息。这是最好的方法吗?如何读取url并显示正确的信息?

您正在发送GET变量

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

使用
$\u GET
从URL获取变量。 就像在代码中一样,您希望访问用户配置文件,然后从url获取用户id 像

在url中,uid是2,这是您的用户ID。 您可以使用代码获取此id

$user_id = $_GET['uid'];

在查询中使用此变量。

OMG!!可怕的PHP比比皆是!它伤了我的眼睛

这些人,没有一个人做了两件正确的事:

  • 总是过滤用户输入
  • 永远不要信任PHP转义函数,尤其是不要信任
    intval()
    addslashes()
  • 即使是
    mysql\u real\u escape\u string()
    也存在漏洞,不应使用
  • 你应该在2010年为一切使用准备好的报表
  • 这是正确的方法:

    <?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);
    

    我认为我的while循环有问题。您没有为项目分配任何内容。尝试将其更改为
    while($item=mysql\u fetch\u array($result,mysql\u ASSOC)){
    您不应该在2010年使用mysql\u函数。使用PDO。我的解决方案对您有效吗?
    <?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);