PDA

View Full Version : استفاده از SESSION_$ در ای جکس



shekofeh
جمعه 23 فروردین 1387, 09:50 صبح
سلام.
من برای login کردن مدیر و کاربر در صفحه اصلی به مشکل برخوردم.
کد مربوط به وارد شدن کاربر یا مدیر را می گذارم ممنون میشم کمکم کنید:
در قسمت تابع سرور:



<?php
ob_start();
session_start();


require_once("includes/connect.inc.php");
include_once("agent.php");
function vorod($panel,$Puser,$Ppassword)
{


if($panel == 2 )
{
$query="select * from `person` where `Puser`='$Puser' and `Ppassword`='$Ppassword'; ";


$result=mysql_query($query);
if ( (mysql_num_rows($result))>0)
{
$row = mysql_fetch_object($result);
session_register('Puser');
session_register('Ppassword');
$_SESSION['Puser'] = $row -> Puser;
$_SESSION['Ppassword'] = $row -> Ppassword ;
$flag = 2;
}
return $flag;
}
else if ($panel==1)
{
$query="select * from `admin` where `auser`='$Puser' and `apassword`='$Ppassword' ;";


$result=mysql_query($query);
if ( (mysql_num_rows($result))>0)
{


$row = mysql_fetch_object($result);
session_register('auser');
session_register('apassword');


$_SESSION['auser'] = $row -> auser;
$_SESSION['apassword'] = $row -> apassword ;
$flag = 1;
}
return $flag;
}


}
?>


در جاوا اسکریپت:



<script>
function sub1()
{
panel=document.getElementById('panel').value;
Puser=document.getElementById('Puser').value;
Ppassword=document.getElementById('Ppassword').val ue;
agent.call('','vorod','callback',panel,Puser,Ppass sword);
}
function callback(flag)
{
if (flag==1)
{
window.location="admin.php";
}
else if(flag==2)
window.location="userpanel.php";
}
</script>


در html :



<FORM name=form method=post action="">
<input type="radio" value="1" name="panel">
<input type="radio" value="2" name="panel" checked="checked
">
<input name="button1" type="button" class="buttons" onClick="sub1();" value="ورود" width=84 height=22>

امید امرایی
جمعه 23 فروردین 1387, 19:54 عصر
"select * from `person` where `Puser`='$Puser' and `Ppassword`='$Ppassword'; ";
دوست من
1- فکر می کنم بهتره ابتدا مرور بیشتری روی ساختار نحوی SQL و همینطور PHP داشته باشید
مثال : در کد بالا اشتباهی وجود داره که بنده توی سورس های دیگری هم که شما گذاشتین دیدم . شما نباید در رشته ارسالی به mysql_query از ";" استفاده کنید .
اصلاح شده :


"SELECT * FROM person WHERE Puser = '$Puser' AND Ppassword ='$Ppassword'";

2- همیشه بهتره ابتدا session_start قبل از هر تابع دیگه ای فراخوانده بشه چرا که در صورتی که تابع ob_start یک هدر رو ارسال کنه session_start یک notic ایجاد و عملکردش دچار اختلال میشه و نیز چون ممکنه notic ها در تنظیمات سرور شما غیر فعال باشن شما از این اشکال اطلاع پیدا نمی کنید .

3 - نحوه استفاده شما از session_register صحیح نیست . آرگومان این تابع یک متغیره . در حالی که پارامتر ارسالی توسط شما یک رشته است .

session_register($Puser);4- اشکالات زمان اجرا رو هم میشه پیش بینی کرد . که به این روش نمی تونن حل بشن .
مثال : در کد جاوااسکریپت شما زمانی که یک متغیر رو بدون استفاده از کلمه کلیدی var در درون یک تابع تعریف می کنید باید بدونید که این متغیر به صورت global (سراسری و جهانی) تعریف میشه که با این نحوه کد نویسی شما بعید نیست برنامه رو دچار خطای منطقی بکنه .

Mah
شنبه 24 فروردین 1387, 07:32 صبح
سلام .
دوست عزیز جناب kassit (http://barnamenevis.org/forum/member.php?u=56730) کمی در پاسخ دادن تامل کن .
; کارکتر جدا کننده پرس و جوها در Mysql و به عبارتی PL- SQL می باشد .
بر طبق PHP Manual (http://ir2.php.net/manual/en/function.session-register.php) هم تابع session_register درست استفاده شده است .
چون این تابع یک رشته را به عنوان ورودی می گیرد و ورودی تاب در کد مزبور یک رشته است .

و دوست من shekofeh : (http://barnamenevis.org/forum/member.php?u=38468)
لطفاً خطای ایجاد شده یا مشکل کدتان را بگویید تا راحتتر بررسی شود .

من خودم تا آنجایی که بتوانم از Ajax استفاده می نمایم . اما برای Login استفاده از Ajax از نظر امنیتی مشکل ساز نیست .
مسائلی مثل این :
اگر مرورگر JavaScript را حمایت نکند یا غیر فعال باشد .
و ....

موفق باشید .

امید امرایی
شنبه 24 فروردین 1387, 19:22 عصر
شاید حق با شما باشه دوست من . من سعی می کنم ای موضوع رو مجددا بررسی کنم شما هم یه بار تست بکنید .

oxygenws
شنبه 24 فروردین 1387, 19:36 عصر
بر طبق PHP Manual (http://ir2.php.net/manual/en/function.session-register.php) هم تابع session_register درست استفاده شده است .
از session_register استفاده نکن. هر منبعی هم گفته از این روش استفاده کنی، بنداز دور!
روش ست کردن سشن اینه:

$_SESSION['name'] = value;

shekofeh
یک شنبه 25 فروردین 1387, 10:11 صبح
سلام.کد اصلاح شده من اینست ولی هنوز کار نمی کند::گریه:


<?php
ob_start();
session_start();
include_once("agent.php");
$agent->init();
function submit($Puser,$Ppassword)
{
$query="select * from `person` where (`Puser`='$Puser' and
`Ppassword`='$Ppassword');";

$result=mysql_query($query);
if ( (mysql_num_rows($result))>0)
{

$row=mysql_fetch_object($result);
$stat=$row->Plevel;
$type=$row->Ptype;
session_register('$user2');
session_register('$pass2');
$_SESSION['$user2']=$row->Puser;
$_SESSION['$pass2']=$row->Ppassword;
if (($stat=='advance') and ($type=='active'))
{
$flag='1';

}
else if($type=='active')
{
$flag='2';
}
}

}



?>

در جاوا اسکریپت:



<script type="text/javascript">
function send()
{
Puser=document.getElementById('Puser').value;
Ppassword=document.getElementById('Ppassword').val ue;
agent.call('','submit','callback_cb',Puser,Ppasswo rd);
}
function callback_cb(flag)
{
if (flag=='1')
{
window.location="a1.php";
}
else if (flag=='2'){
window.location="agent.php";}
}
</script>



و دیگر اینکه آیا فایلهایی(a1,agent) که در این کدها به آنها لینک داده شده باید کد ای جکس داشته باشند .:گریه:

mehran_337
یک شنبه 25 فروردین 1387, 10:50 صبح
بنده هم در مقاله ای خواندم که این دستور مربوط به نسخه های قبلی بوده و بهتره استفاده نشه.