Меню главная>>>Статьи и учебники>>>Работа с MySQL. Вход в БД и отображение информации о таблицах
 
  • Главная
  • Уроки PhotoShop
  • Статьи и учебники
  • JavaScript скрипты
  • Софт Web-мастера
  • Шаблоны сайтов
  • Стройматериалы
  • Форум для web-мастеров
  • Гостевая
  • Карта сайта
  • Хостинг

  • Подпишитесь на нашу рассылку для web-мастеров:
    Форма для подписки на
    Maillist.ru

    Определение тИЦ и PR вашего сайта


    Введите адрес сайта, тИЦ и PR которого вы хотите определить

    без http:// !!!
    http://
    Автор: OlegTr
    Сайт:
    Когда добавлено: 19.07.07

    Работа с MySQL. Вход в БД и отображение информации о таблицах

    Работа с 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>&nbsp; <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>&nbsp;&nbsp;<td><
    input type="radio" name="status" value="reg" checked>Registered user <tr><td>&nbsp;&nbsp;<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">&nbsp;&nbsp;
    <input type="reset" value="Clear"> <tr><td>&nbsp;</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") { //Если это пользователь БД,
    >то root попадает в БД mysql, а обычный пользователь-в свою БД.
    if ($login=="root") { $db="mysql"; } else { $db=$login; } } //Если это гость, его БД-test. 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
    //Вид выводимой страницы также будет разным для root и обычного пользователя. Для root показывается список всех БД, существующих на сервере, и он может переходить в любую из них, выбрав из списка. Для обычного пользователя показывается только его БД, а если ему предоставлены права на вход в другие БД, то и список этих БД.
    Если это root.
    if ($login=="root") {
    
    //Cписок баз данных и подсчет их количества.
    $dbs=mysql_list_dbs ();
    $num=mysql_num_rows ($dbs);
    
    //Если количество БД больше 1.
    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>&nbsp;<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 } }
    Как видим, root может изменять пароли всем пользователям, удалять базы данных, в то время как обычный пользователь не может удалять БД, и может изменить только свой пароль.
    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>&nbsp;<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 }
    Следует отметить, что для обычного пользователя выборка списка БД производится из 3-таблиц: db,tables_priv и columns_priv. Это сделано потому, что пользователю может быть предоставлен доступ к какой-нибудь одной таблице в другой БД, или даже к одной колонке какой-либо таблицы, а эта информация не показывается в таблице db.
    //Дальше выводим список таблиц БД.
    $list=mysql_list_tables($db);
    $count=mysql_num_rows($list);
    
    //Устанавливаем количество выводимых записей равным 40
    > и вводим переменные для навигации по страницам.
    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>&nbsp;<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
    

    Все, задача выполнена. Мы вошли в БД, вывели информацию о таблицах. В следующей статье будет рассмотрено, как изменить пароль пользователя.



    страница прочитана 24 раза