//Проверка
$rus = array("А","а","В","Е","е","К","М","Н","О","о","Р","р","С","с","Т","Х","х");
// Массив латинских букв
$eng = array("A","a","B","E","e","K","M","H","O","o","P","p","C","c","T","X","x");
// Заменяем русские буквы латинскими
$eng_nick = str_replace($rus, $eng, $nick);
// Заменяем латинские буквы русскими
$rus_nick = str_replace($eng, $rus, $nick);
// Формируем SQL-запрос
$result = "SELECT nick FROM register
WHERE nick LIKE '$nick' OR
nick LIKE '$eng_nick' OR
nick LIKE '$rus_nick'";
$myrow = mysql_query($result);
// Формируем и выполняем SQL-запрос для посетителя с
// именем $_POST['name']
$query = "SELECT pass FROM register WHERE nick='$login'";
$nme = mysql_query($query);
if(!$nme)
{
echo"<p align='center'><br>
<table align='center' bgcolor='000000' width='580' border='1' cellspacing='0' cellpadding='0'><tr>
<td align='center'><span style='font-size:23px; color:#FF0000; '><strong>Ошибка выполнения запроса! Пожалуйста, напишите об этом администратору.</strong></span></td>
</tr>
</table></p>";
exit();
}
// Если запрос вернул результат - производим дальнейшую обработку
if(mysql_num_rows($nme) > 0)
{
// Получаем пароль
$password = mysql_result($nme, 0);
// Сравниваем пароль из базы данных и введённый посетителем
if ($pass == $password)
{
// Идентификация прошла успешно - осуществляем
// "вход" посетителя. Для того, чтобы в течении текущей
// сессии посетитель не вводил своё имя, пароль повторно -
// передаём их через сессию
if(session_start())
{
$_SESSION['user'] = $_POST['login'];
$_SESSION['password'] = $_POST['pass'];
// Осуществляем автоматический переход на
// страницу index.php чтобы убедиться, что
// посетитель "вошёл"
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
</HEAD><body>";
}
}
else
{
echo"<br>
<p align='center'><br>
<table align='center' bgcolor='000000' width='580' border='1' cellspacing='0' cellpadding='0'><tr>
<td align='center'><span style='font-size:23px; color:#FF0000; '><strong>Ошибка идентификации: неправильный пароль</strong></span></td>
</tr>
</table></p>";
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='4 ; URL=index.php'>
</HEAD></HTML>";
exit();
}
}
// Если в результате запроса не получено ни одной
// строки - посетитель с таким именем не зарегистрирован
else
{
echo"<br>
<p align='center'><br>
<table align='center' bgcolor='000000' width='580' border='1' cellspacing='0' cellpadding='0'><tr>
<td align='center'><span style='font-size:23px; color:#FF0000; '><strong>Ошибка идентификации: посетитель не зарегистрирован</strong></span></td>
</tr>
</table></p>";
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='4 ; URL=index.php'>
</HEAD></HTML>";
exit();
}
?>
</body>
</html>
Выход:
<?php session_start();?>
<!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>Processing</title>
</head>
А теперь собственно и главный вопрос:
Например есть две категории пользователей:
Пользователь ВИП пользователь
Как сделать так чтобы чтобы на страницах моего сайта скрывалась некоторая информация от простых пользователей и не было ограничений для ВИП пользователей. А на месте где информация для пользователей скрыта выводился соответствующий текст "Типа ты не вип поэтому просмотр ограничен"
На всякий случай приведу php код страницы где выводится новость:
<?php include ("db.php") ;
if (isset($_GET['id'])) {$id = $_GET['id']; }
if (!isset($id)) {$id = 1;}
$result = mysql_query ("SELECT * FROM data WHERE id='$id'",$db);
if (!$result)
{
echo "<p>Запрос на выбор данных из базы не прошел<br> Код ошибки:</p>";
exit (mysql_error());
}
<tr>
<?php include ("blocks/newsniz.php") ?>
</tr>
</table></td>
<td class="TDh5" width="245px" valign="top">
<?php include ("blocks/right.php") ?>
</td></tr>
<tr>
<?php include ("blocks/footer.php") ?>
</tr>
</table>
</body>
</html>
Заранее благодарен за любые подсказки по данному вопросу.
Но в тоже время прошу расказывать чем проще тем лучше, просто в php я пока не силён:1128:
03.02.2011, 09:25
Mulder
Цитата:
Сообщение от MAKAR
Но в тоже время прошу расказывать чем проще тем лучше, просто в php я пока не силён
Как это знакомо. Очередной адепт Попова? Просмотрели 2-3 урока этого дилетанта и уже возомнили себя гуру? Выбросите его уроки в мусоропровод, купите настоящие книги по пхп. Через год упорного изучения можете приступать к написанию своей цмс.
ЗЫ. Код, который вы привели, лучше никому не показывать, а писать для себя. Через год, будете сами над собой смеяться от того бреда, который написали.
03.02.2011, 09:50
MAKAR
а что не так я написал? я попросил помощи, только и всего. и походу дела кроме вас себя гуру никто не считает.
03.02.2011, 09:52
MAKAR
Если вы считаете это бредом то хотябы говорили почему, а если это высказывание вы написали ради набивание поста то лес там ==>
03.02.2011, 10:20
Apay
код читать не стал, это долго и нудно, кратко вам скажу так: введите у каждого пользователя статус (в базе тоже), и при каждой генерации страницы в соответствии с этим статусом генерируйте свое для каждого пользователя.
<?php
$info = '';
if (isset ($_POST['submit']))
{
$login = isset ($_POST['login']) ? trim ($_POST['login']) : '';
$password = isset ($_POST['password']) ? trim ($_POST['password']) : '';
if (strlen ($login) < 4 || strlen ($login) > 54) {
$info = 'Логин не может быть меньше 4 и больше 54 символов';
} elseif (strlen ($password) < 4 || strlen ($password) > 45) {
$info = 'Пароль не может быть меньше 4 и больше 45 символов';
}
if (empty ($info))
{
// Шифруем в md5 пароль
$password = md5 ($password);
// Заносим данные в БД
if (mysql_query ("INSERT INTO `users` (login, password, user_group) VALUES ('" . mysql_real_escape_string ($login) . "', '" . $password . "', '1')"))
{
$info = 'Регистрация прошла успешно';
}
else
{
$info = 'Ошибка записи в БД';
}
}
}
echo $info;
<?php
$info = '';
$member_id = array (); // Тут будут храниться данные о пользователе
if (isset ($_POST['submit']))
{
$login = isset ($_POST['login']) ? trim ($_POST['login']) : '';
$password = isset ($_POST['password']) ? trim ($_POST['password']) : '';
if (strlen ($login) < 4 || strlen ($login) > 54) {
$info = 'Логин не может быть меньше 4 и больше 54 символов';
} elseif (strlen ($password) < 4 || strlen ($password) > 45) {
$info = 'Пароль не может быть меньше 4 и больше 45 символов';
}
if (empty ($info))
{
// Шифруем в md5 пароль
$password = md5 ($password);
// Проверяю есть ли такой юзер
$member_id = mysql_fetch_assoc (mysql_query ("SELECT * FROM `users` WHERE login = '" . mysql_real_escape_string ($login) . "' AND password = '" . $password . "' LIMIT 1"));
if ($member_id['login'])
{
$_SESSION['user_id'] = $member_id['user_id'];
$_SESSION['user_password'] = md5 ($member_id['password']);
// Странциа проверки группы пользователя и его прав доступа
$res = mysql_query ("SELECT * FROM `user_group`");
$user_group = array ();
while ($row = mysql_fetch_assoc ($res))
{
$user_group[$row['id']] = $row;
}
// Проверяю есть ли у юзера доступ к данной странице
if ($user_group[$member_id['user_group']]['allow_page'])
{
echo 'Тут какойто контент';
}
else
{
echo 'Ваша группа неможет просматривать данную страницу';
}
sql
users
CREATE TABLE `users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`login` varchar(54) NOT NULL,
`password` varchar(35) NOT NULL,
`user_group` int(11) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `user_group` VALUES ('1', 'Пользователь', '1');
INSERT INTO `user_group` VALUES ('2', 'Гость', '0');
P.S писал не проверив.
P.S.S Коннект к БД сами напишите
03.02.2011, 16:40
Mulder
Цитата:
Сообщение от MAKAR
Если вы считаете это бредом то хотябы говорили почему
1.
if (isset($_GET['id'])) {$id = $_GET['id']; }
if (!isset($id)) {$id = 1;}
Классический Попов. Тут возможны два варианта:
1. У вас полная каша в голове, раз пишите столь бессмысленный код.
2. Бездумный копипаст. Абы скопипастить код, а понять, зачем он тут не для нас.
Конструкция if-else и тернарный оператор не для адептов Попова. Они ими брезгуют.
2. Какие-то дикие и невнятные проверки входных данных. Проверка введенного мыла вызывает хохот. В довесок добиваем код еще и повторяющимися проверками. Если ник не может содержать меньше трех букв, то зачем отдельно проверять на пустоту и на длину? Проверяйте сразу на длину.
3.
$result = "SELECT nick FROM register
WHERE nick LIKE '$nick' OR
nick LIKE '$eng_nick' OR
nick LIKE '$rus_nick'";
$myrow = mysql_query($result);
Получается, если в системе зареген пользователь "andre", я уже не смогу зарегить ник "andrey". Сам условие запроса вида "сам не знаю, что пишу". Ответьте, чему равны переменные $nick и $eng_nick в случае ника "andrey". Применение mysql_num_rows вообще ресурсоемко. Откройте для себя мануал по мускулу.
4. Некая подозрительно выборочное экранирование данных перед вставкой в бд. Почему были защищены только ник и пасс? Думаете остальные данные не опасны? Опять на лицо полное непонимание процесса и каша в голове.
Это я еще по поверхности прошел. Жести в вашем коде напорядок больше. Не тратьте зря время. Начните изучать пхп, а не читать попсу.
03.02.2011, 18:22
alexdrob
Цитата:
Сообщение от LifeUP
if (isset ($_SESSION['user_id']) && $_SESSION['user_id'] > 0)
Можно так)
if (!empty($_SESSION['user_id']))
Я думаю нет смысла каждый раз в бд запрос делать и проверять авторизован ли юзер.
Так же можно и группу в сессии хранить.
03.02.2011, 19:26
LifeUP
Цитата:
Сообщение от alexdrob
Можно так)
if (!empty($_SESSION['user_id']))
Я думаю нет смысла каждый раз в бд запрос делать и проверять авторизован ли юзер.
Так же можно и группу в сессии хранить.
можно и так. Про авторизация не согласен, если какието данные меняются то юзер их не увидит, не есть гуд.