首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP登录脚本-用户配置文件循环

PHP登录脚本-用户配置文件循环
EN

Stack Overflow用户
提问于 2011-08-11 04:12:37
回答 1查看 3.8K关注 0票数 0

我使用的系统不能查看其他用户的配置文件(只有你自己的)(其他用户的配置文件,我指的是像http://domain.com/profile.php?user=USERNAME这样的东西)。然而,原来的那个,有它。我想把它移植到新系统中,所以我为这个配置文件创建了一个新的php文件。

我下载了这个登录系统:

http://tympanus.net/codrops/2009/09/16/php-login-system-reloaded-v1-1/

它是此系统的自定义版本:

http://jpmaster77forum.conceptbb.com/t1-php-login-system-with-admin-features-download

以下是原始的userinfo.php代码:

代码语言:javascript
复制
<?
include("include/session.php");
?>

<html>
<title>Jpmaster77's Login Script</title>
<body>

<?
/* Requested Username error checking */
$req_user = trim($_GET['user']);
if(!$req_user || strlen($req_user) == 0 ||
   !eregi("^([0-9a-z])+$", $req_user) ||
   !$database->usernameTaken($req_user)){
   die("Username not registered");
}

/* Logged in user viewing own account */
if(strcmp($session->username,$req_user) == 0){
   echo "<h1>My Account</h1>";
}
/* Visitor not viewing own account */
else{
   echo "<h1>User Info</h1>";
}

/* Display requested user information */
$req_user_info = $database->getUserInfo($req_user);

/* Username */
echo "<b>Username: ".$req_user_info['username']."</b><br>";

/* Email */
echo "<b>Email:</b> ".$req_user_info['email']."<br>";

/**
 * Note: when you add your own fields to the users table
 * to hold more information, like homepage, location, etc.
 * they can be easily accessed by the user info array.
 *
 * $session->user_info['location']; (for logged in users)
 *
 * ..and for this page,
 *
 * $req_user_info['location']; (for any user)
 */

/* If logged in user viewing own account, give link to edit */
if(strcmp($session->username,$req_user) == 0){
   echo "<br><a href=\"useredit.php\">Edit Account Information</a><br>";
}

/* Link back to main */
echo "<br>Back To [<a href=\"main.php\">Main</a>]<br>";

?>

</body>
</html>

这是我的新profile.php

代码语言:javascript
复制
<?php
include('config/db_con.php');
include('config/config.php');
$page = 'profile';
include('header.php');
require_once("php/core.php");

$objCore = new Core();

$objCore->initSessionInfo();
$objCore->initFormController();

    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");
$get_email = $objCore->getSessionInfo()->getUserInfo('email');
$get_flname = "SELECT * FROM `users` WHERE email = '$get_email'";
$res = mysql_query($get_flname) or die(mysql_error());
$rows = mysql_fetch_array($res);
$gemail_hash = md5( strtolower( trim( "$get_email" ) ) );
$req_user = trim(strtolower(str_replace(" ", "", $rows['flname'])));
?> 
<div class="content">
    <div class="left">
        <div class="top_box" style="margin-top:0px;">
            <p><h90>Profile: <?php echo $rows['flname']; ?></h90><?php echo $req_user; ?></p>
        </div>
        <div class="box_pad">
            <div class="box" style="border-bottom:1px solid #dbdbdd;">  
                <?php if($objCore->getSessionInfo()->isLoggedIn()){ ?>
                        <img class="gravatar" src="http://www.gravatar.com/avatar/<?php echo $gemail_hash; ?>?d=mm" />
                        <h1><?php echo $rows['flname']; ?></h1><br />
                        <a href="editaccount.php">[Edit Account]</a>
                        <? if($objCore->isAdmin()) ?>
                            <a href="admin.php">[admin]</a>
                        <a href="php/corecontroller.php?logoutaction=1">[Logout]</a>
                        <? }else{ ?> 
                        blabla test
                        <? } ?>

       <?php unset($objCore); ?>
            </div>
        </div>
    </div>
    <div class="right">
        <? include('ad.php'); ?> 
    </div> 
</div>
<?include('footer.php');?>
</body>

它不起作用,因为当我试图访问其他用户的个人资料时,我又看到了我的。file.php?user=USERNAME url模式是如何定义的?

非常感谢!我真的很需要这个,但我在谷歌上找不到任何东西,因为我真的不知道要搜索什么。如果缺少信息,很抱歉,我尽量做到描述性的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-11 04:30:31

这是很长一段时间内的一些糟糕的编程。

  1. 短标签是邪恶的,像所有大型社区一样,建议不要使用它们。使用别人使用快捷标签编写的脚本更糟糕。
  2. trim(strtolower(str_replace(.....如果用户名在数据库中包含空格/大写字母,为什么要在此处删除它??而不是在它进入数据库之前。

我可以继续,但不能解决你的问题...

不管怎么说:

代码语言:javascript
复制
$get_email = $objCore->getSessionInfo()->getUserInfo('email');
$get_flname = "SELECT * FROM `users` WHERE email = '$get_email'";

在您的代码中,意味着您正在根据用户会话获取数据。因此不是url部分中的那个。

在原文中:

代码语言:javascript
复制
$req_user = trim($_GET['user']);
if(!$req_user || strlen($req_user) == 0 ||
   !eregi("^([0-9a-z])+$", $req_user) ||
   !$database->usernameTaken($req_user)){
   die("Username not registered");
}

将从URL获取用户信息。

但是,有一个问题,你为什么要把生活复杂化?为什么要使用profile.php做一些它不想做的事情呢?如果您正在尝试执行我正在考虑的操作,则应将profile.php => myaccount.phpuserinfo.php => profile.php重命名为

肯定不会让你的生活变得复杂。还要记住重命名引用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7017138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档