Интернэт хэрэглэх явцад cookie гэсэн хэллэг багагүй тааралддаг (цахим хөтөчийн түүх(history)-г цэвэрлэхэд clear cookie гэх мэт хэллэг тааралддаг). Вэб урлахад суралцаж байгаа бол энэ ойлголтыг мэддэг, програмлчилж оновчтой ашиглаж сурах нь зөв юм.
Cookie гэдгийг "хэрэглэгчийн компьютер дээр хадгалагдаж, цахим хөтөчөөр дамжуулан вэб үзэх(сервэрт холбогдох) үед сервертэй 'ойлголцох' мэдээлэл" гэж энгийнээр тайлбарлаж болох юм. Вэб програмд cookie-г ашиглах жишээг дурдвал: нэвтрэх form-г бөглөх хэсэгт "Remember me" буюу "Энэ компьютерт намайг сана" гэсэн сонголт, Yahoo гэх мэт сайтад энэ боломж нь "14 хоног үйлчилнэ" гэх мэт тайлбар харагддаг. Эдгээр боломжуудыг cookie-н тусламжтай хэрэгжүүдэг
дээрхи зураг дээрээс cookie-г ашиглах зарчмыг харж болно.
PHP хэлэнд cookie-г үүсгэхдээ setcookie() функцийг ашигладаг.
энэ фунцээр дамжуулах аргументууд нь
нэр -> Утга -> (амьдрах) Хугацаа -> Зам (сайтын) -> Domain -> Хамгаалтын төрөл
гэсэн дараалалтай байна. Гэхдээ дээрхи 6 параметрийг бүгдийг ашиглах албагүй, setcookie("username","ganaa"); гээд 2 параметрээр ч үүсгэж ашиглаж болно.
Одоо cookie-г PHP дээр нэвтрүүлэх жишээнүүдийг туршъя.
cookie хувьсагчид хандахдаа. $_COOKIE[] массивт элемэнтын нэрээр индекс болгон хандах байдлаар ажилладаг.
гэсэн код(хуудас)-ыг дуудаж ажиллуулсаны дараа.
кодыг ажиллуулж үзвэл
The stored username is ganaa.
гэсэн мэдээлэл дэлгэцэнд хэвлэгдэх болно.
Cookie-г устгахдаа setcookie() функцийг мөн ашиглана.
username-д хоосон утга оноогоод хүчинтэй байх хугацааг өнгөрсөн хугацаанд зааж өгөхөөр хүчингүй болох юм.
Одоо cookie ашиглан Remember me сануулах жишээг үзье.
index.php
login.php
check.php
welcome.php
logout.php
Cookie гэдгийг "хэрэглэгчийн компьютер дээр хадгалагдаж, цахим хөтөчөөр дамжуулан вэб үзэх(сервэрт холбогдох) үед сервертэй 'ойлголцох' мэдээлэл" гэж энгийнээр тайлбарлаж болох юм. Вэб програмд cookie-г ашиглах жишээг дурдвал: нэвтрэх form-г бөглөх хэсэгт "Remember me" буюу "Энэ компьютерт намайг сана" гэсэн сонголт, Yahoo гэх мэт сайтад энэ боломж нь "14 хоног үйлчилнэ" гэх мэт тайлбар харагддаг. Эдгээр боломжуудыг cookie-н тусламжтай хэрэгжүүдэг
дээрхи зураг дээрээс cookie-г ашиглах зарчмыг харж болно.
PHP хэлэнд cookie-г үүсгэхдээ setcookie() функцийг ашигладаг.
<?php
setcookie ( name , value , expire , path, domain , secure );
?>
энэ фунцээр дамжуулах аргументууд нь
нэр -> Утга -> (амьдрах) Хугацаа -> Зам (сайтын) -> Domain -> Хамгаалтын төрөл
гэсэн дараалалтай байна. Гэхдээ дээрхи 6 параметрийг бүгдийг ашиглах албагүй, setcookie("username","ganaa"); гээд 2 параметрээр ч үүсгэж ашиглаж болно.
Аргумент | Тайлбар | Жишээ |
Хандах нэр | Утга оноох, хандалт хийх зэрэгт ашиглана | username |
Утга | Cookie хувьсагчид харгалзах утга | ganaa |
Хугацаа | Cookie-н хүчинтэй хугацаа | time()+60*60*24*14 гэвэл 14 хоногийн туршид үйлчилнэ гэсэн үг. (ceкундээр хэмжигдэнэ) |
path буюу зам | Вэб сайтын аль хэсэгт үйлчлэхийг заана. Анхны утга нь / байдаг(тухай сайтын бүх хуудсанд үйлчилнэ гэсэн үг). | jishee.com сайтын jishee.com/test хэсэгт хүчинтэй байлгана гэвэл /test гэж зааж өгч болно. |
Domain | Аль дэд домэйн (subdomain) -д үйлчлэхийг заана. | jishee.com сайтын www.jishee.com-д л хүчинтэй байлгахыг хүсвэл www.jishee.com гэж зааж өгч болно. Бүх дэд домэйнуудад хүчинтэй байлгах бол .jishee.com гэж зааж болно. |
Secure | Хамгаалалтын зэрэг. 0 1 гэсэн хоёр утгын нэгийг авна. 1 утгыг авсан бол HTTPS хамгаалагдсан холболтыг ашиглагдана. | |
Одоо cookie-г PHP дээр нэвтрүүлэх жишээнүүдийг туршъя.
cookie хувьсагчид хандахдаа. $_COOKIE[] массивт элемэнтын нэрээр индекс болгон хандах байдлаар ажилладаг.
<?php
setcookie("username","ganaa");
echo 'Cookie created.';
?>
гэсэн код(хуудас)-ыг дуудаж ажиллуулсаны дараа.
<?php
if (!isset($_COOKIE['username']))
{
echo ("Opps, the cookie isn't set!");
}
else
{
echo ("The stored username is ". $_COOKIE['username'] . ".");
}
?>
кодыг ажиллуулж үзвэл
The stored username is ganaa.
гэсэн мэдээлэл дэлгэцэнд хэвлэгдэх болно.
Cookie-г устгахдаа setcookie() функцийг мөн ашиглана.
<?php
setcookie("username","", time()-10 );
echo 'Rosebud.';
?>
username-д хоосон утга оноогоод хүчинтэй байх хугацааг өнгөрсөн хугацаанд зааж өгөхөөр хүчингүй болох юм.
Одоо cookie ашиглан Remember me сануулах жишээг үзье.
index.php
<?php
header("Location: login.php");
?>
login.php
<?php
//header("text/html; charset");
session_start();
if(isset($_COOKIE['usercookie']) && isset($_COOKIE['passcookie'])){
$_SESSION['user']=$_COOKIE['usercookie'];
}
if(isset($_SESSION['user'])){
header("Location: welcome.php");
}
?>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
<title>Нэвтрэх хэсэг</title>
</head>
<body>
<form action="check.php" method="post" name="logform">
<table>
<tr>
<td>
Хэрэглэгчийн нэр:
</td>
<td>
<input type='text' name="user" />
</td>
</tr>
<tr>
<td>
Нууц үг:
</td>
<td>
<input type='password' name="pass" />
</td>
</tr>
<tr style='text-align:right;'>
<td>
<input type='checkbox' name='remember' />Намайг сана :)
</td>
<td>
<input type='submit' value="Нэвтрэх"/>
</td>
</tr>
</table>
</form>
</body>
</html>
check.php
<?php
session_start();
$username = "ganaa";
$password = "pass";
$user = $_POST['user'];
$pass = $_POST['pass'];
if($user == $username && $pass == $password){
$_SESSION['user'] = $user;
header("Location: welcome.php");
if(isset($_POST['remember'])){
setcookie('usercookie', $user, time()+3600);
setcookie('passcookie', $pass, time()+3600);
}
}else{
header("Location: login.php");
}
?>
welcome.php
<?php
session_start();
if(!isset($_SESSION['user'])){
header("Location: login.php");
}
?>
<html>
<head>
<title>Welcome <?php echo $_SESSION['user']; ?> </title>
</head>
<body>
<p>
<a href="logout.php">Log out</a>
</p>
</body>
</html>
logout.php
<?php
session_start();
if(isset($_SESSION['user'])){
unset($_SESSION['user']);
setcookie("usercookie", "", time()-3600);
setcookie("passcookie", "", time()-3600);
}
session_destroy();
header("Location: login.php");
?>
7 comments:
session,cookie-g ylgaag sn tailvarlad bichehgui yu?
Өмнө нь session-ы тухай энд бичиж байсан. 2ууланг нь уншвал ялгаа нь ойлгомжтой болох байх аа :)
За да энэ логин хийдэг хэсэгийг ашиглаж байгаа хүмүүс хакдуулсаан кк.
"За да энэ логин хийдэг хэсэгийг ашиглаж байгаа хүмүүс хакдуулсаан кк."
гэж бичсэн Anonymous-д ..
Кодыг ил зарлалаа гээд шууд хакдуулна гэсэн юм байхгүй. Харин энэ код алдаа цоорхойтой бол л хакдуулна.
Хэрвээ кодыг нь мэдлээ л бол шууд хакдаж болдог бол нээлттэй эх яаж энэ хүртэл хөгжсөн байх вэ?
altan dundaj boljee
Learning PHP шошго бүхий бүх бичлэгүүдийг уншив. Гансүхт үнэхээр талархав.
сайн уу гансүхээ . learning php маш их таалагдлаа
Post a Comment