PDA

View Full Version : نوشتن session



marziye_15
پنج شنبه 17 مرداد 1387, 23:59 عصر
سلام . من این کد را برای دکمه log in نوشتم . همونطور که میبینید از تابع session استفاده کردم . مشکل من اینه که نمیدونم چطوری از این کد استفاده کنم که داخل تمام صفحات این کاربر با همین username وpassword شناخته بشه و هر جا که نیاز به user name و pass word هست کاربر مجبور به وارد کردن دوباره ی اونها نباشه . ممنون میشم اگه کمکم کنید.



<?php
if(isset($_POST["login"]))
{
require_once("connect/connect.inc.php");
$username=$_POST["username"];
$password=$_POST["password"];
/* check each field for blank fields */
foreach($_POST as $field => $value)
{
if($value == "")
{
$blank_array[$field] = $value;
}
else
{
$good_data[$field]=strip_tags(trim($value));
}
} // end of foreach loop for $_POST
if(@sizeof($blank_array) > 0) // blank fields found
{
?>
<br><br><br><br>
<?php
echo "<font color='green' size='10' align='center' dir='rtl'>"."نام کاربری و پسورد خود را تکمیل نمایید". "</font> ";
/* redisplay form */
extract($blank_array);
extract($good_data);
//include('form_log.inc');
exit();
}// end if blanks found
$query = "SELECT `username` FROM `karbar`
WHERE (`username`='$username'
and password='$password')";
$result=mysql_query($query);
if($result and (mysql_num_rows($result)==0)) // if login unsuccessful
{
echo"کاربری با چنین مشخصات وجود ندارد ";
extract($_POST);
exit();
}
else {
$row=mysql_fetch_assoc($result);
$_SESSION[`name`]=$row["name"];
header("Location:uspage.php");
}
}
// end if submitted
else // first time script is run
{
$username = "";
$password = "";
}
?>

امید امرایی
جمعه 18 مرداد 1387, 00:23 صبح
برای استفاده از نشست ها (session) باید قبل از ارسال هرگونه هدر تابع session_start رو فراخوانی کنید تا به برنامه اعلام بشه که قراره از نشست استفاده بشه .





<?php

session_start();

if(isset($_POST["login"]))
{
require_once("connect/connect.inc.php");
$username=$_POST["username"];
$password=$_POST["password"];
/* check each field for blank fields */
foreach($_POST as $field => $value)
{
if($value == "")
{
$blank_array[$field] = $value;
}
else
{
$good_data[$field]=strip_tags(trim($value));
}
} // end of foreach loop for $_POST
if(@sizeof($blank_array) > 0) // blank fields found
{
?>
<br><br><br><br>
<?php
echo "<font color='green' size='10' align='center' dir='rtl'>"."نام کاربری و پسورد خود را تکمیل نمایید". "</font> ";
/* redisplay form */
extract($blank_array);
extract($good_data);
//include('form_log.inc');
exit();
}// end if blanks found
$query = "SELECT `username` FROM `karbar`
WHERE (`username`='$username'
and password='$password')";
$result=mysql_query($query);
if($result and (mysql_num_rows($result)==0)) // if login unsuccessful
{
echo"کاربری با چنین مشخصات وجود ندارد ";
extract($_POST);
exit();
}
else {
$row=mysql_fetch_assoc($result);
$_SESSION[`name`]=$row["name"];
header("Location:uspage.php");
}
}
// end if submitted
else // first time script is run
{
$username = "";
$password = "";
}
?>

marziye_15
جمعه 18 مرداد 1387, 17:23 عصر
ممنون حالا من از این کد توی صفحات بعدی چطوری استفاده کنم ؟ یعنی متغیر هاشو چطوری فراخوانی کنم که همه جا شناسایی بشه ؟

yaqubian
جمعه 18 مرداد 1387, 17:32 عصر
دوست عزیز
شما باید ابتدای هر صفحه دوباره سشن رو استارت کنین و بعد با دستور

if(!session_is_registered($loginname)) چک کنید که اگر نتیجه اجرای این شرط درست بود یعنی کاربر لاگین نکرده و باید به یه صفحه دیگه redirect بشه و در غیر اینصورت هم که مشخصه!
البته $loginname که من اینجا نوشتم همون متغیری که شما اون رو واسه جابجایی بین صفحات در نظر می گیرید و مقدار اون رو تو سشن قرار دادید.
موفق باشید

امید امرایی
جمعه 18 مرداد 1387, 18:36 عصر
ضمن تشکر از جناب yaqubian (http://barnamenevis.org/forum/member.php?u=798)

یه راهش اینه همچنان که جناب yaqubian (http://barnamenevis.org/forum/member.php?u=798) فرمودند چک ببینید نشست ایجاد شده یا نه.



if(isset($_SESSION['name']))
echo 'loggedin';
else
echo 'notloggedin';

marziye_15
سه شنبه 22 مرداد 1387, 19:00 عصر
خیلی ممنونم واقعا کمک خوبی بود .