Web-мастер: курс молодого бойца

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

 Страницы: 1 | 2 | 3 ... >>
 

 Добавлено 2008-09-18 14:58:12



Сообщений: 3
Зарегистрирован: 18.09.2008

Цитировать
Добрый день группе web программистов)))) Прошу прошения за создание подобной темы, но необходимо написать регистрация пользователей на сайте, что для ентого надо и как правильно делать...я в пхп новичок
Наверх  Посмотреть профиль    

 Добавлено 2008-09-18 15:15:17
evgenijj
Модератор




Сообщений: 1371
Зарегистрирован: 09.11.2007

Цитировать
Регистрация нового пользователя:
<?php

// Файл addNewUserForm.php

session_start();
// Соединяемся с сервером базы данных
include_once( 'connect.php' );

// Если при заполнении формы были допущены ошибки
if ( isset( $_SESSION['addNewUserForm'] ) ) {
  echo 
$_SESSION['addNewUserForm']['error'];
  
$login     htmlspecialchars $_SESSION['addNewUserForm']['login'] );
  
$password  htmlspecialchars $_SESSION['addNewUserForm']['password'] );
  
$confirm   '';
  
$mail      htmlspecialchars $_SESSION['addNewUserForm']['mail'] );
  
$www       htmlspecialchars $_SESSION['addNewUserForm']['www'] );
  unset( 
$_SESSION['addNewUserForm'] );
} else {
  
$login     '';
  
$password  '';
  
$confirm   '';
  
$mail      '';
  
$www       '';
}

echo 
'<form name="addNewUser" action="addNewUser.php" method="POST">'."\n";
echo 
'<table border="1">'."\n";

echo 
'<tr>'."\n";
echo 
'<td><strong>Имя:</strong></td>'."\n";
echo 
'<td><input type="text" name="login" maxlength="30" value="'.$login.'" /></td>'."\n";
echo 
'</tr>'."\n";

echo 
'<tr>'."\n";
echo 
'<td><strong>Пароль:</strong></td>'."\n";
echo 
'<td><input type="password" name="password" maxlength="30" value="'.$password.'" /></td>'."\n";
echo 
'</tr>'."\n";

echo 
'<tr>'."\n";
echo 
'<td><strong>Подтвердите пароль:</strong></td>'."\n";
echo 
'<td><input type="password" name="confirm" maxlength="30" value="'.$confirm.'" /></td>'."\n";
echo 
'</tr>'."\n";

echo 
'<tr>'."\n";
echo 
'<td><strong>Адрес e-mail:</strong></td>'."\n";
echo 
'<td><input type="text" name="mail" maxlength="60" value="'.$mail.'" /></td>'."\n";
echo 
'</tr>'."\n";

echo 
'<tr>'."\n";
echo 
'<td><strong>Домашняя страничка:</strong></td>'."\n";
echo 
'<td><input type="text" name="www" maxlength="60" value="'.$www.'" /></td>'."\n";
echo 
'</tr>'."\n";

echo 
'<tr>'."\n";
echo 
'<td>&nbsp;</td>'."\n";
echo 
'<td><input type="submit" name="submitForm" value="Отправить" />'."\n";
echo 
'</tr>'."\n";

echo 
'</table>'."\n";
echo 
'<form>'."\n";

?> 
<?php

// Файл addNewUser.php

session_start();
// Соединяемся с сервером базы данных
include_once( 'connect.php' );

// Обрезаем переменные до длины, указанной в параметре maxlength тега input
$login     substr$_POST['login'], 030 );
$password  substr$_POST['password'], 030 );
$confirm   substr$_POST['confirm'], 030 );
$mail      substr$_POST['mail'], 060 );
$www       substr$_POST['www'], 060 );

// Обрезаем лишние пробелы
$login     trim$login );
$password  trim$password );
$confirm   trim$confirm );
$mail      trim$mail );
$www       trim$www );

// Проверяем, заполнены ли обязательные поля
$error '';
if ( empty( 
$login ) ) $error $error.'<li>не заполнено поле "Имя"</li>'."\n";
if ( empty( 
$password ) ) $error $error.'<li>не заполнено поле "Пароль"</li>'."\n";
if ( empty( 
$confirm ) ) $error $error.'<li>не заполнено поле "Подтвердите пароль"</li>'."\n";
if ( empty( 
$mail ) ) $error $error.'<li>не заполнено поле "Адрес e-mail"</li>'."\n";
// Проверяем, совпадают ли пароли
if ( !empty( $password ) and !empty( $confirm ) and $password != $confirm 
  
$error $error.'<li>не совпадают пароли</li>'."\n";
// Проверяем поля формы на недопустимые символы
if ( !empty( $login ) and !eregi"[-_[:blank:]0-9a-zа-я]+"$login ) )
  
$error $error.'<li>поле "Имя" содержит недопустимые символы</li>'."\n";
if ( !empty( 
$password ) and !eregi"[-_0-9a-z]+"$password ) )
  
$error $error.'<li>поле "Пароль" содержит недопустимые символы</li>'."\n";
if ( !empty( 
$confirm ) and !eregi"[-_0-9a-z]+"$confirm ) )
  
$error $error.'<li>поле "Подтвердите пароль" содержит недопустимые символы</li>'."\n";
// Проверяем корректность e-mail
if ( !empty( $mail ) and !preg_match"#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i"$mail ) )
  
$error $error.'<li>поле "Адрес e-mail" должно соответствовать формату somebody@somewhere.ru</li>'."\n";
// Проверяем корректность URL домашней странички  
if ( !empty( $www ) and !preg_match"#^(http:\/\/)?(www.)?[0-9a-z\-\.]+\.[a-z]{2,6}\/?$#i"$www ) )
  
$error $error.'<li>поле "Домашняя страничка" должно соответствовать формату http://www.homepage.ru</li>'."\n";

// Если были допущены ошибки при заполнении формы - перенаправляем посетителя на страницу регистрации
if ( !empty( $error ) ) {
  
$_SESSION['addNewUserForm'] = array();
  
$_SESSION['addNewUserForm']['error'] = '<p class="errorMsg">При заполнениии формы были допущены ошибки:</p>'.
  
"\n".'<ul class="errorMsg">'."\n".$error.'</ul>'."\n";
  
$_SESSION['addNewUserForm']['login'] = $login;
  
$_SESSION['addNewUserForm']['password'] = $password;
  
$_SESSION['addNewUserForm']['mail'] = $mail;
  
$_SESSION['addNewUserForm']['www'] = $www;
  
header'Location: addNewUserForm.php' );
  die();
}

// Все поля заполнены правильно - продолжаем регистрацию
$query "INSERT INTO users
      (
      login,
      pass,
      mail,
      www
      )
      VALUES
      (
      '"
.mysql_real_escape_string$login )."',
      '"
.mysql_real_escape_stringmd5$password ) )."',
      '"
.mysql_real_escape_string$mail )."',
      '"
.mysql_real_escape_string$www )."'
      );"
;
$res mysql_query$query );

if ( 
$res 
  
header"Location: loginForm.php" );
else
  
header"Location: addNewUserForm.php" );

?>

Авторизацию тоже не трудно сделать. Форма, содержащая поля для ввода логина и пароля. В обработчике формы делаем запрос к БД, чтобы выяснить, есть ли пользователь с таким логином и паролем? Если есть, устанавливаем переменную сессии (я предпочитаю использовать авторизацию с использованием сессий, хотя есть и другие способы)
<?php
session_start
();
if ( isset( 
$_POST['login'] ) and isset( $_POST['password'] ) ) {
  
$query "SELECT * FROM users
  WHERE name='"
.mysql_real_escape_string$_POST['login']."'
  AND password='"
.mysql_real_escape_string$_POST['password']."'";
  
$res mysql_query$query );
  if ( 
mysql_num_rows$res ) == ) {
    
$_SESSION['user'] = mysql_fetch_array$res );
    
header'Location: index.php' );
  } else {
    
header'Location: authForm.php' );
  }
} else {
  
header'Location: authForm.php' );
}
?>
Ну а теперь достаточно проверить, установлена ли переменная $_SESSION['user'], чтобы выяснить - имеем ли мы дело с авторизованным пользователем или нет. И в соответствии с этим формировать для них разное содержимое страницы:
<?php
session_start
();
if ( isset( 
$_SESSION['user'] ) ) {
  
// Это для авторизованного пользователя
} else {
  
// А это для не авторизованного
}
?>



Денежные купюры пронумерованы для того, чтобы когда-нибудь я мог сложить их все одну к одной, по порядку.
Наверх  Посмотреть профиль   Сайт автора Отредактировано автором 18.09.2008

 Добавлено 2008-09-22 09:42:13



Сообщений: 3
Зарегистрирован: 18.09.2008

Цитировать
ясненько))))) можно еще пару вопросов... Я на большинстве сайтов видел что после первоначальной регистрации пользователя ему для подтверждения своего аккаутна высылается ссылка на мыло на окончательную регистрацию. Это как сделать правильно??? И еще вопросик, пользователь зарегистрировался на сайте, прошел авторизацию, а как дальше сервер будет определять, что это именно он, при последующем передвижение по сайту????
Наверх  Посмотреть профиль    

 Добавлено 2008-09-22 09:52:14
evgenijj
Модератор




Сообщений: 1371
Зарегистрирован: 09.11.2007

Цитировать
василий пишет:
И еще вопросик, пользователь зарегистрировался на сайте, прошел авторизацию, а как дальше сервер будет определять, что это именно он, при последующем передвижение по сайту?
Я уже писал - в начале каждой страницы сайта пишем session_start() и проверяем, установлена ли переменная $_SESSION['user']:
<?php
session_start
();
if ( isset( 
$_SESSION['user'] ) ) {
  
// Это для авторизованного пользователя
} else {
  
// А это для не авторизованного
}
?>
василий пишет:
Я на большинстве сайтов видел что после первоначальной регистрации пользователя ему для подтверждения своего аккаутна высылается ссылка на мыло на окончательную регистрацию. Это как сделать правильно?
Вот здесь описан пример такого письма с просьбой активировать учетную запись:
Скрипт форума на PHP своими руками. Часть 3


Денежные купюры пронумерованы для того, чтобы когда-нибудь я мог сложить их все одну к одной, по порядку.
Наверх  Посмотреть профиль   Сайт автора Отредактировано автором 22.09.2008

 Добавлено 2008-09-22 10:04:40



Сообщений: 3
Зарегистрирован: 18.09.2008

Цитировать
огромное спасибо)))))если возникнут вопросы обращусь))))
Наверх  Посмотреть профиль    
 Страницы: 1 | 2 | 3 ... >>
 
Быстрый ответ
 
Цвет шрифта: Закрыть все теги
Сообщение
Защитный код