使用PHP链接到用户配置文件
我希望我的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
$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);