[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите разобратся с выводом из базы
Guest
Пишу сайт с нуля. создал регистрацию, статьи, и новости на сайте и комменты к новостям и и статьям. после того как человек вводит логин и пароль и щёлкает например статьи там отображается только шаблон. отсутствуют вывод из базы самой статьи и комментариев. стоит только зайти на сайт как гость и сразу видна статьи и комментарии из базы.

Даю ссылки на 2 скриншота :

http://i077.radikal.ru/0911/4f/ffb192b33968.jpg
http://s48.radikal.ru/i121/0911/48/f3f66c25411f.jpg

Помогите разобратся в чём может быть проблема



Спустя 15 минут, 8 секунд (17.11.2009 - 23:26) krasilich написал(а):
без кода никак...

Спустя 4 минуты, 28 секунд (17.11.2009 - 23:31) Guest написал(а):
если кто сталкивался с такой проблемой подскажите хотя бы где смотреть код

Спустя 18 минут, 9 секунд (17.11.2009 - 23:49) Gabriel написал(а):
Guest
все что можно сказать это то что нужно смотреть в коде где идет обработка сценария для афторизированного пользователя

Спустя 15 минут, 9 секунд (18.11.2009 - 00:04) Pinoplast написал(а):
А ссылочку на сайт не даш?

Спустя 1 час, 33 минуты, 56 секунд (18.11.2009 - 01:38) krasilich написал(а):
Цитата (Guest @ 17.11.2009 - 22:31)
если кто сталкивался с такой проблемой подскажите хотя бы где смотреть код

Хм, говоришь, что написал сайт с нуля и не знаешь где смотреть код?

Спустя 6 часов, 52 минуты, 25 секунд (18.11.2009 - 08:30) Guest написал(а):
Ссылочку не дам он на локалке


Где смотреть код я имел ввиду не в каких файлах а в каком месте

Спустя 34 минуты, 48 секунд (18.11.2009 - 09:05) stepan написал(а):
Могу предположить, что у тебя просто не идет проверка на то - был ли пользователь авторизован и стоит ему показывать эту статью.
Это стандартная ошибка начинающего, предполагая что юзер не станет перепрыгивать с файла на другой файл в ручную.
Но более подробный диагноз можно вывести только после вскрытия, так что ведите больного.

Спустя 1 час, 2 минуты, 6 секунд (18.11.2009 - 10:07) major28 написал(а):
Ученик Евгения Попова)))

Спустя 8 часов, 54 минуты, 15 секунд (18.11.2009 - 19:02) denis39 написал(а):
Ссылка на форму входа



<?php
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result = mysql_query("SELECT id,avatar FROM users WHERE login='$login' AND password='$password'",$db);
$myrow = mysql_fetch_array($result);
}

if (!isset($myrow['avatar']) or $myrow['avatar']=='') {
print <<<HERE
<form action="testreg.php" method="post">
<label>Ваш логин:<br></label>
<input class="wid" name="login" type="text" size="15" maxlength="15"

HERE;


if (isset($_COOKIE['login']))
{
echo ' value="'.$_COOKIE['login'].'">';
}


print <<<HERE
</p>
<p>
<label>Ваш пароль:<br></label>
<input class="wid" name="password" type="password" size="15" maxlength="15"

HERE;


if (isset($_COOKIE['password']))
{
echo ' value="'.$_COOKIE['password'].'">';
}

print <<<HERE
</p>
<p>
<input class="margin" name="save" type="checkbox" value='1'> Запомнить меня
</p>
<br>
<p>
<input class="vhod" type="submit" name="submit" value="">
<div aling="center"><a href="reg.php"><p class="reg">Регистрация</p></a></div>
</p></form>

HERE;
}

else
{
print <<<HERE
<div aling="center"><p>Здравствуйте, <b>$_SESSION[login]</b></p></div>
<img class='img' alt='
$_SESSION[login]' src='$myrow[avatar]'><br><br><br><br>
<a class="vyhod" href="exit.php"></a>

HERE;
}
?>

Спустя 3 минуты (18.11.2009 - 19:05) denis39 написал(а):
Ссылка на обработчик


<?php
session_start();
if (isset($_POST['save'])){
setcookie("login", $_POST["login"], time()+9999999);
setcookie("password", $_POST["password"], time()+9999999);}


if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }

if (empty($login) or empty($password))
{
echo '<p>Вы ввели не всю информацию, вернитесь назад и заполните все поля!</p>';
}
else {
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
$login = trim($login);
$password = trim($password);


$ip=getenv("HTTP_X_FORWARDED_FOR");
if (empty($ip) || $ip=='unknown') { $ip=getenv("REMOTE_ADDR"); }

mysql_query ("DELETE FROM oshibka WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(date) > 900");

$result = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db);
$myrow = mysql_fetch_array($result);

if ($myrow['col'] > 2) {
echo '<p>Вы набрали логин или пароль неверно 3 раза. Подождите 15 минут до следующей попытки.</p>';
}
else {

$password = md5($password);
$password = strrev($password);
$password = $password."b3p6f";

$result = mysql_query("SELECT * FROM users WHERE login='$login' AND password='$password'",$db);
$myrow = mysql_fetch_array($result);
if (empty($myrow['id']))
{

$select = mysql_query ("SELECT ip FROM oshibka WHERE ip='$ip'");
$tmp = mysql_fetch_row ($select);
if ($ip == $tmp[0]) {

$result52 = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db);
$myrow52 = mysql_fetch_array($result52);

$col = $myrow52[0] + 1;
mysql_query ("UPDATE oshibka SET col=$col,date=NOW() WHERE ip='$ip'");
echo "<p>Извините, введённый вами логин или пароль неверный.</p>";
}

else {

mysql_query ("INSERT INTO oshibka (ip,date,col) VALUES ('$ip',NOW(),'1')");
}


}

else {


$_SESSION['password']=$myrow['password'];
$_SESSION['login']=$myrow['login'];
$_SESSION['id']=$myrow['id'];

}

echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";
}
}

?>

Спустя 19 секунд (18.11.2009 - 19:05) stepan написал(а):
Пожалуйста от форматируй код с помощью кнопки php
Цитата (denis39 @ 18.11.2009 - 16:02)
login='$login' AND password='$password'

Начиная с начало это дырка.

Спустя 47 секунд (18.11.2009 - 19:06) denis39 написал(а):
ссылку на страницу где выводятся статьи и комменты выкладывать?

Спустя 1 минута, 23 секунды (18.11.2009 - 19:07) stepan написал(а):
да. Только оформляй код.

Спустя 1 минута, 23 секунды (18.11.2009 - 19:08) denis39 написал(а):
SELECT id,avatar FROM users WHERE login='$login' AND password='$password'


а где тут дырка?

Спустя 3 минуты, 1 секунда (18.11.2009 - 19:11) denis39 написал(а):

<?php
session_start();
include("blocks/bd.php");

$result = mysql_query("SELECT title,date,author,text,view FROM articles WHERE id='$id'",$db);
$myrow = mysql_fetch_array($result);

printf("
<table align='center' class='post1'>
<tr>
<td class='post_title'> <p class='post_title2'>%s</p>
<p class='post_adds'>Дата: %s</p><p class='post_adds'>Автор: %s</p></td>
</tr>
<tr>
<td>%s</td>
</tr>
<tr>
<td class='post_title'><p class='post_view'>Количество просмотров: %s</p></td>
</tr>
</table>"
,$myrow['title'],$myrow['date'],$myrow['author'],$myrow['text'],$myrow['view']);


$new_view = $myrow["view"] +1;
$updata = mysql_query("UPDATE articles SET view='$new_view' WHERE id='$id'",$db);


echo "<p>Комментарии:</p>";
$result3 = mysql_query ("SELECT * FROM comments WHERE post='$id'",$db);
if (mysql_num_rows($result3) > 0)
{
$myrow3 = mysql_fetch_array($result3);

do
{
printf ("<div class='post_div'><p class='post_comment_add'>Комментарий добавил(а): <strong>%s</strong> <br> Дата: <strong>%s</strong></p>
<p>%s</p></div>"
,$myrow3["author"], $myrow3["date"], $myrow3["text"]);

}
while ($myrow3 = mysql_fetch_array($result3));


}

<p class='post_comment'>Добавить Ваш комментарий:</p>
<
form action="comment.php" method="post" name="form_com">
<
p><label>Ваше имя: </label><input name="author" type="text" size="30" maxlength="30"></p>
<
p><label>Текст комментария: <br> <textarea name="text" cols="32" rows="4"></textarea></label></p><p>Введите сумму чисел с картинки:
<
br><br>
<
img src="code/my_codegen.php"><br><br>
<
input style='margin-bottom:16px;' name="code" type="text" size="6" maxlength="6"></p>
<
input name="id" type="hidden" value="<? echo $id; ?>">
<
p><input name="sub_com" type="submit" value="Комментировать"></p>
</
form>
?>

Спустя 4 минуты, 6 секунд (18.11.2009 - 19:15) Gabriel написал(а):
denis39
а вот поставлю я там апостроф и лишу тебя БД, для того чтобы этого никто не сделал пиши так ( если сравниваеш хеши паролей то ескейп не обязателен )
mysql_query("SELECT id,avatar FROM users WHERE login='". mysql_real_escape_string( $login ) ."' AND password='". mysql_real_escape_string( $password ) ."'");

Спустя 34 секунды (18.11.2009 - 19:16) stepan написал(а):
Цитата (denis39 @ 18.11.2009 - 16:08)
а где тут дырка?

Допустим у меня будет логин вида
' OR ''='' #

что тогда у тебя получается
SELECT id,avatar FROM users WHERE login='' OR ''='' #' AND password='$password'

это простейшее а в дальнейшем можно и развить и запихать туда DELETE FROM

Спустя 1 минута, 39 секунд (18.11.2009 - 19:18) denis39 написал(а):
Исправляю ошибку

т.е вот так правильно будет?
mysql_query("SELECT id,avatar FROM users WHERE login='". mysql_real_escape_string( $login ) ."' AND password='". mysql_real_escape_string( $password ) ."'");

Спустя 9 минут, 49 секунд (18.11.2009 - 19:28) stepan написал(а):
да

Спустя 50 секунд (18.11.2009 - 19:28) denis39 написал(а):
что показало вскрытие насчёт основного вопроса?

Спустя 2 минуты, 15 секунд (18.11.2009 - 19:31) stepan написал(а):
если ни кто не поможет то я из дома гляну, либо завтра а то сегодня уже думаю хватит мне работать.

Спустя 2 часа, 35 минут, 38 секунд (18.11.2009 - 22:06) denis39 написал(а):
Ухаха!! laugh.gif

Нашёл ошибку:

в файле виев_артиклес переменная id не существовала, а запрос был таков

mysql_query("SELECT title,date,author,text,view FROM articles WHERE id='$id'");



не хватало куска кода
$id = $_GET['id'];


Всем спасибо кто пытался помочь! biggrin.gif

Спустя 21 минута, 41 секунда (18.11.2009 - 22:28) Gabriel написал(а):
denis39
ну да там еще интвала нехватает smile.gif вот почитай

Спустя 7 минут, 48 секунд (18.11.2009 - 22:36) denis39 написал(а):
blink.gif полезный материал
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.