Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Из акаунта в просмотр
 
 автор: pava77   (09.06.2010 в 09:12)   письмо автору
 
 

Вот у меня есть страничка, где я могу войти через логин и пароль и просмотреть мои данные как пользователя. А я хочу сделать чтоб можно было просматривать эту страницу другими пользователями. Как вывести ссылку на такую страницу, а как поменять код?
Ниже страница моего акаунта




// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
session_start();

include ("blocks/bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
if (isset($_GET['id'])) {$id =$_GET['id']; } //id "хозяина" странички
else
{ exit("Вы зашил на страницу без параметра!");} //если не указали id, то выдаем ошибку
if (!preg_match("|^[\d]+$|", $id)) {
exit("<p>Неверный формат запроса! Проверьте URL</p>");//если id не число, то выдаем ошибку
}

if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существует логин и пароль в сессиях, то проверяем, действительны ли они
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
$myrow2 = mysql_fetch_array($result2);
if (empty($myrow2['id']))
{
//Если не действительны (может мы удалили этого пользователя из базы за плохое поведение)
exit("Вход на эту страницу разрешен только зарегистрированным пользователям!");
}
}
else {
//Проверяем, зарегистрирован ли вошедший
exit("Вход на эту страницу разрешен только зарегистрированным пользователям!"); }
$result = mysql_query("SELECT * FROM users WHERE id='$id'",$db);
$myrow = mysql_fetch_array($result);//Извлекаем все данные пользователя с данным id

if (empty($myrow['login'])) { exit("Пользователя не существует! Возможно он был удален.");} //если такого не существует

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Мой акаунт | Собаки и все для любителей собак</title>
<link href="style.css" rel="stylesheet" type="text/css">

</head>

<body>
<table width="100%" border="1" cellpadding="0" cellspacing="0" align="center" bgcolor="#FFFFFF" class="main_border">
<? include("blocks/header.php"); ?>
<tr>
<td valign="top">
<? include("blocks/nav.php"); ?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<? include("blocks/lefttd.php"); ?>
<td valign="top">


<h2>Мой акаунт</h2>
<table align='center' class='kab' cellspacing="0" cellpadding="0">
<tr>
<td align="center">
<div class='pad'>
<a class="nav_title3" href='my_acount.php?id=<?php echo $_SESSION[id]; ?>'>Мой акаунт</a>
<a class="nav_title3" href="my_dog.php">Мои собаки</a>
<a class="nav_title3" href="my_obyavlenie.php">Мои объявления</a>

<?
print <<<HERE

<a class='nav_title3' href='page.php?id=$myrow2[id]'>Личные настройки</a>
<a class='nav_title3' href='all_users.php'>Пользоветели</a>

<a class='nav_title3' href='exit.php'>Выход</a></div><br>
HERE;

$result = mysql_query("SELECT * FROM users WHERE id='$id'",$db);
$myrow = mysql_fetch_array($result);


if ($myrow['login'] == $login) {
do
{

printf ("<table><tr><td class='dsa'>
<div class='acount' align='left'>
<strong>$myrow[login]</strong>

<br>
<img class='imav' alt='аватар' src='$myrow[avatar]'></td>
<td class='dsa'><br>
<div>%s</div>
<div>%s</div><br>
<div>%s</div>
<div>%s</div></td></tr></table><br>
<table>
<tr><td>


<div align='center'>%s</div>
<div align='center'>%s</div>
<div align='center'>%s</div>
</td></tr></table>

",$myrow['fio'],$myrow['city'],$myrow['sait'],$myrow['tel'],$myrow['osebe'],$myrow['rodz'],$myrow['info']);
}
while ($myrow = mysql_fetch_array($result));


?>
</div>

<br>


</td>
</tr>
</table>
<? include("blocks/reklama.php"); ?> </td>
</tr>
</table></td>
</tr>
<? include("blocks/footer.php"); ?>
</table>
</body>
</html>

  Ответить  
 
 автор: Valick   (09.06.2010 в 09:19)   письмо автору
 
   для: pava77   (09.06.2010 в 09:12)
 

И снова здавствуйте... Евгений Попов
Вводите логин+пароль? хотите чтоб могли смотреть все кому не лень? это противоречит естеству...
if (!preg_match("|^[\d]+$|", $id)) {
exit("<p>Неверный формат запроса! Проверьте URL</p>");//если id не число, то выдаем ошибку

однако...
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
жуть...
про do while отдельный разговор...

  Ответить  
 
 автор: pava77   (09.06.2010 в 09:24)   письмо автору
 
   для: Valick   (09.06.2010 в 09:19)
 

Ну как лучше сделать? Какие ошибки можно исправить? Помогите пожалуйста!

  Ответить  
 
 автор: Valick   (09.06.2010 в 09:31)   письмо автору
 
   для: pava77   (09.06.2010 в 09:24)
 

Ну как лучше сделать?
Лучше всего на время забыть о практике и заняться теорией.
Реально хочу что-то Вам посоветовать, но поверьте это очень сложно.
1) Хранить пароль вообще не нужно ни где, а уж хранить его в сессии...
2) для проверки числа есть специальная функция, но и она тут не особо нужна, достаточно intval()
3) слишком много exit()
4) вместо цикла do while() при выводе из базы нужно применять цикл while()
do while() применяется там где условие выполнения цикла зарание не известно

  Ответить  
 
 автор: pava77   (09.06.2010 в 09:51)   письмо автору
 
   для: Valick   (09.06.2010 в 09:31)
 

Попробую что то исправить, но я новичок по практике все и делаю. Я имел введу что есть список пользователей и ты выбираеш любого и просматриваеш его информацию.
Если не сложно, исправте в коде что нибудь я по принципу переделаю другие страници. Заранее спасибо

  Ответить  
 
 автор: Valick   (09.06.2010 в 10:53)   письмо автору
 
   для: pava77   (09.06.2010 в 09:51)
 

вот так страничку смогут посмотреть все
<?php
include_once("blocks/bd.php");
if(isset(
$_GET['id'])) $id =intval($_GET['id']);
if(!empty(
$id) && $id >= 0){
$query "SELECT * FROM users WHERE id=$id"
$res mysql_query($query,$db);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Мой акаунт | Собаки и все для любителей собак</title>
<link href="style.css" rel="stylesheet" type="text/css">

</head>

<body>
<table width="100%" border="1" cellpadding="0" cellspacing="0" align="center" bgcolor="#FFFFFF" class="main_border">
<?php include("blocks/header.php"); ?>
<tr>
<td valign="top">
<?php include("blocks/nav.php"); ?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<?php include("blocks/lefttd.php"); ?>
<td valign="top">


<h2>Мой акаунт</h2>
<table align='center' class='kab' cellspacing="0" cellpadding="0">
<tr> 
<td align="center"> 
<div class='pad'>
<a class="nav_title3" href="my_acount.php?id=$id">Мой акаунт</a>
<a class="nav_title3" href="my_dog.php">Мои собаки</a>
<a class="nav_title3" href="my_obyavlenie.php">Мои объявления</a>

<a class='nav_title3' href="page.php?id=$id">Личные настройки</a>
<a class='nav_title3' href="all_users.php">Пользоветели</a>
<a class='nav_title3' href="exit.php">Выход</a></div><br>
<?php
while ($myrow mysql_fetch_array($result));
printf ("<table><tr><td class='dsa'>
<div class='acount' align='left'>
<strong>
$myrow[login]</strong>
<br>
<img class='imav' alt='аватар' src='
$myrow[avatar]'></td>
<td class='dsa'><br>
<div>%s</div>
<div>%s</div><br>
<div>%s</div>
<div>%s</div></td></tr></table><br>
<table>
<tr><td>


<div align='center'>%s</div>
<div align='center'>%s</div>
<div align='center'>%s</div>
</td></tr></table>

"
,$myrow['fio'],$myrow['city'],$myrow['sait'],$myrow['tel'],$myrow['osebe'],$myrow['rodz'],$myrow['info']);
}
?>
</div>
<br>
</td>
</tr>
</table>
<?php include("blocks/reklama.php"); ?> </td>
</tr>
</table></td>
</tr>
<?php include("blocks/footer.php"); ?>
</table>
</body>
</html>
<?php
}else{
// Переход на главную станицу сайта
}
?>

но проблема в другом
у Вас контетнт из базы и фиксированный HTML контент пересекаются, Вы хотите верстать страничку для каждого пользователя? Весь контент должен находиться в базе включая <meta>,<title> и даже CSS (ссылку на файл или даже код целиком), HTML должен быть только шаблон разметки контента на станице. Или у Вас у всех пользователей будут исключительно собаки? :)

  Ответить  
 
 автор: pava77   (09.06.2010 в 11:15)   письмо автору
 
   для: Valick   (09.06.2010 в 10:53)
 

Большое спасибо за выложенную информацию!
У пользователей будет своя страничка с данными(логин, пароль, имя, о себе, и т.д.). И также будет Мои собаки Мои объявления Мои настройки, как было видно в исходнике. У пользователя будет и собаки о объявления, и хотелось бы у друзья сделать, но пока это для меня не реально.
Я вот только не понял нащет:
у Вас контетнт из базы и фиксированный HTML контент пересекаются, Вы хотите верстать страничку для каждого пользователя? Весь контент должен находиться в базе включая <meta>,<title> и даже CSS (ссылку на файл или даже код целиком), HTML должен быть только шаблон разметки контента на станице.

  Ответить  
 
 автор: pava77   (09.06.2010 в 11:52)   письмо автору
 
   для: Valick   (09.06.2010 в 10:53)
 

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

  Ответить  
 
 автор: pava77   (09.06.2010 в 12:24)   письмо автору
 
   для: Valick   (09.06.2010 в 10:53)
 

И также не пойму в самом низу переход на главную страницу. Что там нужно прописать? Наверное изза этого и не открывается страница

  Ответить  
 
 автор: Valick   (09.06.2010 в 13:04)   письмо автору
 
   для: pava77   (09.06.2010 в 12:24)
 

исправь
while ($myrow = mysql_fetch_array($result));

на
while ($myrow = mysql_fetch_array($result)){


переход на главную страницу только если корректный id отсутствует

  Ответить  
 
 автор: pava77   (09.06.2010 в 13:15)   письмо автору
 
   для: Valick   (09.06.2010 в 13:04)
 

а почему while ($myrow = mysql_fetch_array($result)){
а не так:
while ($res = mysql_fetch_array($query)){

  Ответить  
 
 автор: Valick   (09.06.2010 в 13:18)   письмо автору
 
   для: pava77   (09.06.2010 в 13:15)
 

потому что MySQL нужно учить :)

да и while ($myrow = mysql_fetch_array($res)){ -поправь

res - это идентификатор(ссылка на результат), а не сам результат

  Ответить  
 
 автор: pava77   (09.06.2010 в 14:07)   письмо автору
 
   для: Valick   (09.06.2010 в 13:18)
 

Вот так у меня получилось, но всеравно пишет ошибку на линии в конце документа

<?php
include_once("blocks/bd.php");
if(isset($_GET['id'])) $id =intval($_GET['id']);
if(!empty($id) && $id >= 0){
$query = "SELECT * FROM users WHERE id=$id";
$res = mysql_query($query,$db);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Мой акаунт | Собаки и все для любителей собак</title>
<link href="style.css" rel="stylesheet" type="text/css">

</head>

<body>
<table width="100%" border="1" cellpadding="0" cellspacing="0" align="center" bgcolor="#FFFFFF" class="main_border">
<? include("blocks/header.php"); ?>
<tr>
<td valign="top">
<? include("blocks/nav.php"); ?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<? include("blocks/lefttd.php"); ?>
<td valign="top">


<h2>Мой акаунт</h2><table align='center' class='kab' cellspacing="0" cellpadding="0">
<tr>
<td align="center">
<div class='pad'>

<?php
while ($myrow = mysql_fetch_array($res)){

printf ("<table><tr><td class='dsa'>
<div class='acount' align='left'>
<strong>$myrow[login]</strong>
<br>
<img class='imav' alt='аватар' src='$myrow[avatar]'></td>
<td class='dsa'><br>
<div>%s</div>
<div>%s</div><br>
<div>%s</div>
<div>%s</div></td></tr></table><br>
<table>
<tr><td>


<div align='center'>%s</div>
<div align='center'>%s</div>
<div align='center'>%s</div>
</td></tr></table>

",$myrow['fio'],$myrow['city'],$myrow['sait'],$myrow['tel'],$myrow['osebe'],$myrow['rodz'],$myrow['info']);

?>
</div>
<br>
</td>
</tr>
</table>
<? include("blocks/reklama.php"); ?> </td>
</tr>
</table></td>
</tr>
<? include("blocks/footer.php"); ?>
</table>
</body>
</html>
<?php
}else{
// Переход на главную станицу сайта
}
?>

  Ответить  
 
 автор: Valick   (09.06.2010 в 14:46)   письмо автору
 
   для: pava77   (09.06.2010 в 14:07)
 

после
",$myrow['fio'],$myrow['city'],$myrow['sait'],$myrow['tel'],$myrow['osebe'],$myrow['rodz'],$myrow['info']);

забыл скобку }

  Ответить  
 
 автор: pava77   (09.06.2010 в 14:56)   письмо автору
 
   для: Valick   (09.06.2010 в 14:46)
 

Теперь выполняется функция else переход на главную страницу. как сделать ссылку на эту страничку, и чтоб id было корректным, и открывало страницу того пользователя по которому нажал???

  Ответить  
 
 автор: Valick   (09.06.2010 в 15:08)   письмо автору
 
   для: pava77   (09.06.2010 в 14:56)
 

а как вы формируете ссылки пользователей по которым нажимаете и как они выглядят?

  Ответить  
 
 автор: pava77   (09.06.2010 в 15:35)   письмо автору
 
   для: Valick   (09.06.2010 в 15:08)
 

Ну вот у меня выводит объявление о продаже собаки, и внизу выводит Автор объявления, и пользователь может кликнуть по нему и просмотреть инфо об авторе

<div class='hj22'> Автор: <a href='about_user.php?....'>%s </a>

-----------------------------------

printf ("

<table class='postr' cellspacing='0' cellpadding='0'>
<tr>
<td class='nav_title2'>
<div><img class='ah28' align='left' src='img/includ/soba.png'> <a class='na_tit' href='v_rodoslovnaya.php?id=%s'>%s</a></div>
</td>
</tr>
<tr>
<td>
<div class='post_name'>
<a href='v_rodoslovnaya.php?id=%s'>
<img class='mini2' align='right' src='%s' alt='%s'></a></div>
<div class='post_adds'><strong>Порода:</strong> %s</div>
<div class='post_adds'><strong>Пол:</strong> %s</div>
<div class='post_adds'><strong>Дата рождения:</strong> %s</div>
<div class='post_adds'><strong>Хозяин:</strong> %s</div>
<div class='post_adds'><strong>Город:</strong> %s</div>
<div class='post_adds'><strong>Зарегестрирован:</strong> %s</div><br>
<hr align='left' class='line'>

<div class='hj22'>Рейтинг собаки: $sum33[0] <img src='img/r/%s.gif'></div>
<div class='hj22'> Просмотров: %s </div>

<div class='hj22'> Автор: <a href='about_user.php?....'>%s </a>

</div><br></td>
</tr>

</table><br>",$myrow34["id"], $myrow34["title"],$myrow34["id"],$myrow34["fupload"],$myrow34["title"],$myrow34["poroda"],$myrow34["pol"],$myrow34["dates"],
$myrow34["hozain"],$myrow34["city"],$myrow34["dater"],$r,$myrow34["view"],$myrow34["author"]);
}
while ($myrow34 = mysql_fetch_array($result34));
?>

  Ответить  
 
 автор: Valick   (09.06.2010 в 17:17)   письмо автору
 
   для: pava77   (09.06.2010 в 15:35)
 

<div class='hj22'> Автор: <a href='about_user.php?....'>%s </a>

и что там за троеточие?
по идее должно быть
'about_user.php?id=%s'

где - %s есть идентификатор юзера из базы $myrow34[id]

  Ответить  
 
 автор: pava77   (09.06.2010 в 17:25)   письмо автору
 
   для: Valick   (09.06.2010 в 17:17)
 

у меня сдесь идет id объявления в базе а не юзера. В том то и дело как сделать что б ссылка делалась на автора объявления? Надо еще один запрос?

$result34 = mysql_query ("SELECT * FROM sobaka WHERE secret=1 ORDER BY id DESC LIMIT $start, $num",$db);

это запрос на вывод объявлений из базы, в базе есть поле author, может с ним чтонить можно придумать?

  Ответить  
 
 автор: Valick   (09.06.2010 в 17:48)   письмо автору
 
   для: pava77   (09.06.2010 в 17:25)
 

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

  Ответить  
 
 автор: pava77   (09.06.2010 в 17:58)   письмо автору
 
   для: Valick   (09.06.2010 в 17:48)
 

ок, я займусь только хотелось бы закончить эту тему.
author это логин пользователя, тоесть мне нужно сделать так что б кроме логина еще и id юзера заносилось, вот тогда и получится?

  Ответить  
 
 автор: Valick   (09.06.2010 в 19:23)   письмо автору
 
   для: pava77   (09.06.2010 в 17:58)
 

Я не зря говорю о теории, основная задача грамотно спроектировать БД, потом будет легко и просто работать. Вам нужно ознакомиться с нормализацией таблиц и БД в целом. Данные в БД при "хорошем раскладе" не должны дублироваться (не считая первичных ключей). А уж login, id и например другую служебную информацию и вовсе можно(нужно) хранить в сессионных переменных.

  Ответить  
 
 автор: pava77   (09.06.2010 в 19:31)   письмо автору
 
   для: Valick   (09.06.2010 в 19:23)
 

А как хранить в сесионных переменных?
И если можно порекомендуйте хороший доступный учебник.

  Ответить  
 
 автор: Valick   (09.06.2010 в 19:40)   письмо автору
 
   для: pava77   (09.06.2010 в 19:31)
 

Авторы данного форума написали кучу книг :)
а начать лучше с этого ну и наверно + вот это (хотя эту книгу я сам не читал)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования