PHP скрипт входа в систему - цикл профиля пользователя - PullRequest
0 голосов
/ 11 августа 2011

Система, которую я использую, не имеет возможности просматривать профили других пользователей (только свои) (под профилями других пользователей я имею в виду что-то вроде 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?

Большое вам спасибо!Мне это действительно нужно, и я не смог ничего найти в Google, так как не знал, что искать.Извините, если не хватает информации, я постарался быть как можно более информативным.

1 Ответ

1 голос
/ 11 августа 2011

это плохое программирование в течение длительного времени.

  1. Короткие метки - это зло, и, как и все большие сообщества, совет НЕ ИСПОЛЬЗУЙТЕ ИХ. Использование сценария, написанного кем-то, использующим ярлыки, еще хуже.
  2. trim (strtolower (str_replace ( .....), если имя пользователя находится в базе данных с пробелами / заглавными буквами, зачем удалять его здесь ??, а не до того, как оно попадет в набор данных.

Я мог бы продолжить, но не решил бы твою проблему ...

в любом случае:

$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

наверняка не усложнит вашу жизнь. Также не забудьте переименовать ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...