Помогни ни да направим Uroci.net по - богат! Добави урок

Прост login със сесий

PHP » PHP
skus   трудност:    видян: 16042

Тук ще създадем проста система за логване като използваме 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.

Надявам се да съм бил полезен с тази тема главно на някой от начинаещите в тази област.



Коментари (16)

squall на 24.09 2006 в 13:32ч.
Доста добре. Но мисля, че няма да е лошо да се добави след
$q2 = mysqL_query("UPDATE `log` SET sesia='' WHERE ime='$name'");
в logout.php и следното:
session_unset();
session_destroy();
skus на 24.09 2006 в 16:01ч.
Да и това е добре да се добави, но мисля, че след като в mysql я няма вече тази сесия, то няма нужда да се унищожава и сесията на потребителя. Какъв е проблема да използва същата сесийна променлива ако реши да се логне втори път, преди да е изтекла ?
squall на 24.09 2006 в 18:29ч.
Принципно няма абсолютно никакъв проблем и така, това си е въпрос на избор за автоматично унищожаване на сесиите след изход от потребителя.
skus на 25.10 2006 в 19:06ч.
Ако имаш предвид формата където въвеждаш данните тя е изцяло html, но за да ти работи системата си трябва PHP и MySQL. А за piczo.com не мога да ти кажа нищо, търси хост с подръжка на php.
-----
След като направиш файловете както е описано в урока, стартираш index.php и попълваш формичката с името и паролата (за теста те са "az" и "parolatami"), след това натискаш влез и login.php ще обработи инфото и ще ти изкара дали си логнат или не, logout.php ще те изкара от цялата работа а след 'echo "".$my_ime."";' във test.php можеш да поставиш всичкия твой код, който изисква регистрация.
//Надявам се знаете, че системата няма да работи на обикновен безплатен хост без MySQL...
Everlazt на 08.11 2006 в 09:50ч.
ето какво се получава #1046 - No database selected
grafdevil на 13.11 2006 в 09:30ч.
аз май съм най начинаещия в тази област и незнам как да създам база данни :(
моля кажете как става
skus на 21.11 2006 в 00:53ч.
Ми от phpmyadmin съ създаваш база, има си поле точно по средата на екрана. Създаваш база, пускаш заявката в нея и сменяш това mysql_select_db("login");
със името на твоята база данни.
xboy на 28.11 2006 в 14:57ч.
Знам, че ще прозвучи адски тъпо, за тези от Вас ,които са "навътре с материала",но какво да се прави - все пак ако не питаме как ще се научим ....
Е етого и моя въпрос : как точно трябва да създам таблицата в MySQL, как трябва да наименувам таблицата, какви да са колоните и.т.н. Тъй като не съм направил "връзка" база данни ми се изписва следното съобщение, при опит да пусна скрипта в действие :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:program fileseasyphp1-8wwwuprajnenielogin systemlogin.php on line 19

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:program fileseasyphp1-8wwwuprajnenielogin systemlogin.php on line 29
Няма такъв потребител !


Моля - ПОМОГНЕТЕ НА НАЧИНАЕЩИЯ - признавам нямам си и понятие от MySQL или PHP, но за сметка на това имам огромното желание да науча нещичко !!!

Благодаря Ви предварително !
charmed на 16.01 2007 в 10:03ч.
Ами то добре това, но как да се регистра потребителя? За един единствен човек не е нужно чак толкова сложен скрипт.Аз съм пробвал по прост без база данни със регистрация и смяна а данните на профила, но той пък не е така добър относно сигурноста на данните.
super2 на 16.03 2007 в 21:37ч.
0) {
showheader("User Name Taken !");
?>
We are sorry to inform you that the User Name Is already Taken.

You have registered.
User Name:

Password:

Your Two Passwords Did Not Match

Само си сменете $name с $ime
jivkodonev на 23.10 2007 в 01:02ч.
Значи нов съм и то много.
искам да попитам таблицата
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', '');

как трябва да я кръстя какво име и с какво разширение.
neronvylka на 24.03 2009 в 10:27ч.
Ако мислиш направо да я копираш си я сложи в текстов документ с разширение sql и след това от phpmyadmin си я експортни, а може направо да си създадеш от там нова база данни с каквито имена си искаш ти. Успех !!!
smoka97 на 25.03 2009 в 22:56ч.
аз ще попитам същото като charmed "как да се регистра потребителя"
neronvylka на 06.04 2009 в 21:03ч.
Системата работи, ама наистина няма как да се регистрират потребителите.Няма да е зле да се сложи и register.php ;) А за тези, на които им дава грешка, тя е в тях :)
esolle на 02.05 2009 в 04:20ч.
Ето ви регформа за тази логин ситема:

Това е всичко причтели:–)
ceko98 на 09.06 2011 в 15:41ч.
Хора помогнете не мога да вляза в phpmyadmin как става аз пиша така:
http://localhost/phpmyadmin как става плс пи6ете на скаип : gstrafe

Регистрирайте се, за да добавите коментар


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: Национален Бизнес | Bomba.bg | IT Новини | Диплома.бг | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | Фото Форум | Spodeli.net | Фото-Култ | Atol.bg | Elmaz.com | MobileBulgaria.com | Казанлък.Com