Webmaster общности: Predpriemach.com | SearchEngines.bg

    PHP и MySQL : Регистрация и автентикация на потребители

    Здравейте ,
    вече има скрипт за регистрация , но той е без запис в база данни (MySQL).
    Сега ще разгледаме една проста система за регистрация и разпознаване/login чрез запис в база данни
    Ще имаме следните файла :
    register.phplogin.phppro.php logout.php и createtable.php
    Първо обаче трябва да се създаде таблица в базата данни:
    createtable.php

    <?php
    //connect към Вашия MySQL server използувайки Вашите servername , username
    //и password
    $conn = mysql_connect("localhost" , "root" , "");
    //ако не можете да се connect-нете показва error message и exit
    if ($conn == false)
    {
    echo mysql_errno().": ".mysql_error()."<BR>";
    exit;
    }
    //създава таблица с име users , със съдържание на 3 полета .
    $query = "CREATE TABLE `users` (
    `id` int(5) NOT NULL auto_increment,
    `username` varchar(50) NOT NULL default '',
    `password` varchar(32) NOT NULL default '',
    UNIQUE KEY `id` (`id`)
    ) TYPE=MyISAM AUTO_INCREMENT=1" ;
    
    //съхранява това в $result променливата
    //тук "test" е името на базата данни и е примерно зададена ако искате може да я промените
    $result = mysql_db_query ("test", $query);
    //ако е успешно показва съобщение
    if ($result)
    echo "Table 'users' was successfully created!";
    //ако е неуспешно показва error message
    else
    echo mysql_errno().": ".mysql_error()."<BR>";
    mysql_close ();
    ?>

    таблицата е готова вече може да почнем съществената част..
    register.php

    <?PHP
    if($_POST['register'] == 1)
    {
    
    $username = trim($_POST['username']);
    //ако не искате паролата да е кодирана махнете md5() от реда
    $password = md5(trim($_POST['password']));
    
    // връзка с базата данни и проверка за вече съществуващ потребител
    mysql_connect("localhost","root","") or die ( 'Грешка при свързване с MySQL!' );
    //ако базата данни е друга променете "test"
    mysql_select_db(test) or die( "Не мога да намеря базата");
    $query="SELECT * from users where username like '$username' ";
    $result=mysql_query($query);
    mysql_close();
    
    
    //ако вече има потребител със същото име какво да изписва
    if (mysql_num_rows($result)>0)
    {echo "Има вече такъв потребител.";exit;}
    
    //връзка с базата данни и записване на въведените данни
    mysql_connect("localhost","root","") or die ( 'Грешка при свързване с MySQL!' );
    //ако базата данни е друга променете "test"
    mysql_select_db("test") or die ( 'Грешка при връзката!' );
    $query = mysql_query("INSERT users (username, password) VALUES ( '$username', '$password')");
    
    // Ако има грешка, да се покаже
    if(mysql_affected_rows() == 0)
    {
    echo mysql_error();
    }
    else
    {
    echo "Благодарим Ви! Регистрацията Ви е успешна! Натиснете <a href=\"login.php\">тук</a> за да влезете с потребителското име и парола.";
    }
    }
    else
    {
    ?>
    <html>
    <head>
    <title>Register</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    </head>
    <body>
    <form name="form1" method="post" action="">
    <input name="register" type="hidden" value="1">
    <table width="200" border="1">
    
    <tr>
    <td>Потребител</td>
    <td><input type="text" name="username"></td>
    </tr>
    <tr>
    <td>Парола</td>
    <td><input type="password" name="password"></td>
    </tr>
    <tr align="center">
    <td colspan="2"><input type="submit" name="Submit" value="Запиши"></td>
    </tr>
    </table>
    </form>
    </body>
    </html>
    <?
    }
    
    ?>

    би трябвало да няма проблеми и всичко да се е записало в базата данни
    сега преминаваме към login скрипта..
    login.php

    <?
    session_start();
    ?>
    <?PHP
    
    if($_POST['login'] == 1)
    {
    $username = trim($_POST['username']);
    // кодиране на паролата s md5() ако при регистрацията е махнато и тук задължително трябва да с емахне
    $password = md5(trim($_POST['password']));
    
    // Свързване с MySQL
    $conn = mysql_pconnect("localhost","root","") or die ( 'Грешка при свързване с MySQL!' );
    
    // Връзка с базата за данни
    mysql_select_db("test") or die ( 'Грешка при връзката!' );
    
    // Запитване към MySQL
    $query = mysql_query("SELECT * FROM users WHERE username = '$username' AND password = '$password' LIMIT 1");
    
    
    // Ако са грешни паролата или потребителското име, няма намерен резултат
    if(mysql_num_rows($query) == 0)
    {
    echo "Грешна парола или потребителско име!";
    }
    else
    {
    $row = mysql_fetch_array($query);
    echo "Здравейте ".$row['username']."! Приятно сърфиране!
    
    
    ";
    echo "<br><a href=pro.php>NEXT</a>";
    }
    }
    else
    {
    //създава се сесиина променлива с потребителското име
    session_register('username');
    $_SESSION['username'] = $username;
    ?>
    <html>
    <head>
    <title>Login</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    </head>
    <body>
    <form name="form1" method="post" action="">
    <input name="login" type="hidden" value="1">
    <table width="200" border="0">
    <tr>
    <td>Потребител</td>
    <td><input type="text" name="username"></td>
    </tr>
    <tr>
    <td>Парола</td>
    <td><input type="password" name="password"></td>
    </tr>
    <tr align="center">
    <td colspan="2"><input type="submit" name="Submit" value="Влез"></td>
    </tr>
    </table>
    </form>
    </body>
    </html>
    <?
    }
    ?>

    Следващата страница има за цел да ви „познае“ по създадената сесиина променлива
    pro.php

    <?
    session_start();
    //Проверява има ли отворена сесия и ако няма ни изкарва "Нямате достъп до тази страница!"
    $_SESSION['username'] = $username;
    if (isset($HTTP_SESSION_VARS['username']))
    {
    echo "<a href=\"logout.php\">logout</a>". $username;
    } else { echo "Нямате достъп до тази страница!";
    
    exit;
    }
    ?>

    С този скрипт ще може да проверите дали съществува сесиина променлива и каква стойност има тя.Ако е създадена сесиина променлива тя ще допусне потребителя до съдържанието и ще може да разбере кой е потребителя по стойноста на сесиина променлива.
    Със следващият скрипт е с цел да премахне сесиината променлива т.е. както сте виждали в много сайтове така наречения изход/logout
    logout.php

    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <?
    
    session_start();
    header( 'refresh: '.(2).'; url= '. 'index.php' );
    if(!isset($_REQUEST['logmeout'])){
    session_unset();
    session_destroy();
    if(!session_is_registered('username')){
    echo "<center><font color=red><strong>Излязахте успешно! След <font color=gray><b>2</b><font color=red> секунди ще се върнете в началото</strong></font></center><br />";
    
    }
    }
    
    ?>

    Оставете коментар