Прост login със сесий.
Публикувана от ko6rata на March 10 2011 15:20:26

Разширена новина
Тук ще създадем проста система за логване като използваме PHP сесий.
Първо създайте подходяща база данни, аз съм я нарекъл "login".
Използвайте тази заявка:

CREATE TABLE `log` (
`ime` VARCHAR(20) NOT NULL,
`parola` VARCHAR(20) NOT NULL,
`sesia` VARCHAR(32) NOT NULL,
UNIQUE (`ime`)
)
TYPE = myisam;
INSERT INTO `log` (`ime`, `parola`, `sesia`) VALUES ('az', 'parolatami', '');

за да създадете таблица и потребител "az" с парола "parolatami" за теста.
Сега създайте index.php файл, който ще съдържа формата за логване:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>

<form action="login.php" method="POST">
Име:<br/>
<input type="text" name="ime"/><br/>
Парола:<br/>
<input type="password" name="parola"/><br/>
<input type="submit" value="Влез"/>
</form>
</body>
</html>

А сега и самия скрипт login.php:

<?php
//Стартираме сесията

session_start();
//Взимаме изпратените от формата парола и име

$ime = $_POST['ime'];
$parola = $_POST['parola'];
//Сега $ses е индивидуалната сесия на потребителя

$ses = session_id();
//Свързваме се с MySQL

mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("login");
//Проверяваме дали потребителя е логнат

$query = mysql_query("SELECT * FROM `log` WHERE sesia='$ses'");
$red = mysql_num_rows($query);
if ($red != NULL) {
echo "Потребителя е логнат като:<br/>";
$my_ime = mysql_result($query, "0", "ime");
echo "<b>".$my_ime."</b>";
echo "<br/><a href='logout.php'>Излез</a>";
}else{
//Потребителя не е логнат, тогава го логваме с името и паролата от формата

$query2 = mysql_query("SELECT * FROM `log` WHERE ime='$ime'");
$r = mysql_num_rows($query2);
if ($r != NULL) {
//Има такъв потребител, сега проверяваме и паролата

$query3 = mysql_query("SELECT * FROM `log` WHERE ime='$ime' AND parola='$parola'");
$r2 = mysql_num_rows($query3);
if ($r2 != NULL) {
//Всичко е наред, създаваме сесия

$query4 = mysql_query("UPDATE `log` SET sesia='$ses' WHERE ime='$ime' AND parola='$parola'");
//Потребителя е логнат изписваме поздрав

echo "Добре дошъл <b>".$ime."</b>, сесията ти е: <b>".$ses."</b>.";
echo "<br/><a href='logout.php'>Излез</a>";
}else{
echo "Грешна парола за потребител: <b>".$ime."</b> !";
}
}else{
echo "Няма такъв потребител !";
}
}
?>

Както виждате първо се създава сесия, а след това се проверява в MySQL, дали има такава и ако има на кой е.
Ако има сесия се изписва името на потребителя и от тук на татък е вашия код.
Ако няма потребител със такава сесия в базата, тогава се взимат името и паролата изпратени от формата и се търси човека с това име. Ако всичко е наред полето на сесията в MySQL се обновява с тази на потребителя и той е свободен да се разхожда из сайта :)

Сега да създадем скрипта за изход - logout.php:

<?php
session_start();
//Свързваме се с MySQL

mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("login");

//Логаутваме

$ses = session_id();
$q = mysql_query("SELECT * FROM `log` WHERE sesia='$ses'");
$r = mysql_num_rows($q);
if ($r != NULL) {
$name = mysql_result($q, "0", "ime");
$q2 = mysqL_query("UPDATE `log` SET sesia='' WHERE ime='$name'");
echo "Излязохте успешно";
}else{
echo "Не сте логнат";
}
?>

Тук се проверява сесията на потребителя и съответно се изтрива полето за сесия в MySQL.
Сега и test.php където ще проверим дали работи коректно цялата система:

<?php
session_start();
$ses = session_id();
//Свързваме се с MySQL

mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("login");

//Проверяваме дали потребителя е логнат

$query = mysql_query("SELECT * FROM `log` WHERE sesia='$ses'");
$red = mysql_num_rows($query);
if ($red != NULL) {
echo "Потребителя е логнат като:<br/>";
$my_ime = mysql_result($query, "0", "ime");
echo "<b>".$my_ime."</b>";
echo "<br/><a href='logout.php'>Излез</a>";
}else{
//Потребителя не е логнат
echo "Трябва да се логнете !";
}
?>

Ако всичко е наред отново се изписва името на потребителя и след него можете да поставите всичкия Ваш код, който изисква регистрация. Името на потребителя се съхранява в променливата $ime , паролата в $parola , а сесията в $ses.