Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для NightRain
0 / 0 / 0
Регистрация: 01.02.2013
Сообщений: 103

Возврат на форму регистрации

08.02.2013, 20:24. Показов 1206. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
форма авторизации index.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
 
          // вся процедура работает на сессиях. Именно в ней хранятся    данные пользователя, пока он находится на сайте. Очень важно запустить их в    самом начале странички!!!
          session_start();
include ("bd.php");// файл bd.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);
 
            //извлекаем нужные данные о пользователе
            }
            ?>
            <html>
            <head>
            <title>Главная    страница</title>
            </head>
            <body>
            <h2>Главная    страница</h2>
 
<?php
            if    (!isset($myrow['avatar']) or $myrow['avatar']=='') {
 
            //проверяем, не извлечены ли данные пользователя из базы. Если    нет, то он не вошел, либо пароль в сессии неверный. Выводим окно для входа.    Но мы не будем его выводить для вошедших, им оно уже не нужно.
print <<<HERE
            <form    action="testreg.php" method="post">
            <!-- testreg.php - это адрес обработчика. То есть, после нажатия на кнопку    "Войти", данные из полей отправятся на страничку testreg.php методом "post"  -->
              <p>
                <label>Ваш логин:<br></label>
                <input    name="login" type="text" size="15"    maxlength="15"
HERE;
 
            if (isset($_COOKIE['login'])) //есть    ли переменная с логином в COOKIE. Должна быть,    если пользователь при предыдущем входе нажал на чекбокс "Запомнить    меня"
            {
            //если да, то вставляем в форму ее значение. При этом    пользователю отображается, что его логин уже вписан в нужную графу
            echo    ' value="'.$_COOKIE['login'].'">';
            }
 
 
print <<<HERE
              </p>
            <!-- В текстовое поле (name="login" type="text") пользователь вводит свой    логин -->
              <p>
                <label>Ваш пароль:<br></label>
                <input    name="password" type="password" size="15"    maxlength="15"
HERE;
 
            if (isset($_COOKIE['password']))//есть    ли переменная с паролем в COOKIE. Должна быть,    если пользователь при предыдущем входе нажал на чекбокс "Запомнить    меня"
            {
            //если да, то вставляем в форму ее значение. При этом пользователю    отображается, что его пароль уже вписан в нужную графу
            echo    ' value="'.$_COOKIE['password'].'">';
            }
 
 
print <<<HERE
              </p>
            <!-- В поле для паролей (name="password"    type="password") пользователь вводит свой пароль -->
              <p>
                <input name="save" type="checkbox"    value='1'> Запомнить меня.
              </p>
<p>
            <input    type="submit" name="submit" value="Войти">
            <!-- Кнопочка (type="submit") отправляет данные на страничку testreg.php     -->
            <br>
 
            <!-- ссылка на регистрацию, ведь как-то же должны гости    туда попадать  -->
            <a    href="reg.php">Зарегистрироваться</a>
            </p></form>
            <br>
            Вы    вошли на сайт, как гость<br><a    href='#'>Эта    ссылка доступна только зарегистрированным пользователям</a><br>
<a    href='#'>Эта    ссылка доступна только Супер-администратора </a><br>
<a    href='#'>Эта    ссылка доступна только администратора </a><br>
<a    href='#'>Эта    ссылка доступна только Контент-менеджер  </a><br>
<a    href='#'>Эта    ссылка доступна только Модератор </a><br>
HERE;
            }
 
else
            {
 
// Здесь что-то должно быть!
 
}
?>
            </body>
            </html>
обработчик testreg.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
session_start();// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
 
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
$UserStatus = array(
'admin' => 'admin.php',
'user' => 'user.php' ,
'moder' => 'moder.php' ,
'sadmin' => 'sadmin.php',
'kontent' => 'kontent.php'
);
 
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
 
if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!"); //останавливаем выполнение сценариев
}
//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$login = stripslashes($login);
$login = htmlspecialchars($login);
 
$password = stripslashes($password);
$password = htmlspecialchars($password);
 
//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);
 
 
// дописываем новое********************************************
 
// подключаемся к базе
include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
 
// минипроверка на подбор паролей
$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");//удаляем ip-адреса ошибавшихся при входе пользователей через 15 минут.
 
$result = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db);// извлекаем из базы колличество неудачных попыток входа за последние 15 минут у пользователя с данным ip
$myrow = mysql_fetch_array($result);
 
if ($myrow['col'] > 10) {
exit ("Вы набрали логин или пароль неверно 3 раза. Подождите 15 минут до следующей попытки."); //останавливаем выполнение сценариев
 
 
}
 
$password = md5($password);//шифруем пароль
$password = strrev($password);// для надежности добавим реверс
$password = $password."b3p6f";
//можно добавить несколько своих символов по вкусу, например, вписав "b3p6f". Если этот пароль будут взламывать методом подбора у себя на сервере этой же md5,то явно ничего хорошего не выйдет. Но советую ставить другие символы, можно в начале строки или в середине.
 
//При этом необходимо увеличить длину поля password в базе. Зашифрованный пароль может получится гораздо большего размера.
 
 
$result = mysql_query("SELECT * FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db); //извлекаем из базы все данные о пользователе с введенным логином
 
//мы дописали «AND activation='1'», то есть пользователь будет искаться только среди активированных. Желательно добавить это условие к другим подобным проверкам данных пользователя
$myrow = mysql_fetch_array($result);
if (empty($myrow['id']))
{
//если пользователя с введенным логином и паролем не существует,то записываем ip пользователя и с датой ошибки
 
$select = mysql_query ("SELECT ip FROM oshibka WHERE ip='$ip'");
$tmp = mysql_fetch_row ($select);
if ($ip == $tmp[0]) {
//проверяем, есть ли пользователь в таблице "oshibka"
$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'");
}
 
else {
//если за последние 15 минут ошибок не было, то вставляем новую запись в таблицу "oshibka"
mysql_query ("INSERT INTO oshibka (ip,date,col) VALUES ('$ip',NOW(),'1')");
}
 
 
 
exit ("Извините, введённый вами логин или пароль неверный."); //останавливаем выполнение сценариев
 
 
 
}
 
else {
 
if (isset( $UserStatus[ $myrow['prava'] ] ))
{
   $_SESSION['password']=$myrow['password'];
   $_SESSION['login']=$myrow['login'];
   $_SESSION['id']=$myrow['id'];
   if (isset($_POST['save']))
   {
     setcookie("login", $_POST["login"], time()+9999999);
     setcookie("password", $_POST["password"], time()+9999999);
     setcookie("id", $myrow['id'], time()+9999999);
   }
   if (isset($_POST['autovhod']))
   {
     setcookie("auto", "yes", time()+9999999);
     setcookie("login", $_POST["login"], time()+9999999);
     setcookie("password", $_POST["password"], time()+9999999);
     setcookie("id", $myrow['id'], time()+9999999);
   }
echo "<html><head><meta http-equiv='Refresh' content='0; URL=".$UserStatus[ $myrow['prava'] ]."'></head></html>";
}
}
 
?>
Собственно вопрос в том, что при авторизации с главной страницы я отправляюсь на следующую страницу, но при возвращении назад на главную, у меня отображается только "Главная страница"
Не могу сообразить что написать здесь:

index.php
PHP
1
2
3
4
5
6
else
            {
 
// Здесь что-то должно быть!
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.02.2013, 20:24
Ответы с готовыми решениями:

Не получается сделать форму для регистрации
У меня на моем сайте не получается сделать обычную регистрацию. Вроде бы все норма, но когда нажимаешь на кнопку...

Вывести форму регистрации для регистрации другого пользователя
Здравствуйте, уважаемые форумчане! Простите, вообще не бум-бум в Joomle, но нужно сделать лабу по нему. Мне нужно сделать регистрацию...

Возврат данных в форму
Как сделать, чтобы после выбора (чекбоксов, списка и радиокнопок), сработал php скрипт(уже готов) и вывел в ту форму полученное значение? ...

5
 Аватар для maximus2011
269 / 261 / 35
Регистрация: 21.02.2012
Сообщений: 1,078
09.02.2013, 22:42
вам наверное надо так:
PHP
1
header("Location: stranica.php");// тут адрес куда нужно попасть
0
 Аватар для NightRain
0 / 0 / 0
Регистрация: 01.02.2013
Сообщений: 103
11.02.2013, 10:53  [ТС]
Цитата Сообщение от maximus2011 Посмотреть сообщение
вам наверное надо так:
PHP
1
header("Location: stranica.php");// тут адрес куда нужно попасть
это я понял и нашел....но мне нужна ссылка на страницу, которая определяется алгоритмом во второй код-странице
0
 Аватар для maximus2011
269 / 261 / 35
Регистрация: 21.02.2012
Сообщений: 1,078
12.02.2013, 00:21
Ну если я правильно понял, вам нужно, чтобы после всех проверок, пользователь попадал на страницу к себе или в админ панель. Если так, то я сделал вот так. У меня есть страница для авторизации, а в index.php стоит проверка сессии. Когда пользователь заходит на index.php его автоматически переадресовывает на страницу входа если сессии не совпали. Если совпали, то он получает доступ к index.php
0
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 43
13.02.2013, 12:39
Ребят, если не сложно выложите свои исходники, тоже пытаюсь сделать авторизацию на сайте, мне нужно чтобы пользователь админ мог все просматривать и редактировать на таблице, а обычный юзер просто мог видеть содержание страницы. (У меня на странице таблица и наверху три кнопки добавление удаление и редактирование, т.е. админ должен это все видеть, а юзер только таблицу)
0
 Аватар для NightRain
0 / 0 / 0
Регистрация: 01.02.2013
Сообщений: 103
14.02.2013, 18:15  [ТС]
AlexSoRK, обращайся
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.02.2013, 18:15
Помогаю со студенческими работами здесь

Возврат на главную форму
Задача в следующем - на главной форме(Form1) при нажатие на кнопку происходит переход на другую форму, т.е. Form2.showed; ...

Возврат на предыдущую форму
У меня есть порядка 10 форм, на одну из них (назовем ее REd) можно перейти с нескольких форм. Проблема, как вернуться на ту форму с...

Возврат в основную форму
- Здравствуйте уважаемые форумчане ! Помогите пожалуйста в тактическом вопросе. В проекте есть МЕТОД, выполняющий некие ДЕЙСТВИЯ,...

Запретить возврат на форму ввода
Всем привет! Товарищи, подскажите пожалуйста вот такую штуку. У меня есть форма ввода, в которую человек заносит некоторые данные, потом...

Возврат в форму атрибута из несвязной сущности
имеется: первая сущность &quot;наличие&quot; с атрибутом, который нужно вернуть в форму,&quot;цена&quot;(&quot;магазин&quot;,&quot;код...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru