我有一个profile.php
页面,当有人查看自己的个人资料时,它会抓取用户的ID并添加profile.php?UserID=*
(*是用户的ID号)。目前,没有合法的方式来查看其他个人资料,但您可以更改网址中的ID。问题是,您可以转到不存在的用户的个人资料,并使其成为默认的个人资料页面,而不包含任何内容。有没有办法从页面/网址获取ID,看看它是否存在,如果没有,重定向到某个页面?
<?php
include('./dbnotseen/global.php');
$profile = mysql_query("SELECT * FROM admin WHERE username='$username'");
$row = mysql_fetch_array($profile);
$username = $row['username'];
if (($session_username)) {
}else {
("location: index.php");
}
//max per page
$per_page = 1;
//get start variable
$start = $_GET['UserID'];
//count records
$record_count = mysql_num_rows(mysql_query("SELECT * FROM admin"));
//count max pages
$mac_pages = $record_count / $per_page;
if (!$start)
$start = 0;
//display data
$get = mysql_query("SELECT * FROM admin WHERE id='$start'");
while ($row = mysql_fetch_array($get)) {
$id = $row['username'];
$picture = $row['picture'];
$admin = $row['admin'];
$status = $row['status'];
$desc = $row['description'];
$twitter = $row['twitter'];
}
?>
这是profile.php中PHP的主要部分。其余的只是获得状态,描述等。
答案 0 :(得分:1)
您可以检查mysql查询的结果集是否为空。使用mysql_
函数执行此操作将如此:
$get = mysql_query("SELECT * FROM admin WHERE id='$start'");
if (mysql_num_rows($get) > 0) {
while ($row = mysql_fetch_array($get)) {
// rest of your code
}
}
else {
// redirect to another page
header("Location: otherpage.php");
}
这可以让您了解应该如何处理它,但正如@Madara Uchiha
在您的问题的评论中建议的那样,您应该停止使用mysql_
函数。
答案 1 :(得分:0)
解决问题之前的几件重要事情:
$start = mysql_real_escape_string($_GET['UserID']);
。现在,您似乎想查看并查看为$get
查询获得的结果数量。您可以使用mysql_num_rows
函数:
if (!mysql_num_rows($get)) {
//no user exists! do something different here
} else {
while ($row = mysql_fetch_array($get)) {
$id = $row['username'];
$picture = $row['picture'];
$admin = $row['admin'];
$status = $row['status'];
$desc = $row['description'];
$twitter = $row['twitter'];
}
}
答案 2 :(得分:0)
您还可以使用以下SQL语句计算admin
表匹配条件id = $start
中的记录:
"SELECT COUNT(*) FROM admin WHERE id='$start'"
如果没有匹配的记录,那么提供的UserID不属于任何用户,您应该将用户重定向到某个页面,解释出现了什么问题。