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


PHP login script - User profile loop

我使用的系统没有一个选项来查看其他用户的配置文件(只有你自己的)(通过其他用户的配置文件我的意思是像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代码:

<?
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:

<?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模式?

非常感谢!我真的很需要这个,但我在谷歌上找不到任何东西,因为我真的不知道要搜索什么。对不起,如果有信息不足,我已经尽可能描述了。

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

    短标签是邪恶的,就像所有大社区的建议一样,不要使用它们。使用由使用短标签的人编写的脚本更糟糕。
  1. 修剪函数((大小写不敏感…如果用户名是在数据库与空格/大写字母,为什么剥离它在这里??

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

anyway:

$get_email = $objCore->getSessionInfo()->getUserInfo('email');
$get_flname = "SELECT * FROM `users` WHERE email = '$get_email'";
代码中的

表示您正在根据用户会话获取数据。因此不是url部分中的那个。

原文:

$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.php和userinfo.php => profile.php

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