0

我创建了一个会员资格,人们可以在其中建立个人资料。如果尚未创建,我想做的是显示“创建个人资料”,如果尚未创建,则显示“编辑个人资料”和“查看个人资料”。我尝试使用 if empty 和 if isset 代码设置,但是两者都不能区分谁有个人资料,谁没有。

以下是相关代码:

    $colname_rs_Members_tbl = "-1";
if (isset($_SESSION['MM_Username'])) {
  $colname_rs_Members_tbl = $_SESSION['MM_Username'];
}
mysql_select_db($database_members_db_conn, $members_db_conn);
$query_rs_Members_tbl = sprintf("SELECT * FROM members_tbl WHERE username = %s", GetSQLValueString($colname_rs_Members_tbl, "text"));
$rs_Members_tbl = mysql_query($query_rs_Members_tbl, $members_db_conn) or die(mysql_error());
$row_rs_Members_tbl = mysql_fetch_assoc($rs_Members_tbl);
$totalRows_rs_Members_tbl = mysql_num_rows($rs_Members_tbl);

$first = $row_rs_Members_tbl['first_name'];
$last = $row_rs_Members_tbl['last_name'];
$profile_url_name = strtolower($first . $last);

$colname_rs_Actors_tbl = "-1";
if (isset($_SESSION['$profile_url_name'])) {
  $colname_rs_Actors_tbl = $_SESSION['$profile_url_name'];
}
mysql_select_db($database_profiles_db_conn, $profiles_db_conn);
$query_rs_Actors_tbl = sprintf("SELECT profile_url_name FROM actors_tbl WHERE profile_url_name = %s", GetSQLValueString($colname_rs_Actors_tbl, "text"));
$rs_Actors_tbl = mysql_query($query_rs_Actors_tbl, $profiles_db_conn) or die(mysql_error());
$row_rs_Actors_tbl = mysql_fetch_assoc($rs_Actors_tbl);
$totalRows_rs_Actors_tbl = mysql_num_rows($rs_Actors_tbl);

<p align="center"><?php if (isset($row_rs_Actors_tbl['profile_url_name'])) {echo '<a href="http://profiles.oneforestfilms.com/actors/add_profile.php">Create Actor Profile</a><br />';} else {echo '<a href="http://profiles.oneforestfilms.com/actors/edit_profile.php?profile_url_name=<?php echo $profile_url_name; ?>">Edit Actor Profile</a><br />
    <a href="http://profiles.oneforestfilms.com/actors/actor.php?profile_url_name=<?php echo $profile_url_name; ?>">View Actor Profile</a>';} ?></p>

现在我也试过这个:

<?php $profile = $row_rs_Actors_tbl['profile_url_name']; if (empty($profile)) {echo...

我也用isset试过了。问题在于,对于有个人资料的人来说,与没有个人资料的人显示的内容是一样的。有人对此有答案吗?先感谢您。

4

1 回答 1

0

您似乎关心但还不够,因为您不断检查是否$_SESSION设置了变量,因此验证用户是否具有配置文件,但是无论如何您都执行 MySQL 语句。

此外,该行if (isset($_SESSION['$profile_url_name'])) {$profile_url_name单引号 - 这意味着它的值不会被使用;相反,它将被用作“$profile_url_name”。$_SESSION如果您实际上将索引命名为 ,这可能很好$_SESSION['$profile_url_name'],但考虑到您实际上有一个名为 的变量,这看起来很奇怪$profile_url_name。我想它应该是这样的$_SESSION['first_name last_name']

作为解决问题的开始,最好清理现有代码并更清楚地分开事物。尝试这样的事情:

<?php
$valid_user = false;
$row_rs_Members_tbl = '';
$row_rs_Actors_tbl = '';
$profile_url_name = '';
if (isset($_SESSION['MM_Username'])) {
    // first-check, success; we have a set username
    mysql_select_db($database_members_db_conn, $members_db_conn);
    $query_rs_Members_tbl = sprintf("SELECT * FROM members_tbl WHERE username = %s", GetSQLValueString($_SESSION['MM_Username'], "text"));
    $rs_Members_tbl = mysql_query($query_rs_Members_tbl, $members_db_conn) or die(mysql_error());
    $row_rs_Members_tbl = mysql_fetch_assoc($rs_Members_tbl);

    $profile_url_name = strtolower($row_rs_Members_tbl['first_name'] . $row_rs_Members_tbl['last_name']);
    if (isset($_SESSION[$profile_url_name])) {
        // there is a session-value set for this name; good chance we have a profile!
        mysql_select_db($database_profiles_db_conn, $profiles_db_conn);
        $query_rs_Actors_tbl = sprintf("SELECT profile_url_name FROM actors_tbl WHERE profile_url_name = %s", GetSQLValueString($_SESSION[$profile_url_name], "text"));
        $rs_Actors_tbl = mysql_query($query_rs_Actors_tbl, $profiles_db_conn) or die(mysql_error());

        if (mysql_num_rows($rs_Actors_tvl) > 0) {
            // w00t, we found a profile =]
            $row_rs_Actors_tbl = mysql_fetch_assoc($rs_Actors_tbl);
            $valid_user = true;
        }
    }
}
?>
<p align="center">
    <?php if ($valid_user === true) { ?>
        <a href="http://profiles.oneforestfilms.com/actors/add_profile.php">Create Actor Profile</a>
    <?php } else { ?>
        <a href="http://profiles.oneforestfilms.com/actors/edit_profile.php?profile_url_name=<?=urlencode($profile_url_name);?>">Edit Actor Profile</a>
        <br />
        <a href="http://profiles.oneforestfilms.com/actors/actor.php?profile_url_name=<?=urlencode($profile_url_name);?>">View Actor Profile</a>
    <?php } ?>
</p>

在上面的示例中,我删除了对您的$totalRows_*变量的引用,因为它们没有被使用。另外,我用 替换$_SESSION['$profile_url_name']$_SESSION[$profile_url_name]以防万一。

于 2012-07-26T14:01:55.360 回答