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 />";

}
}

?>

Все още няма онлайн демо ако имам възможност скоро ще направя.

/ Трябва да сте регистриран за да напишете коментар /
От: bazooka21
0:15 13-02-2011
Здравейте,
приложих горния код, но когато вляза с логин страницата с името и паролата, с които съм се регистрирал, ми излиза съобщение "Нямате достъп до тази страница!"
Нещо не е направено както трябва, щом не допуска регистрираните потребители...
1