WebScript.Ru
C:\   главная  ::   о сайте  ::  каталог скриптов  ::  гнездо  ::  форум  ::   авторам  :: Новостройки ::   ХОСТИНГ  ::

|| разделы::
|| поиск по сайту::

|| реклама::
|| новости почтой::
Рассылки Subscribe.Ru ::



Новости сайта WebScript.Ru
Популярные статьи

Hot 5 Stories

|| рекомендуем::




Работа с MySQL. Регистрация нового пользователя в БД.


Прислал: OlegTr [ 12.10.2001 @ 11:16 ]
Раздел:: [ Статьи по PHP ]


На этой странице я начинаю цикл статей,посвященных работе с MySQL с помощью PHP-скриптов. Статьи, представленные здесь, покажут, как добавить пользователя в БД, как изменить пароль, удалить БД, как производить различные действия с таблицами, как извлекать и модифицировать информацию в таблицах. Все статьи описывают фрагменты одного большого скрипта MySQL administrator. Полный листинг скрипта можно скачать здесь.

По мере написания статьи будут добавляться.


Работа с MySQL. Регистрация нового пользователя в БД.

Рассмотрим, как добавить пользовательский аккаунт, используя PHP. Пользователь регистрируется в БД, для него создается база данных, совпадающая с его логином и он получает на нее все привилегии. Никто, кроме него (и администратора) не имеет доступа к этой базе.

Итак,создадим форму для регистрации.


<?php
$script="register.php";
print_header2 ();
?>
<p align=right>| <a href="<?php echo $script ?>">Enter to database</a> |
<p><h2 align=center><font color="ff0000">Registration.</font></h2>
<p><font face="serif" size=2> Please,fill in the form below.
<p>You may use only english chars in your name,and name's length should be not less than 3 and
not more than 15 characters.
<br>Remember:all form fields are case sensitive.It means the names <font face="arial" size=2
color="0000ff">name</font> and <font face="arial" size=2 color="0000ff">Name</font>
are different.
<p>Password's length should be not less than 6 characters.<br>
Don't forget to enter your e-mail address,you may need it if you'll forget your password.
<p><FORM ACTION="<?php echo $script ?>" METHOD="POST" name="reg">
<p align=right><a href="<?php echo $script ?>">Home</a>
<center><TABLE BGCOLOR="bfbfbf">
<tr><td colspan=2>&nbsp;</td></tr>
<TR><TD><b>Login:</b><TD><INPUT TYPE="text" NAME="login" SIZE="20" maxlength="15" >&nbsp;&nbsp;
<TR><TD><b>Password:</b><TD><INPUT TYPE="password" NAME="pass" SIZE="20"
onFocus="is_ValidLogin (this.form.login.value)";return true>&nbsp;&nbsp;
<TR><TD><b>Verify password:</b><TD><INPUT TYPE="password" NAME="verpass" SIZE="20"
onFocus="is_ValidPass (this.form.pass.value)";return true>&nbsp;&nbsp;
<tr><td colspan=2><input type="hidden" name="action" value="register">
<tr><td colspan=2><input type="hidden" name="script" value="<?php echo $script ?>">
<tr><td colspan=2><input type="hidden" name="submit" value="ok">
<TR><TD colspan=2><p><center><INPUT TYPE="submit" VALUE="Submit"
onMouseOver="verPasswd (this.form.verpass.value)";return true></center>
<tr><td colspan=2>&nbsp;</table>
</form>

Функция print_header2 (), использованная в первой строке, включает в себя заголовок страницы и Javascript, который проверяет правильность введенных данных. С этим все должно быть понятно.


function print_header2 () {
?>
<html><head><title>MySQL administrator</title>
<script language="javascript">
<!--
function is_ValidLogin (entry1) {
if (entry1.length==0 || entry1.length < 3) {
alert ('You must enter login name not less than 3 characters!');
document.reg.login.focus ();
}
}
function is_ValidPass (entry2) {
if (entry2.length==0 || entry2.length < 6) {
alert ('You must enter password not less than 6 characters!');
document.reg.pass.focus ();
}
}
function verPasswd () {
if (document.reg.verpass.value !=document.reg.pass.value || document.reg.verpass.value==0) {
alert ("Error!This field must be the same as password field!");
document.reg.verpass.select ();
document.reg.verpass.focus ();
}
}

//-->
</script>
</head><style> A:link {font-family:arial;font-size:10pt;text-decoration:none;color:#000080;}
A:hover {font-family:arial;font-size:10pt;text-decoration:none;color:red;}";
A:visited {font-family:arial;font-size:10pt;text-decoration:none;color:#808080;}
BODY {background-color:#e6e8fa;font-family:arial;font-size:10pt;color:#333300;}
TD {font-family:arial;font-size:10pt;color:#0000ff;}
</style><body>
<p align=right><font face="Impact" size=7>
<font color="bfbfbf">F</font><font color="aaaaaa">O</font><font color="959595"
>R</font><font color="7f7f7f">U</font><font color="aaaaaa">M</font>
</font>
<?php
}

Если вся информация введена правильно, то форма посылается обработчику.


if ($action=="register") {
if ($submit) {

//Пытаемся соединиться с БД.

mysql_connect("localhost","root","password") OR die("Incorrect username or password");
mysql_select_db("mysql") OR die ("Access denied !");

//Проверяем, не существует ли уже пользователь с таким именем. Если
существует, выдаем ошибку.

$query="select * from user where user='$login'";
$result=mysql_query ($query) or die (error ($script,$login,$pass,$db));
if (mysql_num_rows ($result)) {
print_header ();
?>
<h2>Error!</h2>
<p>This name already exists in database.
<p>Please,go back and choose another name.
<p><center><a href="javascript:history.back()">Back</a></center>
<?php
}

Следующая важная вещь, которую нужно сделать-проверить наличие в пользовательском вводе символа одинарной кавычки, т.к. это служебный символ и вносить в базу данных его недопустимо, это может быть чревато катастрофическими последствиями (например взломом БД), а также символа '%'.


elseif (ereg ("%",$login) || ereg ("'",$login) || ereg ("%",$pass) || ereg ("'",$pass)) {
print_header ();
?>
<h2>Error!</h2>
<p>Unallowed symbol in login name or password.You cannot use <b><font color="ff0000">%</font></b>
or <b><font color="ff0000">'</font></b>.
<p>Please,go back and choose another name.
<p><center><a href="javascript:history.back()">Back</a></center>
<?php
}

После выполнения всех этих манипуляций можно вносить информацию о пользователе в базу данных. Это выполняется в системной БД mysql, к которой имеет доступ только root.


else {
//Вставляем данные в таблицу user.
$query="insert into user (host,user,password) values ('localhost','$login',password ('$pass'))";
$result=mysql_query ($query) or die (error ($script,$login,$pass,$db));

//Создаем базу данных с именем, совпадающим с логином пользователя.
$query="create database $login";
$result=mysql_query ($query) or die (error ($script,$login,$pass,$db));

//Предоставляем пользователю все привилегии на эту БД.
Естественно,кроме grant.
$query="grant all privileges on $login.* to $login identified by '$pass'";
$result=mysql_query ($query) or die (error ($script,$login,$pass,$db));

//Теперь нужно удалить из таблицы записи, где host='%',если
таковые имеются.
$query="delete from user where host='%'";
$result=mysql_query ($query) or die (error ($script,$login,$pass,$db));

//И назнаначаем пользователю в качестве хоста localhost,
т.к. скрипт выполняется на нем же. 
Это удобно, т.к. не нужно вводить множество информации о пользователях если доступ к
БД происходит по сети и из различных подсетей,
не говоря уже о доступе через интернет.
$query="update db set host='localhost' where user='$login'"; $result=mysql_query ($query) or die (error ($script,$login,$pass,$db)); //И, наконец, выводим информацию на страницу. print_header (); ?> <p align=right>| <a href="<?php echo $script ?>">Enter to database</a> | <p><h2>Hi,<font size=4 color="0000ff"><?php echo $login ?></font>!</h2> <p>You were successfuly registered in database. <p>Your login:<?php echo $login ?> <br>Password:<?php echo $pass ?> <br>Database:<?php echo $login ?> <?php }

Следует еще привести листинг функций print_header () и error ().


function print_header () {
?>
<html><head><title>MySQL administrator</title>
<script language="javascript">
<!--
function fill () {
name="guest";
passwd="111";
document.form.login.value=name;
document.form.pass.value=passwd;
}
//-->
</script>
</head><style> A:link {font-family:arial;font-size:10pt;text-decoration:none;color:#0000ff;}
A:hover {font-family:arial;font-size:10pt;text-decoration:none;color:red;}";
A:visited {font-family:arial;font-size:10pt;text-decoration:underline;color:#000080;}
BODY {background-color:#f6f8fa;font-family:arial;font-size:10pt;color:#333300;}
TD {font-family:arial;font-size:10pt;color:#333300;}
TH {font-family:arial;font-size:10pt;color:#000080;font-weight:bold;}
H2 {text-align:center;color:blue;}
H4 {text-align:center;color:#000080;}
H5 {text-align:center;color:#000080;}
</style><body>
<p align=right><font face="Impact" size=7>
<font color="bfbfbf">M</font><font
color="aaaaaa">Y</font><font color="959595">S</font><font
color="7f7f7f">Q</font><font color="aaaaaa">L</font><font
color="bfbfbf">A</font><font color="aaaaaa">D</font><font
color="959595">M</font><font color="7f7f7f">I</font><font
color="aaaaaa">N</font> </font> <?php } //Функция error () используется для вывода ошибки соединения с БД. function error ($script,$login,$pass,$db) { ?> <h4>Error!</h4> <p><b><font size=3 color="0000ff">Message from MySQL received:</font><br><font color="ff0000"> <?php echo mysql_error (); ?></font> <p><center><?php echo home ($login,$pass,$db,$script) ?></center> <?php }

Вот и все. Регистрация завершена. В следующей статье будет рассмотрен вход в базу данных и отображение информации о таблицах.


Сайт: Ресурсы для web-программистов.    Written by Oleg Tryvol   2001
Повторная публикация 15.10.2001 @ 01:51



 :::::  Saule пишет 11.04.2009 @ 19:57 
Здравствуйте!
Я обращаюсь к Вам! Мне надо на сайте регистрировать пользователя и нашла Вашу статью, хотела сделать, но не получается, Полный листинг скрипта не могу скачать. Мы создали сайт нашей компании на php. Там теперь нужна регистрация на сайте. Вообще то от меня требует https аудентификацию сделать. Я толком не разбираюсь. И хотела начать с этого. Вы можете мне помочь, пожалуйста очень прошу...... Может у Вас есть полный скрипт, Вы можете мне отправить. Заранее Вам спасибо. Буду благодарна за Вашу помощь! Жду ответа с нетерпением.

С Уважением Ережева Сауле
Имя:
Email:
URL

Введите сумму двух чисел девять и шесть (девять+шесть=?)
Запомнить мою информацию

* Html запрещен* Ваш E-mail опубликован не будет.

Copyright © 2000-2001 WebScript.Ru nas@webscript.ru
Design © 2001 by Parallax Design Studio (aka Spectator.ru)
Все торговые марки и авторские права на эту страницу принадлежат их соответствующим владельцам.
Сгенерировано за: 0.0200741