如果*不存在,则重定向某个页面?

时间:2012-10-06 16:29:14

标签: php

我有一个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的主要部分。其余的只是获得状态,描述等。

3 个答案:

答案 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)

解决问题之前的几件重要事情:

  • MySQL_ *系列函数has been deprecated,不应再使用了。
  • 您的代码容易受到巨大安全漏洞的影响 - SQL Injection。请确保您正在清理数据库查询 - 如果没有其他内容,只需在当前代码中使用$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不属于任何用户,您应该将用户重定向到某个页面,解释出现了什么问题。