Уважаемые читатели сайта Ajaxs.ru

Очень рад что вы зашли на мой сайт. Найдеюсь Вы сможете найти сдесь для себя полезную информацию. Зарегистрироавшись на сайте вы получаете ряд преимуществ:
1. При комментировании Вам не нужно вводить имя и капчу с картинки
2. Вы можете получать уведомления на Email к интерисующим вас урокам
3. Вы можете редактировать свои комментарии

Вход на сайт


Забыли пароль

Зарегистрироваться

Главная / Уроки по PHP / Просмотр урока

     

Создание сайтов


Вам нужен небольшой сайт или просто хотите доработать уже существующий? | Подробнее...

Создание регистрации пользователей на сайте

Иногда на сайте часть контента или скачивание каких-либо файлов нужно сделать доступным, только для зарегистрированных пользователей. И тут встает вопрос: «Как же осуществить регистрацию пользователей на сайте?». На самом деле все не так уж и сложно, как кажется. Вся работа будет состоять из двух шагов. В первой части мы сделаем регистрацию пользователей, а во второй осуществим вход зарегистрированных пользователей на сайт.
Для начала мы создадим главную страницу index.php, на которой у нас будет отображаться форма для входа (о ней поговорим чуть позже, пока просто ее создадим) и на ней будет ссылка на страницу регистрации нового пользователя:

Вход:
<br>
<br>
 
<form
action="login.php" method="POST"><table>
<tr>
<td>
Логин:</td>
<td><input
type="text" name="login"></td>
</tr>

<tr>
<td>
Пароль:</td>
<td><input
type="password" name="password"></td>
</tr>

<tr>
<td
colspan="2"><input type="submit" value="Войти" name="submit"></td>
</tr>
</table></form>

<a
href="registration.php">Регистрация</a>

При нажатии на ссылку Регистрация пользователь попадает на страницу registration.php, на которой будет находиться форма для ввода всех необходимых данных при регистрации и выглядеть она будет примерно так:

<form action="verification.php" method="POST">

<table>
<tr>
<td>
Логин<font color="red">*</font>:</td>
<td><input
type="text" size="20" name="login"></td>
</tr>
<tr>
<td>
Пароль<font color="red">*</font>:</td>
<td><input
type="password" size="20" maxlength="20" name="password"></td>
</tr>
<tr>
<td>
Подтверждения пароля<font color="red">*</font>:</td>
<td><input
type="password" size="20" maxlength="20" name="password2"></td>
</tr>
<tr>
<td>
E-mail<font color="red">*</font>:</td>
<td><input
type="text" size="20" name="email"></td>
</tr>
<tr>
<td>
Имя:</td>
<td><input
type="text" size="20" name="name"></td>
</tr>
<tr>
<td>
Фамилия:</td>
<td><input
type="text" size="20" name="lastname"></td>
</tr>
<tr>
<td></td>
<td
colspan="2"><input type="submit" value="Зарегистроваться" name="submit">
</td>
</tr>
</table>
</form>

<br>
Поля со значком <font color="red">*</font> обязательны для заполнения

В этой форме пользователь вводит логин, пароль, email и при желании имя и фамилию, после чего все эти данные отправляются обработчику verification.php. В нем будет происходить проверки данных и в случае удачи заносится в базу данных. После этого пользователь будет считатся зарегистрированным. Теперь рассмотрим, как же устроен обработчик verification.php

<?php
include_once("bd.php");

if (isset($_POST['submit'])){
    if(empty($_POST['login']))  {
    echo '<br><font color="red"><img border="0" src="error.gif" alt="Введите логин"> Введите логин!</font>';
}
elseif (!preg_match("/^\w{3,}$/", $_POST['login'])) {
echo '<br><font color="red"><img border="0" src="error.gif" alt="В поле "Логин" введены недопустимые символы!">В поле "Логин" введены недопустимые символы! Только буквы, цифры и подчеркивание!</font>';
}
elseif(empty($_POST['password'])) {
echo '<br><font color="red"><img border="0" src="error.gif" alt="Введите пароль !">Введите пароль!</font>';
}
elseif (!preg_match("/\A(\w){6,20}\Z/", $_POST['password'])) {
echo '<br><font color="red"><img border="0" src="error.gif" alt="Пароль слишком короткий!">Пароль слишком короткий! Пароль должен быть не менее 6 символов! </font>';
}
elseif(empty($_POST['password2'])) {
echo '<br><font color="red"><img border="0" src="error.gif" alt="Введите подтверждение пароля!">Введите подтверждение пароля!</font>';
}
elseif($_POST['password'] != $_POST['password2']) {
echo '<br><font color="red"><img border="0" src="error.gif" alt="Введенные пароли не совпадают!">Введенные пароли не совпадают!</font>';
}
elseif(empty($_POST['email'])) {
echo '<br><font color="red"><img border="0" src="error.gif" alt="Введите E-mail!">Введите E-mail! </font>';
}
elseif (!preg_match("/^[a-zA-Z0-9_\.\-][email protected]([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/", $_POST['email'])) {
echo '<br><font color="red"><img border="0" src="error.gif" alt="E-mail имеет недопустимий формат!">E-mail имеет недопустимий формат! Например, [email protected]! </font>';
}

else{
$login = $_POST['login'];
$password = $_POST['password'];
$mdPassword = md5($password);
$password2 = $_POST['password2'];
$email = $_POST['email'];
$rdate = date("d-m-Y в H:i");
$name = $_POST['name'];
$lastname = $_POST['lastname']; 

$query = ("SELECT id FROM users WHERE login='$login'");
$sql = mysql_query($query) or die(mysql_error());

if (mysql_num_rows($sql) > 0) {
echo '<font color="red"><img border="0" src="error.gif" alt="Пользователь с таким логином зарегистрированый!">Пользователь с таким логином зарегистрирован!</font>';
}
else {
$query2 = ("SELECT id FROM users WHERE email='$email'");
$sql = mysql_query($query2) or die(mysql_error());
if (mysql_num_rows($sql) > 0){
echo '<font color="red"><img border="0" src="error.gif"  alt="Пользователь с таким e-mail зарегистрированый!">Пользователь с таким e-mail уже зарегистрирован!</font>';
}
else{
$query = "INSERT INTO users (login, password, email, reg_date, name_user, lastname )
VALUES ('$login', '$mdPassword', '$email', '$rdate', '$name', '$lastname')"
;
$result = mysql_query($query) or die(mysql_error());;
echo '<font color="green"><img border="0" src="ok.gif"  alt="Вы успешно зарегистрировались!">Вы успешно зарегистрировались!</font><br><a href="index.php">На главную</a>';
}
}
}
}
?>

В самом начале мы подключаем файл bd.php, содержащий подключение к базе данных.

mysql_connect ("localhost","user","password");
mysql_select_db ("reg");

Кстати забыл сказать, что подключать его надо на всех страницах в самом начале документа до начала какого-либо html кода. В дальнейшем мы его еще будем редактировать.

Теперь создадим таблицу users в нашей базе данных:

CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT ,
`login` VARCHAR( 20 ) NOT NULL ,
`password` VARCHAR( 35 ) NOT NULL ,
`email` VARCHAR( 50 ) NOT NULL ,
`reg_date` VARCHAR( 32 ) NOT NULL ,
`name_user` VARCHAR( 32 ) NOT NULL ,
`lastname` VARCHAR( 32 ) NOT NULL ,
PRIMARY KEY ( `id` )
);

Далее у нас осуществляется проверка введенных данных, если они не корректны, то выдается ошибка. Если все проходит удачно, то превращаем глобальные переменные в обычные, а так же шифруем пароль. Затем мы проверяем, нет ли у нас пользователя с таким же логином и email, если есть, то выдаем ошибку. Если эти проверки были пройдены успешно, заносим нового пользователя в базу данных и сообщаем об успешно регистрации.

Теперь, когда пользователь зарегистрировался ему нужно войти на сайт. Форму для ввода логина и пароля мы уже сделали в самом начале. При нажатии кнопки войти мы отправляем все наши данные файлу login.php, который проверяет есть ли такой пользователь.

<?php
if (isset($_POST['login'])){
    $login = $_POST['login'];
    if ($login == '') {
        unset($login);
        exit ("Введите пожалуйста логин!");
    }
}
if (isset($_POST['password'])){
    $password = $_POST['password'];
    if ($password == '') {
        unset($password);
        exit ("Введите пароль");
    }
}
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
 
$login = trim($login);
$password = trim($password);
$password = md5($password);//шифруем пароль
$user = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password'");
$id_user = mysql_fetch_array($user);
if (empty($id_user['id'])){
    exit ("Извините, введённый вами логин или пароль неверный.");
}
else {
    $_SESSION['password'] = $password;
    $_SESSION['login'] = $login;
    $_SESSION['id'] = $id_user['id'];
}
echo "<meta http-equiv='Refresh' content='0; URL=index.php'>";
?>

Этот файл проверяет нашего пользователя на существование и запускает для него сессию, т.к. весь вход построен именно на них. Эти переменные будут «висеть» в браузере до тех пор пока его не закроешь или их не уничтожишь (на этом основан выход). Теперь чтобы сессии работали нужно в файле bd.php дописать такую строчку session_start(); Для удобства использования переменных сессии будем присваивать их обычным переменным

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

Теперь чтобы вошедший пользователь мог видеть контент для зарегистрированных пользователей, мы создадим такое условие:

if(empty($login) and empty($password)){
echo "Вам необходимо зарегистрироваться, чтобы видеть этот контент";
}
else{
echo "Привет, ".$login." | <a href='exit.php'>Выход</a><br>Контент для зарегистрированных пользователей";
}

Ну и наконец, создадим файл exit.php, который позволит пользователю выйти с сайта. Все что для этого нужно это уничтожить переменные в сессиях:

unset($_SESSION['password']);
unset($_SESSION['login']);
unset($_SESSION['id']);

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

Автор: Евгений Бочкарев и Кушнир Александр Урок добавлен: 30 Июля 2010 в 14:46 Просмотров: 36969

Условия копирования материалов с сайта

Все комментарии
ProGraMMBoy XD))02-08-2010 в 09:31
Хороший урок,это удачно-использовать сессии,но только надо сказать,что сессии надо включать до инклюдов,когда я изучал сессии неделю мучался этим)))
Рамиль03-08-2010 в 10:54
Спасибо за урок)
Рамиль03-08-2010 в 20:42
Скажите как записать на сессии имя и фамилию,сделал страницу пользователя....а немогу вывести..
Рамиль03-08-2010 в 21:31
А нет,я сам всё сделал.)
Вячеслав13-10-2010 в 01:41
Очень классный урок.
А напишите к этому уроку код восстановления пароля.
Кушнир Александр14-10-2010 в 19:23
Вячеслав, урок по востановлению пароля за несколько дней должен быть!
Uman09-11-2010 в 22:37
будем тестить
roma25-11-2010 в 21:58
Очень классный урок. а как назват БД таблицу ми создали user
а базу как создат ***,,,,????? он у меня не работает
Евгений25-11-2010 в 23:26
Базу создается через phpMyAdmin. Здесь описано как это сделать
/lessonview.php?cat=omysql&id=29
Raferti06-12-2010 в 09:48
А как будут обстоять дела с индексацией сайта в ПС ?
Ведь при старте сессии, ко всем ссылкам добавляется скрытый параметр, идентификатор сессии.! В результате получается что при каждом, новом открытии сайта идентификатор сессии меняется, следовательно изменяется и адресс ссылок. Что я думаю не очень понравиться поисковым ботам (не долюбливают они динамические ссылки). поправьте меня если это не так ??!
Евгений06-12-2010 в 19:11
Да в таком случае поисковикам будет не видно содержимого, которое требует наличие сессий. Но обычно при помощи регистрации ограничивают такие возможности как комментирование, скачивание файлов или другие дополнительные функции, а не весь контент, что я думаю не должно повлиять на индексацию.
Raferti07-12-2010 в 22:38
Евгений. Вы меня не много не поняли, я имел ввиду следующие: Вот цитата с сайта

пхп по умолчанию будет поставлять к ссылкам PHPSESSID, что - согласистесь - может не сильно понравится поисковику, который, по слухам, и так-то динамические ссылки не жалует, а тут вообще при каждом заходе - новый адрес!
Если сессии используются для ограничения доступа к закрытому разделу сайта, то все просто поисковик и не должен его индексировать.
Если же приходится показывать одну и ту же страницу как авторизованным, так и не авторизованным пользователям, то тут поможет такой трюк – стартовать сессию только тем, кто ввел пароль, или тем, у кого уже стартовала сессия.
lelya18-12-2010 в 12:18
Очень хороший урок!!! Спасибо Вам за него. Не могли бы Вы так же просто объяснить, как из базы данных, скажем из таблицы книги, выбирать названия книги, вызывать картинки.
Евгений18-12-2010 в 12:35
lelya если я правильно понял, то вы хотите сделать что-то вроде поиска, т.е. при вводе названия книги в форму должен происходить поиск похожих названий из базы и выводиться с картинками?
lelya22-12-2010 в 13:14
Евгений, да, Вы правильно меня поняли. Проблема в том, что по имени выводится должна не только картинка, но и скажем, автор этой книги. И здесь возникает проблема. Если грузится картинка не грузятся остальные запросы, иначе наоборот...
Буду Вам очень благодарна если поможете.
Евгений22-12-2010 в 18:03
А название, путь до картинки и автор хранятся в разных таблицах? lelya, если вам не трудно не могли бы вы описать проблему более подробно или даже привести код.
[email protected]
Сергей11-01-2011 в 19:49
Да в этих скриптах горы ошибок.
Oльга18-01-2011 в 14:58
Мне кажется что в этом коде есть ошибка,когда я пытаюсь загрузить страницу без авторизации появляетя такая надпись:
Notice: Undefined variable: login in z:\home\localhost\www\reg_user\account.php on line 28 [Денвер: показать возможную причину ошибки]Привет, | Выход
Контент для зарегистрированных пользователей

<?
if(empty($login) and empty($password)){
echo "Привет, ".$login." | <a href='exit.php'>Выход</a><br>Контент для зарегистрированных пользователей";
}
else{
echo "Вам необходимо зарегистрироваться, чтобы видеть этот контент";
} /*чтобы вошедший пользователь мог видеть контент для зарегистрированных пользователей*/
?>
Ольга18-01-2011 в 15:00
Прогу прощения я в первом коментарии ошиблась, этот правельный!
Мне кажется что в этом коде есть ошибка,когда я пытаюсь загрузить страницу без авторизации появляетя такая надпись:
Notice: Undefined variable: login in z:\\home\\localhost\\www\\reg_user\\account.php on line 2 [Денвер: показать возможную причину ошибки]Привет, | Выход
Контент для зарегистрированных пользователей

<?
if(empty($login) and empty($password)){
echo \"Привет, \".$login.\" | <a href=\'exit.php\'>Выход</a><br>Контент для зарегистрированных пользователей\";
}
else{
echo \"Вам необходимо зарегистрироваться, чтобы видеть этот контент\";
} /*чтобы вошедший пользователь мог видеть контент для зарегистрированных пользователей*/
?>
Oльга18-01-2011 в 15:27
когда я пытаюсь протестировать вход все вписываю правильно и логин и пароль но постоянно выдает ошибку:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in z:\home\localhost\www\reg_user\login.php on line 25
Извините, введённый вами логин или пароль неверный.
Евгений18-01-2011 в 19:31
Ольга, да условие действительно в уроке было неправильно поставлено (получалось так что не зарегистрированные видели контент и наоборот). Сейчас исправил. Но откуда вылезает ошибка не понимаю. Это предупреждение говорит о том что не определена переменная login. Я попробовал проверить исходные файлы, у меня таких ошибок не вылетало. А файл account.php это я понял переименованный index.php? А ошибка Warning: mysql_fetch_array() возможно возникает из-за не верного подключения к базе данных, проверьте файл bd.php
юзер03-02-2011 в 13:45
не получается
юзер03-02-2011 в 13:48
выдает ошибку при регистрации - сплошные иероглифы, а при вводе пароля как админа просто белая страница и ")>? ? почему так. Ведь надо вначале прописать базу и таблицу, потом все эти php файлы добавить в ту же папку где база и таблица и потом запустить index.php и все должно работать или не так?
Евгений03-02-2011 в 17:02
Иероглифы скорее всего из-за того что в исходных файлах кодировка utf-8, нужно поставить такую же кодировку в браузере или преобразовать все файлы в windows-1251. Ошибки могут возникнуть если файл bd.php подключить после того как начнется какой-либо html, его обязательно нужно подключать в самом начале страницы. Да все файлы в данном случае в одной папке.
юзер03-02-2011 в 22:16
а база данных должна создаваться в utf-8 тоже? просто у меня пишет ошибка при создании ее в utf-8 делал в 1251, все остальное сделал как у вас и все равно при регистрации выдает по ошибке на каждое поле, а потом и в общем. заполнил все поля нажал зарегистрироваться и вот ошибка
при этом имя ввожу только буквы пароль 6 символов и оба раза тот же email как сказано. В чем может быть бок?
юзер03-02-2011 в 22:18
и заодно вопрос , через что его тестить? просто загружать файл index в браузер и должно работать? или в денвере через localhost и т п ???
Евгений04-02-2011 в 16:56
А какие именно ошибки выводятся, можете привести пример. Тестировать нужно обязательно через денвер или на реальном хостинге, потому что так php работать не будет.
Александр05-02-2011 в 00:11
Здравствуйте Евгений, что нужно подставить в bd.php в строчку

mysql_query("SET NAMES utf8");

?
Александр05-02-2011 в 00:15
И еще при нажатии кнопки вход ничего не происходит
Евгений05-02-2011 в 12:40
mysql_query("SET NAMES utf8"); это кодировка в которую преобразуются все данные при выводе из базы. Например если кодировка базы в utf8, а вам надо что бы данные выводились в windows-1251, то следует написать
mysql_query("SET NAMES cp1251");
А при нажатии на кнопку обработчик правильно прописан?
юзер05-02-2011 в 16:52
в общем запускаю апачи, открываю файл, регистрируюсь и весь код php вылазит на экран в мозилле со всеми переменными и т п , а в ИЕ вообще не открывает php файлы а предлагает сохранить , в чем может быть причина такого поведения браузеров?
Евгений05-02-2011 в 18:10
Это значит что вы просто запускаете файл на прямую из браузера так точно работать не будет, поскольку php серверный язык программирования. Надо обязательно запускать через денвер и обращаться к сприптам http://localhost/папка со скриптом/скрипт.php. При этом сами скрипты лежат C:\WebServers\home\localhost\www\папка со скриптом\скрипт.php
Александр05-02-2011 в 23:11
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in z:\home\localhost\www\liverpoolrusfan.ru\reg\login.php on line 31
Извините, введённый вами логин или пароль неверный.

Здравствуйте еще раз)

Вот такая вот ошибочка выскакивает в login.php где-то в этих строчках

$user = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password'");
$id_user = mysql_fetch_array($user);
if (empty($id_user['id'])){
exit ("Извините, введённый вами логин или пароль неверный.");
Александр05-02-2011 в 23:27
Упс, извините я просто не почитал комментарии выше, где у Ольги была такая же проблема, как у меня, оказалось просто я опечатался в названии БД, теперь все работает отлично :) Спасибо вам огромное за данный урок и за скрипт :)
Роман06-02-2011 в 12:25
Подскажите пожалуйста, у меня этот скрипт, при нажатии вход, просто обновляется.
Роман06-02-2011 в 12:35
Разобрался:) Нужно было просто включить сессию в index.php
Влад07-02-2011 в 12:30
Доброго времени суток, не подскажите сайты или статьи чтобы авторизация была без БД (вход только для админа, без регистрации)
Евгений07-02-2011 в 19:35
В этом случае вообще все легко просто берете пароль шифруете по определенному правилу и просто с помощью условия проверяете совпадает ли он с введенным.
Дмитрий22-02-2011 в 08:36
в БД не сохраняется Имя и Фамилия
Дмитрий22-02-2011 в 08:45
Ошибся, все сохранается
Дмитрий22-02-2011 в 08:49
Сделайте урок как создать профиль пользователя
Петр02-03-2011 в 19:04
все работает, но на главной странице все время выдает такую строчку
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at z:\home\localhost\www\ajaxs\index.php:1) in z:\home\localhost\www\ajaxs\bd.php on line 2
Евгений02-03-2011 в 19:33
Петр, скорее всего потому что вы подключили файл bd.php не в самом начале документа. Обязательно подключать этот файл до начала какого либо html кода, поскольку функция session_start очень капризная и любой пробел перед ней может вызвать ошибку.
Петр02-03-2011 в 20:05
нет я в начале подключил первой строкой идет
<?php include_once("bd.php"); ?>
правда в индекс файле session_start не указывал вообще,
Евгений02-03-2011 в 20:51
Если в индексном файле не подключать bd.php, то должно выводится сообщение что вы не вошли в систему. А ошибка все таки возникает из-за какого то символа стоящего перед session_start. Попробуйте стереть эту функцию и посмотреть результат, если ошибка исчезла, то ищите этот символ. Пробелов не должно быть и перед <?php
Петр02-03-2011 в 21:48
Причину так и не нашел зато заметил , что если брать файлы из примера, то все работает, а если заменить в них хоть 1 символ и сохранить то выдает ту самую ошибку с сессиями.
И еще вопрос, если я не хочу применять логин и пароль к своей базе , то в строке в файле bd.php надо писать вместо
mysql_connect ("localhost","jexa","12345");
вот так
mysql_connect ("localhost");
или так
mysql_connect ("localhost","","");
или еще как-то по иному?
Кушнир Александр04-03-2011 в 21:13
А как вы практически будете это применять и где? А при переписке строки у вас скорее всего не произойдет соединения с БД.
Max04-03-2011 в 23:52
Что-то не понял, переменные

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

нужно вписать в db.php ?
Евгений05-03-2011 в 13:08
Да вписать нужно в db.php. Сделано это исключительно для удобства использования в дальнейшем этих переменных. Этого в принципе можно и не делать.
Юлия15-03-2011 в 20:45
А можете еще раз про иероглифы в браузере написать? Какую кодировку надо выбрать? Чтобы во всех браузерах было видно и понятно написано.
Евгений16-03-2011 в 17:27
Юлия, для русского текста лучше подходит windows-1251, но можно использовать и utf-8. Отображаться будет в обоих вариантах правильно, просто нужно сохранять все файлы в той же кодировки что и пишется в теге meta. Бывает так что сайт в кодировке windows-1251, а базы данных в utf-8, то в таком случае нужно после подключения к базе писать такую строчку
mysql_query("SET NAMES cp1251");
иначе выводимые из базы русские символы будут превращаться в "крякозяблики"
guest201216-03-2011 в 21:58
Евгений, как в preg_match добавить кирилиццу?
Николай31-03-2011 в 12:37
Ув.пользователи т.п и т.д.Прошу вас помочь мене сделать БД БАЗУ пробывал статьи но не получается установить phpmyadmin для создания бд помогите буду благодарен.skype:kolyan9898
маил:[email protected]
iricha2203-04-2011 в 11:44
Привет, урок очень полезен, но у меня после регистрации пользователя возвращает на главную страничку. А когда нажимаю на Мой профиль - там снова просит ввести логин и пароль, и снова возвращает на главную.. все вроде правильно пишу - но в чем дело?
Олег04-04-2011 в 20:14
Я заменил файл login.php на тот что прилагался в архиве ,
теперь ошибок не выдает , но при входе на сайт ввожу логин и пароль , нажимаю войти . при нажатие просто обновляется страница и очищается форма . из за чего это может быть ?
Евгений04-04-2011 в 21:31
Ну скорее всего там страница не обновляется а просто идет перенаправление с login.php на главную. Попробуйте за комментировать данную строку и посмотреть при входе будут ли возникать какие-нибудь ошибки. Если все нормально то нужно проверять запускаются ли сессии и нормально ли в них заносятся значения. Для этого сразу после того как мы создали эти переменные попробуйте вывести их при помощи echo.
Олег05-04-2011 в 11:00
Здорова Евгений , я исправил вроде ошибку , но там неправильно
дается кадрировка , я поменял всё utf-8 на cp1251 но у меня всё равно непонятная кодировка , не видит русский язык , что мне сделать ? как её поменять ?
пожалуйста помоги !!!
Ирина05-04-2011 в 11:55
Люди, помогите, у меня почемуто сайт не работает в опере. я как начала вставлять пхп скрипты так он видимо и сдвинулся. Это срипты кривые наверно да?? но все другие браузеры открывают и работает прекрасно.. что делать?
Евгений05-04-2011 в 15:18
Олег, ты поменял кодировку в теге
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
а у самих файлов изменил кодировку на windows-1251?
олег05-04-2011 в 19:40
да у самих файлов изменил я и тег тоже , везде стоить
кодировка 1251 , но по прежнему непонятные иероглифы :(
нее пойму в чем дело , по всем законам уже все должно быть на русском , а он русский язык не распознает .
Евгений05-04-2011 в 19:51
Очень странно, а может в браузере стоит какая-нибудь левая кодировка? А в крякозябликах выводится весь текст или только из базы?
олег05-04-2011 в 20:20
в браузере все нормально , там тоже windows-1251 .
текст выводит весь и вопрос , может конечно я что неправильно написал вот строки из файлов .

db.php___
mysql_query("SET NAMES cp1251");
login.php___
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
registration.php___
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

может где еще что прописать надо ? или где не так написал ?
Олег05-04-2011 в 20:28
файл registration.php , стал на русском , остальные пока не могу добиться . если у кого была подобная проблема подскажите.
Олег06-04-2011 в 10:15
Все получилось !!! приступаю к созданию профиля .))
Кушнир Александр08-04-2011 в 19:36
Попробуйте создать структуру страницы и поставить кодировку ср-1251. Если так и будет продолжаться допишите перед <html> такой текст
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Кирилл10-04-2011 в 10:46
в файле verification.php я поставил
.. include_once("bd.php"); ..
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">;
...
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
...

в bd.php стоит:
..
session_start();

mysql_connect ("localhost","jexa","12345");
mysql_select_db ("reg");
mysql_query("SET NAMES cp1251");

$login = $_SESSION['login'];
$password = $_SESSION['password'];
$id_user = $_SESSION['id'];
..

но всё равно на старнице ../verification.php выдаются кракозябры. почему?
Кушнир Александр16-04-2011 в 11:17
Попрубуйте поставить кодировку ср-1251, я понимаю что windows-1251 это анолог, но иногда в этом может быть проблема
Костя Яцук05-05-2011 в 02:46
Все работает только выдает такую ошибочку на главной странице и в профиле везде

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\test1.ru\www\registration\index.php:1) in Z:\home\test1.ru\www\registration\bd.php on line 2


Как это можно исправить ?
Евгений05-05-2011 в 20:30
Файл bd.php нужно подключать в самом начале страницы, перед <?php не должно быть даже пробелов.
владимир08-05-2011 в 16:33
правильно я эту беду вставил

include_once("bd.php");
mysql_connect ("localhost","ugu","5t6y7u");
mysql_select_db ("cot");
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
подскажите пожалуйста если что не так сделал
кузя08-05-2011 в 22:59
уважаемый Евгений как правильно связать страницу регистрации с обработчиком. Если вас не затруднит приведите наглядный пример
Антон13-05-2011 в 22:43
В php не селён... поэтому..

"...вошедший пользователь мог видеть контент для зарегистрированных пользователей, мы создадим такое условие:

if(empty($login) and empty($password)){
echo "Вам необходимо зарегистрироваться, чтобы видеть этот кон..."

Это прописывать непосредственно на кажной(нужной для меня) странице или в файле bd.php?
Спасибо за ответ
Евгений13-05-2011 в 22:56
Да такое условие прописывается на каждой странице, на которой нужно скрыть контент для незарегистрированных пользователей.
Володя18-05-2011 в 11:39
Добрый день Евгений все замечательно работает, нет не краказябров и не выдает ни каких ошибок единственное что контент видят как зарегистрированные пользователи так и не зарегистрированные. В чем может быть проблема?
Евгений18-05-2011 в 12:19
Думаю проблема в условии которое проверяет существуют ли данные в сессии, потому что если запуск сессии произошел успешно, то проблема должна быть только в этом. И файл bd.php должен подключается на всех страницах где стоят эти условия, так как в нем мы запускаем сессию session_start();
Володя19-05-2011 в 22:25
Добрый вечер. Евгений подскажите пожалуйста как сделать что бы только после регистрации открывалась следующая страница.
С уважением Володя
Доброжелатель03-07-2011 в 21:22
Скачал скрипт установил и ничего не пашет.
Кушнир Александр04-07-2011 в 12:26
Доброжелатель,
проверте подключение к БД, таблицы в БД и т.д - возможно в этом проблема...
Кушнир Александр04-07-2011 в 12:29
Володя, для автоматического перехода на другую страницу после входа воспользуйтесь редиректом... Например, header ("Location: information.php");
Андрей16-07-2011 в 08:20
У меня такая проблема.Все работает ошибок не выдает.но когда вводишь имя и пароль почему то они так и не сохраняются.проверил получает ли их файл login.php. Оказалось получает и потом перенаправляет на главную страницу, но там ничего не происходит. файл bd.php подключил в начала главной страницы.
Алексей29-07-2011 в 22:16
подскажите плиз...страница registration.php работает нормально а при переходе на verification.php выскакивает тот самый код который в блокноте что делать
Алескандр16-08-2011 в 14:50
у меня выдает ошибку, Файл bd.php везде подключен в самом начале страницы, но
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\qwerasdf.ru\www\index.php:1) in Z:\home\qwerasdf.ru\www\bd.php on line 2
Юрий18-08-2011 в 22:56
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\localhost\www\q\index.php:1) in Z:\home\localhost\www\q\bd.php on line 2 та же самая ошибка, но при этом проходит регистрация, нормально функционирует вход/выход, но все таки от этой назойливой строчки сверху у себя на страничке хотелось бы избавится
андрей21-08-2011 в 03:15
какая, проблема может быть
Notice: Undefined index: login in T:\home\virtual\chat-host.no-ip.org\bd.php on line 7

Notice: Undefined index: password in T:\home\virtual\chat-host.no-ip.org\bd.php on line 8

Notice: Undefined index: id in T:\home\virtual\chat-host.no-ip.org\bd.php on line 9
Вход:

Логин:
Пароль:

Регистрация
ал10-09-2011 в 13:18
все получилосъ
Владимир11-10-2011 в 14:17
Есть предложение
[email protected]
Владимир11-10-2011 в 14:19
Уточнение адреса [email protected]
Kiss02-11-2011 в 12:44
форма не работает
Nimpu04-11-2011 в 20:55
Люди, кто сделал страницы пользователей, помогите напишите мне на почту [email protected]
Daniilone27-11-2011 в 19:40
Помогите пожалуйста. У меня такая проблема, я вроде все настроил, только с БД не уверен. Так вот когда захожу на любую страницу на верху такая строка:

session_start(); mysql_connect ("localhost","user","password"); mysql_select_db ("reg"); mysql_query("SET NAMES ansi") $login = $_SESSION['login']; $password = $_SESSION['password']; $id_user = $_SESSION['id'];
Daniilone27-11-2011 в 19:40
А когда в регистрации, ввожу все как положено, нажимаю зарегистрироваться, и на странице varification.php выходит это:

п»їsession_start(); mysql_connect ("localhost","user","password"); mysql_select_db ("reg"); mysql_query("SET NAMES ansi") $login = $_SESSION['login']; $password = $_SESSION['password']; $id_user = $_SESSION['id'];
Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in Z:\home\localhost\www\reg\verification.php on line 41

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in Z:\home\localhost\www\reg\verification.php on line 41
Access denied for user 'ODBC'@'localhost' (using password: NO)

надеюсь на скорую помощь!
Daniilone27-11-2011 в 20:49
А все, не надо, я понял свою ошибку. Я не прочитал уроки MySQL, как прочитал так сразу понял=)
ТЁМКИН20-12-2011 в 15:21
У меня когда жмешь на кнопку вход вот что:


Warning: mysql_query() [function.mysql-query]: Access denied for user 'root'@'localhost' (using password: NO) in /home/u362267140/public_html/login.php on line 24

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/u362267140/public_html/login.php on line 24

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/u362267140/public_html/login.php on line 25
Извините, введённый вами логин или пароль неверный.
Alien16-01-2012 в 22:56
Андрей, чтобы убрать ошибку -
Notice: Undefined index:....
необходимо в начале файла bd.php
добавить строку - error_reporting(0);
это отменит отображение предупреждений
Павел18-01-2012 в 18:40
Alien, а вы не могли бы прояснить почему могла возникнуть ошибка - Notice: Undefined index:.... ???
Просто у меня все раньше работало нормально, но после того как переустановил xampp с версии 1.7.3 на 1.7.7 эта ошибка появилась.
Дима12-03-2012 в 21:44
Помогите, пожалуйста!
Когда на странице регистрации я ввожу все данные и жму "Зарегистрироваться", пишет
Access denied for user ''@'localhost' (using password: NO)
Денис17-03-2012 в 15:03
Здравствуйте, подскажите как показать на странице для зарегистрированных пользователей уже существующий но скрытый div или ссылку!!! Заранее спасибо
Евгений17-03-2012 в 15:56
В смысле скрытый блок при помощи css?
Странник12-04-2012 в 10:18
У меня тоже возникает проблема с кодировкой,файл db.php работет в SET NAMES utf8, файл registration.php на charset=windows-1251 , сама
база данных работает на cp1251_general_ci
Евгений12-04-2012 в 10:27
Ну в таком случае измените кодировку файла db.php и всех остальных на windows-1251.
Странник12-04-2012 в 10:33
спасибо, очень помогло, осталось только одно, ошибки и сообщения файла verification.php всё равно на квакозябре.
сергей25-04-2012 в 17:53
вот такая куча ошибок вылазиет, уже все нервы истратил, подскажите в чем проблнма, запускаю через хостинг таблица создана по инструкции все прописал а толку нету...
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'nailgreen'@'localhost' (using password: YES) in /home/n/nailgreen/public_html/verification.php on line 2

Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user 'nailgreen'@'localhost' (using password: NO) in /home/n/nailgreen/public_html/verification.php on line 3

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /home/n/nailgreen/public_html/verification.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/n/nailgreen/public_html/verification.php:2) in /home/n/nailgreen/public_html/bd.php on line 2
Евгений25-04-2012 в 20:18
Ну во-первых ошибка подключения к базе данных, похоже не верный пользователь и пароль. Во-вторых функцию session_start() как я уже много раз говорил нужно подключать в самом начале файла, чтобы не было перед ней никаких символов и пробелов.
сергей25-04-2012 в 21:13
да вроде разобрался, но опять же, ввожу данные при входе, тупо страница обновляется и все, по предыдущим комментариям так ни чего и не понял, как понять за коментировать? и где можно посмотреть пример данной реги, чтоб хоть представлять как она должна выглядеть после входа. Еще такой вопрос у меня форма вставлена в .html может это как то влияет?
Евгений25-04-2012 в 21:34
Данная регистрация используется на этом сайте. В принципе форма может быть и в html странице, но в таком случае после входа пользователя нужно перенаправлять на другую страницу, поскольку сессии не будут работать в html. Ну и в таком случае появится еще ряд проблем. Проще сделать форму на странице php и тогда не надо запариваться с перенаправлениями всякими.
сергей26-04-2012 в 05:47
ну вот а то я вчера пол ночи промаялся, благодарю..
Роман30-04-2012 в 19:50
Помогите розобратса з даним кодом!

mysql_connect ("localhost","jexa","12345");
mysql_select_db ("reg");

что значит "localhost","jexa","12345" ?
"reg"?
Евгений30-04-2012 в 21:44
localhost - сервер базы данных. В большинстве случаев localhost, но может быть и другой.
jexa - имя пользователя базы данных.
12345 - пароль.
reg - имя базы данных
Роман01-05-2012 в 00:03
Спасибо, розобралса!!! Очинь полезний урок))
Денис10-05-2012 в 00:53
Спасибо за информацию.
Теперь понятно как работает регистрация/авторизация/выход на сайтах...
через $_SESSION[...]

Вопрос, а можно считать например с:

$_SESSION[login]

чему у пользователя равен login?

например:
$login = 3;
$_SESSION['login'] = $login;

а теперь как узнать чему равен $_SESSION['login'] каждого пользователя?

так?

$login = $_SESSION['login'];
if(empty($login)) {.....
Евгений10-05-2012 в 10:37
Да можно выводить ее на страницу и делать все тоже самое что и с обычной переменной.
patron14-05-2012 в 14:28
можно ли сделать редирект на ошибку? например вышла ошибка и через некоторое время пользователь перенаправляется обратно на страницу регистрации
вава22-05-2012 в 23:26
Подскажите пожалуйста, у меня есть папка админ, и там находятся скрипты по управлению сайтом, как запретить вход туда, и оставить только для администратора.
По логике в таблице добавлю поле которое имеет 2 значение, 0 и 1, по дефолту всем пользователям присваивается 0, а потом ручками изменю администратору права на единицу.
Как сделать такой запрет?
Большое спасибо заранее.
Евгений23-05-2012 в 10:56
Ну просто проверять это поле и в случае если оно равно 0 сразу прекращать выполнение скрипты выдавая сообщение об ошибке exit()
А так вообще есть много способов защитить страницы от постороннего доступа.
lol24-05-2012 в 18:36
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\mysite.ru\www\reg\index.php:1) in Z:\home\mysite.ru\www\reg\bd.php on line 2
выходить такая ошибка подскажите как исправить?
lol24-05-2012 в 19:22
Сама нашла причину и решила
Антон03-06-2012 в 12:35
mysql_connect ("localhost","user","password"); mysql_select_db ("reg"); session_start(); $login = $_SESSION['login']; $password = $_SESSION['password']; $id_user = $_SESSION['id'];Access denied for user 'root'@'localhost' (using password: NO)

Вот это получается после регистрации
Антон03-06-2012 в 18:26
Если можно в скайп: tokha_k
Илья20-06-2012 в 02:35
Скажите а как к этой регистрации привязать каптчу?
Артем21-06-2012 в 08:17
Здравствуйте уважаемые пначинающие программисты или уже проф программисты )) у меня свой хостинг т.е я работаю не через серверы на локальном компьютере , а через хостинг у меня такая проблемка все проходит отлично , регистрация проходит нормально , захожу в БД значения заносятся в таблицу , но при входе почему то пишет. Извините, введённый вами логин или пароль неверный. подскажите из зачего это может быть ?
Гость21-06-2012 в 19:17
Снова этот лузерский говно код взятый с сайта
Один лузер написал и пошло всё по интернету. Не профессионально. Никогда не пишите такую форму регистрации.
Вот примерно как нужно:

m4gz01-07-2012 в 00:20
ужос, особенно когда посмотрел на md5($password) НИКОГДА ТАК НЕ ДЕЛАЙТЕ!!!
User14-07-2012 в 21:49
Почему у меня не в той кодировке выдает сообщения о успешной или не успешной регистрации?
Влад29-07-2012 в 17:45
В файле с подключением к БД содержатся переменные. Делал как в уроке. Когда пользователь не залогинился, то выскакивает уведомление о том, что переменные не определены. Как убрать?
Олег30-07-2012 в 14:14
Доброго времени суток, у меня возникла проблема ,
не получается авторизоваться, регистрация проходит нормально ,
в базу данных всё заноситься, прохожу по ссылке на главную , ввожу логин и пароль страница перезагружается и не входи поля остаются пустыми.
Олег30-07-2012 в 17:18
Спасибо , всё сам исправил .
Олег30-07-2012 в 17:22
Но у меня новая ошибка .
Предупреждение : session_start () [ function.session старт ]: Не удается отправить куки - заголовки уже прислал (выход начался в Z: \ главная \ test1.ru \ WWW \ login.php: 1) в Z: \ главная \ test1 . RU \ WWW \ bd.php на линию 4 ,
всё фалы скопированы с сайта. в bd.php прописанны только свои логин и пароль а так ничего не менял , из за чего может возникать ошибка ?
Олег01-08-2012 в 10:29
вроде всё разрулил, только не могу понять одного jibmre в файле bd.php
session_start(); - говорит что ошибка в это строчке , но её тут нет ! что за глюки ? помогите исправить.
Александр10-08-2012 в 17:56
У меня возникает проблема одна , регистрация проходит нормально без ошибок, в конце выводит что успешно зарегистрирован и предлагает перейти на главную , перехожу ввожу логин и пароль , странница перезагружается а поля остаются пустыми , из-за чего это может быть ?
Сергей06-09-2012 в 10:39
Здравствуйте! Скажите а как сделать чтобы, на слове регистрация была ссылка на страничку с регистрационной формой?
nik206-09-2012 в 18:27
Сделай ссылку и все
Сергей07-09-2012 в 12:45
Мне кто нибуть может помочь онлайн? Вроде все понятно, а доехать не могу всеравно, это что надо создавать страници в конструктере???
Елена11-09-2012 в 13:03
здравствуйте, у меня проблема, после нажатия на кнопку регистрация появляется:
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/u380176727/public_html/verification.php on line 9

Parse error: syntax error, unexpected T_STRING in /home/u380176727/public_html/verification.php on line 9
Чек23-09-2012 в 18:07
как подключить файл bd.php?
Я все перепробовал! Либо выводит содержимое файла на экран, либо сама функция include видна на странице! Помогите пожалуйста!
tamalex16-10-2012 в 11:03
всем привет - пытаюсь создать сайт с ргистрацией в dreamviewere на лок сервере денвер. присоединил данный код - сначала была проблема с конектом базы - решил - переделал пользователя , теперь выскакивает " Unknown column 'password' in 'field list' "- подскажите что ето и счем его едят - как исправить?
Dominator18-10-2012 в 19:09
Здравствуйте. Сделал регистрацию у себя на сайте по этому уроку. Все работает отлично. Правда сессии убрал и перевел сайт на кукиес. У меня один есть. В данном уроке, при регистрации, пароль шифруется в md5 и в таком виде записывается в базу. А если человек забыл пароль и хочет запросить его к себе на email. Что мы будем делать? Отсылать зашифрованный пароль, который имеется в нашей базе? Или будем дешифровать, что невозможно?
Radmir118-10-2012 в 19:30
здравствуйте, КАК СДЕЛАТЬ ЧТОБЫ ДАННЫЕ (пароли и т.д .) ПОЛЬЗОВАТЕЛЕЙ СОХРАНЯЛИСЬ НЕ В БД А В ТЕКСТОВОМ ФАЙЛЕ ИЛИ В php файле (ИЛИ В ЛЮБОМ ДРУГОМ, ТОЛЬКО НЕ В БД), И ПРИ ВХОДЕ НА САЙТ ВСЯ ИНФОРМАЦИЯ (ПАРОЛЬ, ЛОГИН И Т.Д.) СЧИТЫВАЛАСЬ С txt или php или еще какого нибудь файла. Я ЗНАЮ ЧТО ЭТО НЕ БЕЗОПОСНО. НАПИШИТЕ ПОЖАЛУЙСТА ПРО ЭТУ ТЕМУ, ЕСЛИ НЕ СЛОЖНО КОГДА НАПИШИТЕ ПРО ЭТУ ТЕМУ ОТПРАВИТЕ ССЫЛКУ НА СТАТЬЮ В СКАИП: radmir1702 ИЛИ В E-MAIL: ПОЖАЛУЙСТА
Евгений18-10-2012 в 19:48
Ну вообще в таком случае пароль сбрасывают, выслав временный, который можно потом сменить либо просто предлагается новый ввести подтвердив при этом свою почту
Voltage19-10-2012 в 19:33
Как вывести

>>>name_user<<< FROM users WHERE login='$login' AND password='$password'

В место

$login

на index.php ?
Т.е. что бы было не "Привет, $login" а "Привет, $_SESSION['name_user']" ?
Добавить новый комментарий

Автор:

Текст сообщения:

Если в комментарии присутствует код, пожалуйста вставляете его между тегами [code][/code]

cap

Код с картинки:

Получать уведомления о новых комментариях по Email могут только зарегистрированные пользователи.

Опрос

Вы пишите уроки по программированию?

Уроки

Для начинающих

Файлы

Полезное

Последние комментарии

Ссылки