Работа с MySQL. Вход в БД и отображение информации о таблицах.
В этой статье обсуждается процесс входа в БД после создания пользовательского аккаунта и отображения
ее содержимого, т.е. таблиц, если таковые существуют.
Итак,база данных создана, попытаемся войти в нее.Сразу оговорюсь-в моем случае в БД существует 3 типа пользователей:
- Root-администратор БД, имеющий абсолютно все привилегии во всех БД.
- Обычные пользователи, которые имеют привилегии только в своей БД, хотя root может дополнительно предоставить им привилегии в других БД.
- И третий пользователь-это guest. Поскольку к этому скрипту открыт публичный доступ в ознакомительных целях пользователю guest предоставленны права на вход в БД test. Там он может проверить возможности скрипта.
В зависимости от типа пользователя и вход в БД будет осуществляться по-разному. Генерируем форму для входа.
print_header ();
?>
<p><h2>Login.</h2>
<p align=center><b><font size=2 color="000080">If you are registered user,enter your user name
and password.<br>
If you aren't registered and want to see demo version,please click</font>
<font size=2 color="0000ff">Guest</font> and <font size=2 color="0000ff">Enter</font></b>
<form action=" <?php echo $script ?>" name="form" method="POST">
<table align=center>
<tr><td>
<tr><td><b> Login:</b><td><input type="text" name="login" size=20>
<tr><td><b>Password:</b><td><input type="password" name="pass" size=20>
<tr><td> <td>< input type="radio" name="status" value="reg" checked>Registered user
<tr><td> <td> <input type="radio" name="status" value="guest" onClick="fill()">Guest
<tr><td colspan=2><input type=" hidden" name="action" value="enter">
<tr><td colspan=2><input type=" hidden" name="verify" value="1">
<tr><td colspan=2 align=center> <input type="submit" value="Enter"> <input type="reset"
value="Clear">
<tr><td> </table>
Если пользователь зарегистрирован в БД, он вводит свой логин и пароль и попадает в свою БД. Если нет-щелкает на Guest, и попадает в БД test. Пароль для гостя вводится автоматически.
Для соединения с БД используется функция connect (), т.к.соединяться придется не раз.
function connect ($hostname,$login,$pass,$db) {
mysql_connect($hostname,$login,$pass) OR die("Incorrect username or password");
mysql_select_db($db) OR die ("Access denied !");
}
Проверяем имя пользователя.
if ($verify) {
//
if ($change) {
connect ($hostname,$login,$pass,$db);
print_header ();
}
//
else {
$hostname="localhost";
if ($status=="reg") {
//
if ($login=="root") {
$db="mysql";
} else {
$db=$login;
}
}
//
elseif ($status=="guest") {
$db="test";
$login="guest";
$pass="111";
}
//
mysql_connect($hostname,$login,$pass) OR die("Incorrect username or password");
mysql_select_db($db) OR die ("Access denied !");
print_header ();
}
?>
<h2> Database:<?php echo $db ?></h2>
<?php
//
if ($login=="root") {
//
$dbs=mysql_list_dbs ();
$num=mysql_num_rows ($dbs);
//
if ($num>1) {
?>
<form action="<?php echo $script ?>" method="POST">
<input type="hidden" name="action" value="enter">
<input type="hidden" name="hostname" value="<?php echo $hostname ?>">
<input type="hidden" name="login" value=" <?php echo $login ?>">
<input type="hidden" name="pass" value=" <?php echo $pass ?>">
<input type="hidden" name="verify" value="1">
<p align=right><b>Databases:</b> <select name="db"><option></option>
<?php
for ($i=0;$i<$num;$i++) {
echo "<option>".mysql_db_name ($dbs,$i)."</option>";
}
echo "</select>";
?>
<input type="submit" name="change" value="Go"></form><br>
<table><tr><td>
| <a href="<?php echo $script ?>?action=enter&ac=change_pswd&login= <?php echo $login ?>&
pass=<?php echo $pass ?>
&hostname=<?php echo $hostname ?>&db=<?php echo $db ?>">Change password</a> |
<a href="<?php echo $script ?>?action=enter& >ac=drop_db&login= <?php echo $login ?>&
pass=<?php echo $pass ?>
&hostname=<?php echo $hostname ?>&db=mysql"> >Drop database</a> | <a href="<?php echo $script ?>">
Exit</a> |</table>
<?php
}
}
else {
mysql_connect("localhost","root",$rootpass) OR die("Incorrect username or password");
mysql_select_db("mysql") OR die ("Access denied !");
$query="select db from db where user='$login'";
$result=mysql_query ($query) or die (error ($script,$login,$pass,$db));
$num=mysql_num_rows ($result);
if ($num>=1) {
while ($row=mysql_fetch_array ($result)) {
$dbs[]=$row["db"];
}
}
$query="select db from tables_priv where user='$login'";
$result=mysql_query ($query) or die (error ($script,$login,$pass,$db));
$num=mysql_num_rows ($result);
if ($num>=1) {
while ($row=mysql_fetch_array ($result)) {
$dbs[]=$row["db"];
}
}
$query="select db from columns_priv where user='$login'";
$result=mysql_query ($query) or die (error ($script,$login,$pass,$db));
$num=mysql_num_rows ($result);
if ($num>=1) {
while ($row=mysql_fetch_array ($result)) {
$dbs[]=$row["db"];
}
}
?>
<form action="<?php echo $script ?>" method="POST">
<input type="hidden" name="action" value="enter">
<input type="hidden" name="hostname" value="<?php echo $hostname ?>">
<input type="hidden" name="login" value=" <?php echo $login ?>">
<input type="hidden" name="pass" value=" <?php echo $pass ?>">
<input type="hidden" name="verify" value="1">
<input type="hidden" name="change" value="1">
<p align=right><b>Databases:</b> <select name="db"><option></option>
<?php
for ($i=0;$i<count ($dbs);$i++) {
echo "<option>".$dbs[$i]."</option>";
}
?>
<input type="submit" value="Go"></form>
<p align=right>| <a href="<?php echo $script ?>?action=enter&ac=change_pswd&login=
<?php echo $login ?>&pass=<?php echo $pass ?>
&hostname=<?php echo $hostname ?>&db=<?php echo $db ?>">Change password</a> |
<a href="<?php echo $script ?>">Exit</a> |
<?php
}
//
$list=mysql_list_tables($db);
$count=mysql_num_rows($list);
//
if ($page=="") {
$page=0;
}
$limit=40;
$pages=ceil($count/$limit);
$begin=$page*$limit;
$next=$begin+$limit;
if ($next>$count) {
$next=$begin+($count-$begin);
}
//
if ($count>0) {
?>
<p><table border=1 cellspacing=0 bgcolor="e6e8fa" bordercolor="000000" width=90%
align=center><tr bgcolor="bbbbbb">
<th>Table</th><th colspan=6>Actions</th><th>Records</th>
<?php
for ($i=$begin;$i<$next;$i++) {
$tb_names[$i]=mysql_tablename($list,$i);
echo "<tr><td><font color='000080'>".$tb_names[$i]."</font></td>";
?>
<td><a href="<?php echo $script ?>?action=do_table&do=browse&tb_name=
<?php echo $tb_names[$i] ?>&db=<?php echo $db ?>&hostname=<?php echo $hostname ?>&
login=<?php echo $login ?>&pass=<?php echo $pass ?>">Browse</a></td>
<td><a href="<?php echo $script ?>?action=do_table&do=select&tb_name=
<?php echo $tb_names[$i] ?>&db=<?php echo $db ?>&hostname=<?php echo $hostname ?>&
login=<?php echo $login ?>&pass=<?php echo $pass ?>">Select</a></td>
<td><a href="<?php echo $script ?>?action=do_table&do=insert&tb_name=
<?php echo $tb_names[$i] ?>&db=<?php echo $db ?>&hostname=<?php echo $hostname ?>&
login=<?php echo $login ?>&pass=<?php echo $pass ?>">Insert</a></td>
<td><a href="<?php echo $script ?>?action=do_table&do=tbl_properties&tb_name=
<?php echo $tb_names[$i] ?>&db=<?php echo $db ?>&hostname=<?php echo $hostname ?>&
login=<?php echo $login ?>&pass=<?php echo $pass ?>">Properties</a></td>
<td><a href="<?php echo $script ?>?action=do_table&do=empty&tb_name=
<?php echo $tb_names[$i] ?>&db=<?php echo $db ?>&hostname=<?php echo $hostname ?>&
login=<?php echo $login ?>&pass=<?php echo $pass ?>">Empty table</a></td>
<td><a href="<?php echo $script ?>?action=do_table&do=drop&tb_name=
<?php echo $tb_names[$i] ?>&db=<?php echo $db ?>&hostname=<?php echo $hostname ?>&
login=<?php echo $login ?>&pass=<?php echo $pass ?>">Drop table</a></td>
<td align=center><?php echo num_records ($db,$tb_names[$i]) ?></td></tr>
<?php
}
echo "</table>";
//
if ($count>$limit) {
echo "<p align=right>";
for ($i=0;$i<$pages;$i++) {
$a=$i+1;
?>
<font color="0000ff">|</font><a href="<?php echo $script ?>?action=enter&
login=<?php echo $login ?>&pass=<?php echo $pass ?>
&db=<?php echo $db ?>&verify=1&page=<?php echo $i ?>"><?php echo $a ?></a>
<?php
}
}
}
//Если же БД пуста, не выводим ничего.
else {
echo "<h4>No tables found.</h4>";
}
Завершает страницу вывода еще несколько окон форм, позволяющих выполнить SQL-запрос, вставить данные из текстового
файла и создать новую таблицу. Это будет описано в следующих статьях.
?>
<h4>Commit SQL-query</h4>
<p><center><form action="<?php echo $script ?>" method="POST">
<input type="hidden" name="action" value="do_table">
<input type="hidden" name="do" value="qsql">
<input type="hidden" name="hostname" value="<?php echo $hostname ?>">
<input type="hidden" name="login" value="<?php echo $login ?>">
<input type="hidden" name="pass" value="<?php echo $pass ?>">
<input type="hidden" name="db" value="<?php echo $db ?>">
<textarea name="sql_query" rows=5 cols=25 wrap="virtual"></textarea>
<p><input type="submit" value="Commit">
</form></center>
<h4>Insert data from text file.</h4>
<p><center><form action="<?php echo $script ?>" method="POST" enctype="multipart/form-data">
<input type="hidden" name="action" value="load">
<input type="hidden" name="hostname" value="<?php echo $hostname ?>">
<input type="hidden" name="login" value="<?php echo $login ?>">
<input type="hidden" name="pass" value="<?php echo $pass ?>">
<input type="hidden" name="db" value="<?php echo $db ?>">
<b>Choose text file:</b> <input type="file" name="file">
<p><input type="submit" value="Load">
</form></center>
<h4>Create new table.</h4>
<table align=center>
<tr><td colspan=2><form action="<?php echo $script ?>" method="GET">
<tr><td colspan=2><input type="hidden" name="action" value="do_table">
<tr><td colspan=2><input type="hidden" name="do" value="create_new">
<tr><td colspan=2><input type="hidden" name="hostname" value="<?php echo $hostname ?>">
<tr><td colspan=2><input type="hidden" name="login" value="<?php echo $login ?>">
<tr><td colspan=2><input type="hidden" name="pass" value="<?php echo $pass ?>">
<tr><td colspan=2><input type="hidden" name="db" value="<?php echo $db ?>">
<tr><td><b>Table name:</b><td><input type="text" name="new_tbl" size="20">
<tr><td><b>Number of columns:<td><input type="text" name="col_num" size="3">
<tr><td colspan=2 align=center><input type="submit" value="Create"></form></table>
<?php
Все, задача выполнена. Мы вошли в БД, вывели информацию о таблицах. В следующей статье будет рассмотрено, как изменить пароль пользователя.
Сайт: Ресурсы для web-программистов.
Written by Oleg Tryvol 2001
Повторная публикация 16.10.2001 @ 12:09
|