Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
2 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 39
1

Поля и вход

08.08.2013, 21:12. Показов 1070. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, у меня есть код входа php. Но, эммм, нестыковочка - поля для входа видят уже вошедшие пользователи, как и скрыть?
И прошу объяснить код скрытия контента, ато каждый раз на форум пишу)))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.08.2013, 21:12
Ответы с готовыми решениями:

Авторизация: Одна форма, 2 поля(log, pass), 1 кнопка вход
Доброе утро форуму! Не могу не создать тему с вопиюще популярным названием, однако не поверите...

Как поменять местами микрофонный вход и вход на наушники? программное перенаправление
Как сменить местами микрофонный вход и вход на наушники на передней панели? На семерке все просто:...

Найти работу поля, разность потенциалов на концах участка, напряженность поля, объемную плотность энергии поля
Электрон разгоняется однородным полем на участке 10^(-2) см до скорости 4×10^6 м/с. Найти:...

Зависимые поля (список значений одного поля зависит от значения другого поля)
Здравствуйте, Уважаемые участники форума, изучив множество подобных вопросов на разных форумах,...

11
43 / 17 / 4
Регистрация: 22.02.2012
Сообщений: 327
08.08.2013, 21:21 2
А что является признаком входа на сайт?
Запущенная для пользователя сессия? Определенная переменная?

PHP
1
2
3
4
5
6
<? if (!$logged_user) : ?>
        <div>
//Вот тут печатаем интерфейс входа. Он будет показан только если $logged_user нету.
//Если она есть ничего выведено не будет
        </div>
<? endif; ?>
0
2 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 39
08.08.2013, 21:29  [ТС] 3
Не получается, поле для входа есть и у зарегистрированных + пишет:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\test.com\www\index.php:3) in Z:\home\test.com\www\index.php on line 5
0
43 / 17 / 4
Регистрация: 22.02.2012
Сообщений: 327
08.08.2013, 21:34 4
Ты сессию запускаешь после вывода информации в браузер.
Давай сюда весь код.
Если файлов несколько, давай все.
0
2 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 39
08.08.2013, 21:42  [ТС] 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
<?php
    //  вся процедура работает на сессиях. Именно в ней хранятся данные  пользователя, пока он находится на сайте. Очень важно запустить их в  самом начале странички!!!
    session_start();
    ?>
    <html>
    <head>
    <title>Главная страница</title>
    </head>
    <body>
    <h2>Главная страница</h2>
    <form action="testreg.php" method="post">
 
    <!--****  testreg.php - это адрес обработчика. То есть, после нажатия на кнопку  "Войти", данные из полей отправятся на страничку testreg.php методом  "post" ***** -->
 <p>
    <label>Ваш логин:<br></label>
    <input name="login" type="text" size="15" maxlength="15">
    </p>
 
 
    <!--**** В текстовое поле (name="login" type="text") пользователь вводит свой логин ***** -->
 
    <p>
 
    <label>Ваш пароль:<br></label>
    <input name="password" type="password" size="15" maxlength="15">
    </p>
 
    <!--**** В поле для паролей (name="password" type="password") пользователь вводит свой пароль ***** -->
 
    <input type="submit" name="submit" value="Войти">
 
    <!--**** Кнопочка (type="submit") отправляет данные на страничку testreg.php ***** -->
 <!--**** ссылка на регистрацию, ведь как-то же должны гости туда попадать ***** -->
    </p></form>
    <?php
if (!empty($_SESSION['login']) && !empty($_SESSION['id']))
{
   // Если не пусты, то мы выводим ссылку
   echo "Здравствуйте,".$_SESSION['login'];
   echo "<br><a href='logout.php'>Выход</a>";
} else {
   echo "Здравствуйте, Гость";
   echo "<br><a href='auth.php'>Войти</a>";
}
?>
reg.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
<html>
    <head>
    <title>Регистрация</title>
    </head>
    <body>
    <h2>Регистрация</h2>
    <form action="save_user.php" method="post">
    <!--**** save_user.php - это адрес обработчика.  То есть, после нажатия на кнопку "Зарегистрироваться", данные из полей  отправятся на страничку save_user.php методом "post" ***** -->
<p>
    <label>Ваш логин:<br></label>
    <input name="login" type="text" size="15" maxlength="15">
    </p>
<!--**** В текстовое поле (name="login" type="text") пользователь вводит свой логин ***** -->
<p>
    <label>Ваш пароль:<br></label>
    <input name="password" type="password" size="15" maxlength="15">
    </p>
<!--**** В поле для паролей (name="password" type="password") пользователь вводит свой пароль ***** -->
<p>
    <input type="submit" name="submit" value="Зарегистрироваться">
<!--**** Кнопочка (type="submit") отправляет данные на страничку save_user.php ***** -->
</p></form>
    </body>
    </html>
save_user.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
<?php
    if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
    if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
    //заносим введенный пользователем пароль в переменную $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 должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
 // проверка на существование пользователя с таким же логином
    $result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
    $myrow = mysql_fetch_array($result);
    if (!empty($myrow['id'])) {
    exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
    }
 // если такого нет, то сохраняем данные
    $result2 = mysql_query ("INSERT INTO users (login,password) VALUES('$login','$password')");
    // Проверяем, есть ли ошибки
    if ($result2=='TRUE')
    {
    echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. <a href='index.php'>Главная страница</a>";
    }
 else {
    echo "Ошибка! Вы не зарегистрированы.";
    }
    ?>
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
<?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);} }
    //заносим введенный пользователем пароль в переменную $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 должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
 
$result = mysql_query("SELECT * FROM users WHERE login='$login'",$db); //извлекаем из базы все данные о пользователе с введенным логином
    $myrow = mysql_fetch_array($result);
    if (empty($myrow['password']))
    {
    //если пользователя с введенным логином не существует
    exit ("Извините, введённый вами login или пароль неверный.");
    }
    else {
    //если существует, то сверяем пароли
    if ($myrow['password']==$password) {
    //если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!
    $_SESSION['login']=$myrow['login'];
    $_SESSION['id']=$myrow['id'];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь
    echo "Вы успешно вошли на сайт! <a href='index.php'>Главная страница</a>";
    }
 else {
    //если пароли не сошлись
 
    exit ("Извините, введённый вами login или пароль неверный.");
    }
    }
    ?>
logout.php
PHP
1
2
3
4
5
<?php
session_start();
$_SESSION = array();
session_destroy();
header('Location: index.php');
bd.php
PHP
1
2
3
4
<?php
    $db = mysql_connect ("localhost","root","");
    mysql_select_db ("phpmyadmin",$db);
    ?>
0
15 / 15 / 5
Регистрация: 16.03.2013
Сообщений: 87
08.08.2013, 21:56 6
Знакомый код. Кажется, на русселере такой видел)

Помоему, ты рано начал разбираться с процедурой регистрации и авторизации пользователей. Почитай подробнее о сессиях и работой с базой данных, сразу многое станет на свои места.

Кстати, ошибки на первый взгляд не вижу. Разве что имя базы данных в файле подключения.
0
43 / 17 / 4
Регистрация: 22.02.2012
Сообщений: 327
08.08.2013, 22:14 7
Копипаст детектед.
В 11 строку индекса ставишь вот это:
PHP
1
<? if (!$_SESSION['login']) : ?>
В 35 вот это:
PHP
1
<? endif; ?>
Чорд, опередили с инфой про копипаст.
Дадада, код оттуда.
Когда только начинал интересоваться php, тоже его там выдел. Первую свою регистрацию с его помощью написал.

Добавлено через 9 минут
В 11 строку лучше вот это:
PHP
1
<? if (!isset($_SESSION['login'])) : ?>
Чтобы нотисов не было.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
08.08.2013, 22:18 8
Цитата Сообщение от Gabriel.exe Посмотреть сообщение
В 11 строку индекса ставишь вот это:
а перед этим в самом начале кода прописываешь
PHP
1
2
error_reporting(-1);
ini_set('display_errors', 'On');

Не по теме:

опять этот Попов и его "код" :-!



Добавлено через 1 минуту
Цитата Сообщение от Jallik Bleach Посмотреть сообщение
Кстати, ошибки на первый взгляд не вижу
да их там куча. FAQ по распространенным ошибкам
0
2 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 39
08.08.2013, 22:21  [ТС] 9
Хорошо, спасибо
0
Jallik Bleach
08.08.2013, 22:22
  #10

Не по теме:

Цитата Сообщение от KOPOJI Посмотреть сообщение
да их там куча. FAQ по распространенным ошибкам
Я имел в виду таких, чтобы скрипт не работал.

0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
08.08.2013, 22:28 11

Не по теме:

Цитата Сообщение от Jallik Bleach Посмотреть сообщение
таких, чтобы скрипт не работал
а, то есть, если скрипт должен работать неверно, то это нормально, проблема только если скрипт не работает вообще?) Ладно, молчу..


Dolor, почитайте тему Что означает предупреждение "headers already sent"
0
2 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 39
09.08.2013, 17:26  [ТС] 12
Спасибо, у меня всё получилось!
0
09.08.2013, 17:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.08.2013, 17:26
Помогаю со студенческими работами здесь

Как связать между собой два поля (список значений одного поля зависит от значения другого поля)
Есть таблица: предмет, КодТипаМатериала (список), КодМатериала (список) для примера: ...

Как прописать программно поля "Основные поля", "Подчинённые поля"?
Как прописать программно поля &quot;Основные поля&quot;(LinkMasterFields), &quot;Подчинённые...

Обновление одного поля таблицы, при заполнении поля в другой таблице
Друзья помогите новичку! Есть две таблицы -продажа(id продажи, сумма продажи) -скидка(id скидки,...

Невозможно выполнить выборку по имени поля (по номеру поля все работает)
Вот кусок кода: conn = new SqlCeConnection(&quot;Data Source = Database.sdf;&quot;); ...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru