Неполадка с запрещенной ссылкой (скрипт регистрации)

Ответить
Crank174RuS
Сообщения: 66
Зарегистрирован: 19.09.2010
Здравствуйте!
Вот я решил сделать для своего мониторинга регистрацию пользователей.
Там есть запрещенные ссылки по которым гость сайта не должен зайти.

Вот как выглядит зарегистрированный пользователь:
_ttp://www.imagepost.ru/?v=578/08.02.png
Его ссылка выглядит так: _ttp://site/3-us_page.html

Вот как незарегистрированный:
Прохажу по той же ссылке ( _ttp://site/3-us_page.html )
_ttp://www.imagepost.ru/?v=578/kMnwh0v.png

Как сделать чтобы незарегистрированный пользователь видел только :
"Вход на эту страницу разрешен только зарегистрированным пользователям!"

Вот код:

Код: Выделить всё

session_start();

include ("bd.php");
//файл bd.php должен быть в той же папке, что и все остальные, 
//если это не так, то просто измените путь 
if (isset($_GET['user'])) {$id =$_GET['user']; } //id "хозяина" странички
else
{ $main.=("<div class='block' style='width: 960px;'>
<div class='bodyBlock'>Вы зашили на страницу без параметра!</div></div>");} //если не указали id, то выдаем ошибку
if (!preg_match("|^[\d]+$|", $id)) {
$main.=("<div class='block' style='width: 960px;'><div class='bodyBlock'>
<p>Неверный формат запроса! Проверьте URL</p></div></div>");//если 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'",$db); 
$myrow2 = mysql_fetch_array($result2); 
if (empty($myrow2['id']))
   {
   //Если не действительны (может мы удалили этого пользователя из базы за плохое поведение)
    $main.=("<div class='block' style='width: 960px;'>
<div class='bodyBlock'>Вход на эту страницу разрешен только зарегистрированным пользователям!</div></div>");
   }
}
else {
//Проверяем, зарегистрирован ли вошедший
$main.=("<div class='block' style='width: 960px;'>
<div class='bodyBlock'>Вход на эту страницу разрешен только зарегистрированным пользователям!</div></div>"); }
$result = mysql_query("SELECT * FROM users WHERE id='$id'",$db); 
$myrow = mysql_fetch_array($result);//Извлекаем все данные пользователя с данным id

if (empty($myrow['login'])) { $main.=("<div class='block' style='width: 960px;'>
<div class='bodyBlock'>Пользователя не существует! Возможно он был удален.</div></div>");} //если такого не существует



if ($myrow['login'] == $login) {
//Если страничка принадлежит вошедшему, то предлагаем изменить данные и выводим личные сообщения
$navigation.= "$myrow[login]";
$main.= "
<div class='block' style='width: 960px;'><div class='bodyBlock'>
<form action='update_user.html' method='post'>
Ваш логин <strong>$myrow[login]</strong>. Изменить логин:<br>
<input name='login' type='text'>
<input type='submit' name='submit' value='изменить'>
</form>
<br>

<form action='update_user.html' method='post'>
Изменить пароль:<br>
<input name='password' type='password'>
<input type='submit' name='submit' value='изменить'>
</form>
<br>

<form action='update_user.html' method='post' enctype='multipart/form-data'>
Ваш аватар:<br>
<img alt='аватар' class='border' src='$myrow[avatar]'><br>
Изображение должно быть формата jpg, gif или png. Изменить аватар:<br>
<input type='FILE' name='fupload'>
<input type='submit' name='submit' value='изменить'>
</form>
<br>

<h2>Личные сообщения:</h2>

";

$tmp = mysql_query("SELECT * FROM messages WHERE poluchatel='$login' ORDER BY id DESC",$db); 
$messages = mysql_fetch_array($tmp);
//извлекаем сообщения пользователя, сортируем по идентификатору в обратном порядке, 
//т.е. самые новые сообщения будут вверху

if (!empty($messages['id'])) {
do //выводим все сообщения в цикле
  {
$author = $messages['author'];
$result4 = mysql_query("SELECT avatar,id FROM users WHERE login='$author'",$db); //извлекаем аватар автора
$myrow4 = mysql_fetch_array($result4);

if (!empty($myrow4['avatar'])) {//если такового нет, то выводим стандартный(может этого пользователя уже давно удалили)
$avatar = $myrow4['avatar'];
}
else {$avatar = "user/avatars/net-avatara.jpg";}

  $main.=("
  <table>
  <tr>
  <td><a href='$myrow4[id]-us_page.html'><img class='border' alt='аватар' src='$myrow4[avatar]'></a></td>
  
  <td>Автор: <a href='$myrow4[id]-us_page.html'>$author</a><br>
      Дата: $messages[date]<br>
      Сообщение:<br>
     $messages[text]<br>
     <a href='user/drop_post.php?id=$messages[id]'>Удалить</a>
  
  </td>  
  </tr>
  </table><br>
  ");
  //выводим само сообщение
  }
  while($messages = mysql_fetch_array($tmp));

                    }
                    else {
                    //если сообщений не найдено
                    $main.= "Сообщений нет</div></div>";
                    }
                    
}

else
{
//если страничка чужая, то выводим только некторые данные и форму для отправки личных сообщений
$navigation.= "$myrow[login]";
$main.= "
<img alt='аватар' class='border' src='$myrow[avatar]'><br>
<form action='post.html' method='post'>
<br>
<h2>Отправить Ваше сообщение:</h2>
<textarea cols='43' rows='4' name='text'></textarea><br>
<input type='hidden' name='poluchatel' value='$myrow[login]'>
<input type='hidden' name='id' value='$myrow[id]'>
<input type='submit' name='submit' value='Отправить'>
</form>
";
} 

Аватара пользователя
Distructor
Администратор
Сообщения: 1607
Зарегистрирован: 28.12.2009
как минимум заменить

Код: Выделить всё

if ($myrow['login'] == $login) { 
на

Код: Выделить всё

if (!empty($myrow['login']) && $myrow['login'] == $login) { 
кто ж вас так учит вовсюда регулярки лепить =/

Код: Выделить всё

$id =$_GET['user']; 
... 
if (!preg_match("|^[\d]+$|", $id)) { 
достаточно просто

Код: Выделить всё

$id = intval($_GET['user']); 

Crank174RuS
Сообщения: 66
Зарегистрирован: 19.09.2010
Не помогло :-(

Аватара пользователя
Distructor
Администратор
Сообщения: 1607
Зарегистрирован: 28.12.2009
Crank174RuS писал(а):Не помогло :-(
приведи то что у тебя получилось

Аватара пользователя
SuBbI
Сообщения: 161
Зарегистрирован: 02.01.2010
Crank174RuS, если код бесплатен то выложи его плз в паблик)
НЕ прав пишется раздельно!!!!!

Crank174RuS
Сообщения: 66
Зарегистрирован: 19.09.2010
Distructor писал(а):
Crank174RuS писал(а):Не помогло :-(
приведи то что у тебя получилось
Я сделал то что ты сказал. Добавилось только
ниже этого "Вход на эту страницу разрешен только зарегистрированным пользователям!"
вот это "Неверный формат запроса! Проверьте URL"

Аватара пользователя
Distructor
Администратор
Сообщения: 1607
Зарегистрирован: 28.12.2009
Crank174RuS писал(а):Я сделал то что ты сказал.
что именно? только первый пункт или и второй?
во втором я привел не полное решение, а просто указание на ошибку и то в какую сторону смотреть при исправлении

в общем как уже говорил: "приводи то, что у тебя получилось"

Ответить