IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Многопользовательский сайт! (http://www.imho.ws/showthread.php?t=65518)

IncreMan 02.08.2004 14:02

Многопользовательский сайт!
 
Я тут сижу сутками, и с курами тоже :yees:

И в общем вопрос следующий: я готовлю сайт (проектом даже можно назвать).
У сайта будет много пользователей, то есть что-то типа www.domain.com/user1, www.domain.com/user2, www.domain.com/user3 и так далее.

Смысл заключается в том, что титульная страница, и страница с контактной информацией должны быть разные, тоесть user1 - его инфа, user2 - его инфа, и т.п. а остальные ссылки внутри сайта у всех одинаковые. И дело в том, что я не знаю как сделать ссылку с общих страниц на индивидуальную каждого user'a, то есть если запрос на общую страницу был через user1, то ссылки с общих страниц должны быть на user1, а если через user2, то и ссылки на user2.

Ну и в общем-то по причине не знания php и БД я не знаю как мне воплотить нужду в реальность. Пользоваться frame'ами я не хочу.

Кто, что, может подсказать? Буду очень признателен! В долгу не останусь!

klakens 02.08.2004 16:20

Тебе нужен портал? Возьми CMS (система управления контентом) - их щас много развелось (Mambo, Нюки, e107 и пр.) Вообще, тема кучу раз обсуждалась. Зайди в раздел порталы.
ЗЫ. А тебе обязательно /user1, userN ?
ЗЫЫ. ПХП и мускл учи. Куча вопросов отпадет.

IncreMan 02.08.2004 16:32

Понятное дело что php и mysql надо учить, тут бесспорно.
Как раз мне не обязательно userN, это должно выглядеть www.domain.com/vasya, www.domain.com/jenja, короче имена людей.
По сути дела это сайт, начинённый инфой, только если заходит под разными пользователями на титульной странице будет их инфа, а на всех остальных общая. Только чтобы переход с общих страниц на титульную определённого пользователя.

klakens 02.08.2004 17:22

Что за инфа будет на личных страничках? Они будут доступны всем? Обязательно ли иметь пути /userN или можно иначе?
Если они будут публиковать новости, статьи, файлы -- попробуй Мамбу. Посмотри, что такое Денвер (на форуме темы есть) и вперед.

IncreMan 02.08.2004 17:34

Будет примерно следующее, титульный лист у каждого пользователя свой, что-то типа приветствия, (я токой-то, токой-то, рад вас тут видеть, вот моё фото), и строница с контактной инфой, а тело, т.е. статьи разные, опросы, тексты, и т.п. общие.
Я думаю ты немного не понял смысл. Как раз токи стандыртные движки я думаю тут не подойдут.

То что мне надо это следующее: Например у меня есть моя личная страничка на которой есть страницы - вступление, статьи, фотки, тесты, конт.инфо. Я хочу к примеру сделать своим друзьям тоже самое, чтобы у них были теже странички - статьи, фотки, тесты; а вот странички - вступление и конт.инфо у каждого свои. И в общем-то то что я хочу, так это не дублировать странички - статьи, фотки, тесты, а у каждого пользователя показывать тоже самое. И моя проблема заключается в том, что как только ты переходишь на общую страничку то при нажатии на ссылку вступление будешь попадать только на одного и тогоже пользователя, а мне надо так сказать эту ссылку привязать к пользователю.

klakens 02.08.2004 17:57

Они сами это редактировать будут? Могу предложить следующее решение:
На ПХП и мускл можешь конечно написать, токма если ты их не знаешь, работу закончишь в лучшем случае к ноябрю (хотя мне сложно сказать, я-то их знаю). Если это сайт для друзей, попробуй сделать сайт на html, а на сайт залить WebEdit (pro или platinum -- если надо, дам). Там можно каждому создать свою учетную запись и установить необходимый доступ к файлам.
WebEdit -- это такой wysiwyg-редактор+файловый менеджер, им можно заливать графику, флеш и тд. Смотри по адресу _http://www.interspire.com/webedit/demo.php
Я бы, конечно, на ПХП писал. Если хочешь быстро и просто, посмотри _http://kurepin.ru/php/

IncreMan 02.08.2004 18:09

Не, не то смотри вот примерный сайт http://www.moneyextraneed.net/klein, http://www.moneyextraneed.net/rom, в данном случае начинка обсолютно одинаковая, но если ты обратишь внимание на правый угол, то там разные фотки, то есть, как бы разные юзеры, но одним и тем же контентом. примерно тоже самое надо и мне.

klakens 02.08.2004 18:54

Ну, на ASP сделан. Можно на хоть на ColdFusion, токма на ПХП проще будет. Вот на нем и делай. Я тебе ссылку дал. Там прям поэтапно рассказано как сайт на ПХП написать. Зря штоль ее выбрал. Вопросы будут обращайся, подскажу. Скачай себе Денвер (_http://web.dklab.ru/) -- это вебсервак Apache + PHP + MySQL. С ASP я никогда дела не имел.

IncreMan 03.08.2004 14:57

Спасибо, приму к сведению, точнее уже принял!
Я тут подумал, и придумал. Ничего гиниального, но всё же. Прописать в страницах главная и конт.инфо. строку, которая бы вписывала в отдельный файл (адресующий) адрес относительно юзера, а в одинаковых страницах сделать ссылки на главная и конт.инфо. обращением на этот файл, и переходом по ссылке находящейся внутри. И таким образом главная и конт.инфо, разных пользователей будут постоянно обновлять файл (адресующий), и тогда проблемка вроде решена.

klakens 03.08.2004 22:23

Ну да, все так. Молодец :)

IncreMan 04.08.2004 18:01

У меня на сайте, index.php, в меню есть 9 ссылок, и в принципе нажимая на каждую из них должен менятся только текст по середине окна, я это прописал через:
<?php
$fp = fopen ("center.htm", "r");
$bytes = filesize("center.htm");
$buffer = fread($fp, $bytes);
fclose ($fp);
print $buffer;
?>

Теперь собственно вопрос: Как мне сделать так, чтобы нажимая на одну из этих ссылок, в файле index.php менялось center.htm на center_contacts.htm, а ссылка скажем выглядела index.php?ID=contacts и так далее все 9 ссылок.
Спасибо!

DOBERMAN.DP 10.08.2004 20:38

Попробуй поставить Мамбу, к ней есть компонент User Home Pages, позволяющий отвести отдельную страницу портала юзеру. Думаю - это то, что нужно, хотя все равно как-то вы туманно объясняете что хотите.

Fiery_Fenix 11.08.2004 02:39

Цитата:

IncreMan:
<?php
$fp = fopen ("center.htm", "r");
$bytes = filesize("center.htm");
$buffer = fread($fp, $bytes);
fclose ($fp);
print $buffer;
?>
Хм... все это заменяется вот этим:
<?php include("center.htm")?>
Зачем велосипед изобретать?
Цитата:

IncreMan:
Теперь собственно вопрос: Как мне сделать так, чтобы нажимая на одну из этих ссылок, в файле index.php менялось center.htm на center_contacts.htm, а ссылка скажем выглядела index.php?ID=contacts и так далее все 9 ссылок.
Спасибо!
А это либо if() либо switch(), как удобнее будет.
ЗЫ. Все таки настоятельно рекомендую подучить РНР.

IncreMan 11.08.2004 02:52

Да, ты прав проще заменить на include, просто дело в том что я в php ноль, вот и получилось что вписал редактор пхпешный мне то и использовал.
скажи а ты можешь написать пример использования в этом случае if() и switch().
Я уже вроде бы пришёл к кое какому коду, наковырял, то там, то тут, но он всё равно не даёт желаемого. Можешь что-то подсказать, если надо могу запостить код, что собрал.

Fiery_Fenix 11.08.2004 03:45

Цитата:

IncreMan:
скажи а ты можешь написать пример использования в этом случае if() и switch().
Могу. Только полностью и корректно поставь задачу.
Цитата:

IncreMan:
Можешь что-то подсказать, если надо могу запостить код, что собрал.
Давай код что собрал, подправим :)

Hubbitus 11.08.2004 03:47

Цитата:

IncreMan:
скажи а ты можешь написать пример использования в этом случае if() и switch().
Я уже вроде бы пришёл к кое какому коду, наковырял, то там, то тут, но он всё равно не даёт желаемого.
Я могу :) . Только вот нельзя ли поподробнее описать "желаемое"?

IncreMan 11.08.2004 15:20

Ребята всем спасибо за ответы!
Понял, что описал фигово, сейчас попробую по лучьше.

У меня есть сайт www.uplife.info.
Там есть меню, в меню 9 ссылок.

Первая ссылка - "Главная" и последняя ссылка - "Напиши" служат страницами пользователей. Это что-то типа "сайт-визитка", будет много пользователей, и смысл заключается в следующем: чтобы человек приходя по адресу к примеру www.uplife.info/vasya, попадал на сайт где ссылки "Главная" и "Напиши" относятся к Васе, т.е. на "Главной" инфо про Васю, а в "Напиши" данные для связи с Васей.

Остальные ссылки для всех одинаковые и должны загружаться из одного источника. К примеру будет пользователь Петя, его адрес будет www.uplife.info/petya, и тот же пример как с Васей, начинка одинаковая, кроме страниц "Главная" и "Напиши".

Теперь первый момент:
Есть готовый дизайн, находится в файле index.php. Нажимая на одну из 9 ссылок в меню должен меняться контент в середине. И моё большое желание сделать это следующим образом: Например ссылка на "Главная" будет выглядеть: index.php?ID=main, ссылка на "Напиши" будет: index.php?ID=write_me и так далее по всем ссылкам. Соответственно будут файлы main.htm и write_me.htm.

Второй момент:
Так как сайт для большого количества пользователей, то 7 постоянных ссылок (одинаковых для всех пользователей) должны грузиться из папки "/data" к примеру, а "Главная" и "Напиши" из папок "/user1", "/user2", "/vasya", "/petya" и т.д. Соответственно ссылки "Главная" и "Напиши" должны быть зависимы от пользователя, т.е. если я в юзере Вася зашёл прямо на ссылку /vasya/index.php?ID=other_info, к примеру, то нажав на странице ссылку "Главная", попасть на "Главная" пользователя Вася.

Третий момент:
Если человек приходит по адресу /vasya/index.php?ID=link_number_34 к примеру, а такого адреса соответственно нет, то загружалась бы страница index.php.

Вот вроде бы изъяснился, надеюсь отчётливей чем по началу.

Код которыйя использовал для создания меню:
Этот код даёт частично то что надо, но всё равно, он какой-то не такой, я это собрал по кускам, и к тому же я ещё не очень то в php соображаю.
Заранее благодарен любой помощи!
PHP код:

<?php
    
include("menu.htm");
    echo 
"<br>";

    if (isset(
$_GET['ID']) and $_GET['ID'] != "") { 
        
$res $_GET['ID'];
        
$links = array("main","read","became_healthy","lose_weight","became_beauty","check_yourself","take_rest","stories","write_me");        

        if (
$links $res) {
            include(
"$res.htm");
            }
        else {
            
$res "main";
            include(
"$res.htm");
            } 
        }
    else { 
        
$res "main";
        include(
"$res.htm");
        }
?>


Fiery_Fenix 11.08.2004 16:40

Ну-c, начнем-с :)
1. Предлагаю сделать по-человечески index.php. Например пользователь vasya будет видеть свою страничку как index.php?user=vasya, а его персональные ссылки будут вида index.php?user=vasya&ID=main
2. Персональные странички как ты и предлагал хранить на сервере в подпапках типа /vasya.
3. Далее в главное меню в ява-скрипт (я правильно понял что там будет выпадающее меню на яве?) дописать для каждого юзера ссылки типа:
index.php?user=vasya&ID=main и
index.php?user=vasya&ID=write_me.
4. Ну а теперь к самому вкусному :) центральная часть (доработанный твой скрипт):
PHP код:

<?php
    
include("menu.htm");
    echo 
"<br>";
      if ((isset(
$_GET["ID"])) and ($_GET["ID"] != "")) { 
    
$res $_GET['ID'];
    
$links = array("main","read","became_healthy","lose_weight","became_beauty","check_yourself","take_rest","stories","write_me");        
    if (
in_array($res$links) {
                   if ((isset(
$_GET["user"])) and ($_GET["user"] != ""))
                      if ((
$res=="main") or ($res=="write_me")) include ("$_GET["user"]/$res.htm");
                      else include(
"$res.htm");
                   
//хм.. не знаю нужна ли следующая строка
                   
else include("$res.htm");                   
             }
    else include(
"main.htm");
      }
      else include(
"main.htm");
?>

Ну вот пожалуй все...

IncreMan 11.08.2004 17:21

Ругается, пишет Parse error: parse error, unexpected '{' in w:\home\localhost\www\script\index.php on line 12

Hubbitus 11.08.2004 17:39

Цитата:

IncreMan:
Ругается, пишет Parse error: parse error, unexpected '{' in w:\home\localhost\www\script\index.php on line 12
Там нехватает скобки: замени
if (in_array($res, $links) { на
if (in_array($res, $links)) {

Также в приведенном коде есть еще ошибка:
include ("$_GET["user"]/$res.htm"); нужно заменить на
include ("{$_GET['user']}/$res.htm");

IncreMan 11.08.2004 17:44

Я сделал вот так:
PHP код:

<?php 
    
include("menu.htm"); 
    echo 
"<br>"
    
    if ((isset(
$_GET["ID"])) and ($_GET["ID"] != "")) { 
        
        
$res $_GET["ID"]; 
        
$links = array("main","read","became_healthy","lose_weight","became_beauty","check_yourself","take_rest","stories","write_me");         
        
        if (
in_array($res$links)) { 
            
            if ((isset(
$_GET["user"])) and ($_GET["user"] != "")) {
                
                if ((
$res=="main") or ($res=="write_me")) {
                    
$getuser $_GET["user"];
                    include (
"$getuser/$res.htm");
                    }
                }
                else include(
"$res.htm"); 
        }
        else include(
"main.htm"); 
    } 
    else include(
"main.htm"); 
?>

Правда остался один недочёт, если придти на index.php?user=vasya без ID, то он приходит в main не юзера Вася, а в main который index.php?ID=main.

Hubbitus 11.08.2004 18:01

Назначение
 
А вообще я бы поставленню задачу решил бы совсем не так, зачем нужно изобретать подобный велосипед...

Просто делаются ссылки Главная и Напиши с передачей информации о пользователе, ну скажем так: main.php?user=vasya - Главная, write_me.php?user=petya...
А уже в данных файлах извлекается информаия о пользователе из БД (или из файлов, ну или где определим ее хранить), и выводится на страницу... Если страницы будут делаться пользователями и произвольного дизайна - то задача чуть усложнится использованием шаблонов, впрочем весьма тривиальных в данном случае...
Можно и, как предложено выше один файл с двумя параметрами (index.php?user=vasya&ID=main) - но тогда просто на пару строчек больше определения какой раздел запрошен и все...

Как дополнительный вариант конечно можно использовать и переадресацию в зависимости от параметров, но я бы предпочел первый...

P.S. Принципиальный вопрос: Регистрация пользователей будет атоматической, с сайта или пользователи будут сами делать себе странички и им будут создаваться папки на сервере?
В первом случае мой вариант гораздо лучше, т.к. не потребуется делать кучу почти дублирующихся файлов....

IncreMan 11.08.2004 18:07

Я думаю что нет смысла делать страницы типа main.php и write_me.php т.к. у всех страниц дизайн одинаковый, по этому пусть грузится index.php с внутринностями. В принципе то, что предложил Fiery_Fenix подходит, остался только баг в плане того, что приходя по ссылке index.php?user=vasya без указания &?ID=main страница заполняется не из /vasya/main.htm, а из /main.htm.

Hubbitus 11.08.2004 18:12

Цитата:

IncreMan:
Я думаю что нет смысла делать страницы типа main.php и write_me.php т.к. у всех страниц дизайн одинаковый
А если у всех страниц дизайн одинаковый, то IMHO, вообще не стоит плодить кучу этих страниц для пользователей!!!

IncreMan 11.08.2004 18:23

Тут как раз стоит, т.к. это своего рода коммерческий проект (рекламный сайт), что-то типа персонального сайта, но инфо пользователя только на 2 страницах, и фсё ;) , остальная инфа общая для всех.

И в общем-то всё работает как надо, только что-то надо дописать чтоб работало
Цитата:

остался только баг в плане того, что приходя по ссылке index.php?user=vasya без указания &?ID=main страница заполняется не из /vasya/main.htm, а из /main.htm

Hubbitus 11.08.2004 18:46

Цитата:

IncreMan:
Тут как раз стоит, т.к. это своего рода коммерческий проект (рекламный сайт), что-то типа персонального сайта, но инфо пользователя только на 2 страницах, и фсё
И почему, если это коммерческий проект то стоит делать кучу файлов на 95% дублирующих друг-друга, а не сделать это какраз полностью автоматически??? Совсем не понял логики... Помоему именно поэтому и стоит реализовать предложенный мною вариант... Хотя дело конечно хозяйское...

Цитата:

IncreMan:
И в общем-то всё работает как надо, только что-то надо дописать чтоб работало
Цитата:
остался только баг в плане того, что приходя по ссылке index.php?user=vasya без указания &?ID=main страница заполняется не из /vasya/main.htm, а из /main.htm
Ну это-то какраз несложно реализовать (на нормальную структуру код уже всеравно не претендует :) ), заменить
Код:

if (($res=="main") or ($res=="write_me")) include ("{$_GET['user']}/$res.htm");
else include("$res.htm");

на
Код:

if ($res){
          if (($res=="main") or ($res=="write_me")) include ("{$_GET['user']}/$res.htm");
          else include("$res.htm");
      }
      else include ("{$_GET['user']}/main.htm");

и все...

IncreMan 11.08.2004 18:55

Похоже я недопонял предложенный тобой вариант.
Если можно поясни.

Hubbitus 11.08.2004 19:28

Есть ОДНА страница для всех пользователей, но в зависимости от того с какими параметрами она вызвана (для какого пользователя) выводится содержимое по этому пользователю, где данные беруться либо из БД либо из файлов....

Это может быть и вообще один файл на весь сайт, но IMHO, это не лучший вариант, и как логически разделять - тебе решать.

Кстати используя mod_rewrite или стандартный обработчик ошибок сервера легко можно сделать чтобы адреса представлялись как ты писал вначале - в виде каталогов для каждого пользователя...

IncreMan 11.08.2004 19:36

Можешь дать пример кода? Если тебе не сложно конечно.

Hubbitus 11.08.2004 20:03

Цитата:

IncreMan:
Можешь дать пример кода? Если тебе не сложно конечно.
Для этого нужно знать как регистрируются пользователи, где будет храниться информация о пользователях и как...
Стучись на аську, если хочешь. Могу либо подсказать как делать и ответить на все вопросы, либо сам полностью сделать за небольшую плату.

IncreMan 11.08.2004 20:14

Пользователи вообще не будут регистрироваться! Тоесть всё делаю я. Это даже скорее всего не пользователи.
Главный замысел этой страницы таков. К примеру это мой сайт, с какойто рекламой, чего либо. Теперь например мой друг тоже хочет это дело рекламировать, и соответственно такой сайт. Всё что мне нужно, так это добавить страничку про него - "Главная", и страничку с его контактной инфой - "Напиши", остальная инфа одинаковая, один в один как у меня. Вот собственно цель.

Hubbitus 11.08.2004 20:38

Это неважно, кто будет регистрировать пользователей, важно где мы предполагаем хранить информацию о них. Ведь гораздо удобнее просто забить в формочку в панели администрированя сайта (скажем по паролю администратора) данные пользователя (Имя, контактные данные...), чем каждому новому создавать по две страницы?

Fiery_Fenix 12.08.2004 04:30

Цитата:

Hubbitus:
Там нехватает скобки: замени
if (in_array($res, $links) { на
if (in_array($res, $links)) {
Также в приведенном коде есть еще ошибка:
include ("$_GET["user"]/$res.htm"); нужно заменить на
include ("{$_GET['user']}/$res.htm");
Блин, вечно я какие-то скобочки забываю поставить :) Спасибо!
Цитата:

Hubbitus:
Ведь гораздо удобнее просто забить в формочку в панели администрированя сайта (скажем по паролю администратора) данные пользователя (Имя, контактные данные...), чем каждому новому создавать по две страницы?
Полностью согласен. Раз уж пошла такая запарка, то может действительно сделать пользователей в базе, либо на крайняк в текстовом файлике.
ЗЫ А создавать файлики по шаблону скриптом не так уж сложно :)


Часовой пояс GMT +4, время: 23:01.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.