Пользовательский кабинет

Статус
Закрыто для дальнейших ответов.

lll

Member
Регистрация
21.04.2010
Сообщения
14
Здравствуйте, Уважаемые ... Мне на диплом нужен сайтик с пользовательским режимом, т.е. каждый зарегистрированный пользователь получает свою страничку с текстом(и не чего более) и у него должна быть возможность её редактирования (текста), Я смог сделать странички и админку общую, теперь надо сделать для пользователя(объяснил как смог), если кто знает умные книжечки или сайтики прошу кинуть сылочку буду очень благодарен.
 

toxin

Well-Known Member
Регистрация
20.10.2009
Сообщения
478
в моем городе негде учиться web програмированию, и по этому аторам подобных постов я просто завидую, но не могу понять, если ты в этом не варишь зачем идти учиться на програмиста, модно ?

по теме
копай в сторону сесий, человек зашел на сайт в сессию записалось 1 нажал кнопку выход в сессию записали 0 самый простой и очень оппасный способ =)
 

lll

Member
Регистрация
21.04.2010
Сообщения
14
не по теме^
меня все 4 г0да учили только в БД, поэтому web програмирование изучал сам, благодаря интернету, а учусь на программиста, что бы шарить в этом, правда не так хорошо помогло как хотелось бы.
 

toxin

Well-Known Member
Регистрация
20.10.2009
Сообщения
478
Если вы учили БД как могли дать вам выполнение такой работы ?
Если вы совсем в этом не шарите ?
 

lll

Member
Регистрация
21.04.2010
Сообщения
14
вот так, дали же и не мне одному работы связанные с сайтами
 

toxin

Well-Known Member
Регистрация
20.10.2009
Сообщения
478
Я говорю, в глобальный массив записывай 1 или 0 1 если зареган 0 если нет, и на закрытых страницах проверяй есть ли подобное значение ! или воспользуйся чем нубуть готовым !
 
  • Like
Реакции: lll

Serg@NT

Well-Known Member
Регистрация
20.02.2010
Сообщения
506
Чот слабовато для диплома как-то... А какая специальность, если не секрет?

А по теме, в чём, собственно, трудность?
1) Если БД изучали - табличка пользователей: имя, логин, пароль, персональный текст и т.п.
2) Форма ввода логина-пароля (опять же, если админку делали, наверное, вход туда по логину-паролю, знаете что такое)
3) по логину-паролю выбираете текст из базы и выдаёте на страничку
4) ссылка "изменить", по ней - форма для редактирования текста, которая редактирует текст в базе.
 

toxin

Well-Known Member
Регистрация
20.10.2009
Сообщения
478
а в чём опасность?
Всетаки должна быть уникальность, дабы отличить пользователя от администратора !
И потом 1 или 0 по мне так слишком просто, а просто не всегда хорошо =)
 

lll

Member
Регистрация
21.04.2010
Сообщения
14
У меня тут не п0лучается. у меня есть бд

CREATE TABLE users(
id INT NOT NULL AUTO_INCREMENT,
login VARCHAR(15),
pass TEXT,
text TEXT,
PRIMARY KEY(id)
);
у меня выводится в строку строчка .../?id=1 (1 - страница п0 счету)


<?
require 'connect.php';
$result = mysql_query("SELECT * FROM users WHERE id = '".$_GET['id']."';", $link);
$row = mysql_fetch_array($result);
$resultMenu = mysql_query("SELECT * FROM users ORDER BY id;", $link);
?>
<html>
<head>
<title><?=$row['login'];?></title>
</head>
<body>
<?=stripslashes($row['text']);?>
</body>
</html>
а мне над0 чт0бы было .../login (login - л0гин п0льз0вателя(sasha, masha))
я пр0бывал у меня выв0диться login, н0 т0гда данные не выв0дядся (text)
какую команду надо использовать когда данные из бд берутся?
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
Во-первых:
"SELECT * FROM users WHERE id = '".$_GET['id'].
называется "Здравствуй, SQL-инъекция". Не делайте так НИКОГДА, даже в набросках!!!
Для поля типа INT нужно так:
Код:
"SELECT * FROM users WHERE id = ".intval ($_GET['id'])." LIMIT 1"
Заметьте, что значение без кавычек, т.к. поле числовое!
Во-вторых, удобно и правильно отделить котлеты от мух - то есть получение данных от их вывода:
Полычаем данные:
Код:
<? 
require 'connect.php';
// получаем логин и текст нужного пользователя (если id не указан, то id = 1)
$user_id = isset ($_GET['id'])? intval ($_GET['id']): 1;
$result = mysql_query ("SELECT login, text FROM users WHERE id=".$user_id." LIMIT 1")
	or die (mysql_error ());
$row = mysql_fetch_array ($result);
$user_login = $row['login'];
$user_text = $row['text']; 
// получаем список id и логинов всех пользователей
$result = mysql_query ("SELECT id, login FROM users ORDER BY id")
	or die (mysql_error ());
while ($row = mysql_fetch_array ($result))
	$logins[$row['id']] = $row['login'];
?>
Выводим данные:
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Персональная страница <?php echo $user_login ?></title>
</head>

<body>
<h1>Персональная страница <?php echo $user_login ?></h1>
<p><?php echo $user_text ?></p>
<h3>Список пользователей</h3>
<?php
// выводим список пользователей как ссылки на их персональные странички
foreach ($logins as $id => $login)
    echo '<a href="index.php?id='.$id.'">'.$login."</a><br>\n";
?>
</body>
</html>
Все это одно за другим в одном файле index.php.

В итоге все довольны и подбрасывают вверх шапки.
Удачи!

ЗЫ. А что у Вас с клавишей "о"? :blink:
 

lll

Member
Регистрация
21.04.2010
Сообщения
14
спс, ща делать буду)
не п0 теме*
Так п0лучил0сь чт0 к0гда с жен0й ругались немн0жк0 на клавиатуру гиря маленькая упала, у клавишу "о" разд0вила, теперь чт0бы нажать на "о" прих0дится брать ручку и тыкать ручк0й, а п0ск0льку эт0 д0лг0 и ин0гда неп0лучается я решил заменить её на 0.
 

Вложения

lll

Member
Регистрация
21.04.2010
Сообщения
14
Нет, нет tigra60, Вы не п0нели немн0жк0, данные все выв0дит, все класнн0, н0 мне нужн0 чт0бы 0т0бражал0сь не test1.ru/index.php?id=1 ,а над0 test1.ru/login (login из бд например d бд id = 1 login masha,д0лжн0 вывести за мест0 test1.ru/index.php?id=1 будет test1.ru/masha) p.s. а id наверн0е с0всем не 0чень и нужент0.
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
д0лжн0 вывести за мест0 test1.ru/index.php?id=1 будет test1.ru/masha
Ну, дык, в чём проблема то?
Код:
// выводим список пользователей как ссылки на их персональные странички
foreach ($logins as $id => $login)
    echo '<a href="http://test1.ru/'.$login.'">Персональная страница '.$login."</a><br>\n";
а id наверн0е с0всем не 0чень и нужент0
Вы хоть пример то запускали? При первом запуске получаем персональную страницу пользователя, у которого id=1. А потом ссылки на персональные страницы остальных пользователей. Щелкнул на ссылочке "Маша" - и попадаешь на персональную страницу Маши. И все это в одном файле.
Ну а если у Вас для каждого юзера отдельная папка, то тогда, конечно...
Удачи!
 

Serg@NT

Well-Known Member
Регистрация
20.02.2010
Сообщения
506
Ну а если у Вас для каждого юзера отдельная папка, то тогда, конечно...
Да зачем? Это можно сделать либо через .htaccess (тут в соседней теме есть правило), только надо будет дописывать туда правило каждый раз, когда пользователь добавляется. Либо, как вариант, прописать перенаправление для ошибки 404 на страничку, где будет анализироваться URL, то есть, выделяться часть URL после / и потом запрос к базе типа:
Код:
"SELECT * FROM users WHERE login = '$login' LIMIT 1"
Где $login - это часть URL после /
 

lll

Member
Регистрация
21.04.2010
Сообщения
14
Нет у меня вместе все, как не пр0бывал все р0вн0 не п0лучается
<?
require 'connect.php';
// получаем логин и текст нужного пользователя (если id не указан, то id = 1)
$user_id = isset ($_GET['id'])? intval ($_GET['id']): 1;
//$result = mysql_query ("SELECT * FROM users WHERE login = '$login' LIMIT 1")
$result = mysql_query ("SELECT login, text FROM users WHERE id=".$user_id." LIMIT 1")
or die (mysql_error ());
$row = mysql_fetch_array ($result);
$user_login = $row['login'];
$user_text = $row['text'];
// получаем список id и логинов всех пользователей
$result = mysql_query ("SELECT id, login FROM users ORDER BY id")
or die (mysql_error ());
while ($row = mysql_fetch_array ($result))
$logins[$row['id']] = $row['login'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Персональная страница <?php echo $user_login ?></title>
</head>

<body>
<h1>Персональная страница <?php echo $user_login ?></h1>
<p><?php echo $user_text ?></p>
<h3>Список пользователей</h3>
<?php
// выводим список пользователей как ссылки на их персональные странички
foreach ($logins as $id => $login)
echo '<a href="http://test1.ru/'.$login.'">Персональная страница '.$login."</a><br>\n";
?>
</body>
</html>


когда я нажимаю на masha в скроке вы вдится http://test1.ru/masha и происхдит ошибка
 

Вложения

Serg@NT

Well-Known Member
Регистрация
20.02.2010
Сообщения
506
когда я нажимаю на masha в скроке вы вдится http://test1.ru/masha и происхдит ошибка
Ну, я ж написал, что надо прописать перенаправление для ошибки 404 в Апаче или в .htaccess. Дело в том, что сейчас у вас сервер ищет физическую папку masha в корне сайта. И, естественно, не находит.
Как вариант, вот отсюда создайте в корне сайта файл .htaccess и пропишите там что-то типа
Код:
RewriteRule ^/masha$ /index.php?id=1 [L]
И так для каждого пользователя.
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
Посыпаю голову пеплом. URI должен был получиться таким:
Код:
http://test1.ru/masha/
Со слешем в конце!
Код:
echo '<a href="http://test1.ru/'.$login.'/">Персональная страница '.$login."</a><br>\n";
Но это, опять таки, предполагает наличие папки z:home/test1.ru/www/masha, в которой имеется файл index.php (или html)

Я так понял, Вам нужно, чтобы в результате авторизации пользователь попадал на свою страничку?
Таки сделайте эту страничку динамической - общей для всех.
Схема такова:
1. Обработчик формы авторизации в случае, если авторизация успешна, перенаправляет на страницу, ну, скажем, pelsonal.php, указывая параметром id юзера:
Код:
header ('location:personal.php?id='.$user_id);
Почему id, а не login? Дело в том, что числовой параметр много проще защитить от SQL-инъекции, чем строку - достаточно:
Код:
$id = intval ($_GET['id']);
2. В файле personal.php по параметру получаем все нужные данные о пользователе и выдаем их, так сказать, "на гора"! Список ссылок на другие странички теперь, естественно не нужен!
Не забудьте сделать выход для пользователя, например, ссылочку "на главную".

Это, конечно простейший случай и он ни хрена не помнит, что за пользователь авторизовался. Стоит пользователю из своей личной страничке куда-нибудь перейти, обратно в свою страничку он сможет попасть только через повторную авторизацию. Обычно, в таких случаях используют механизм сессии. Но это уже совсем другая история.

Удачи!
 

freeuser

Well-Known Member
Регистрация
11.01.2010
Сообщения
109
Немного запоздал с темой :biggrin:
Если вы учили БД как могли дать вам выполнение такой работы ?
Если вы совсем в этом не шарите ?
У нас тоже на факультете Программирования учат только языкам Delphi, C++ а вот из web программирования дают только html!
Хотя из списка дипломных работ есть ... веб программирование с серьезными задачами на php.

поэтому я тоже сам учил это ... мне нравится
 
Статус
Закрыто для дальнейших ответов.
Верх Низ