PDA

View Full Version : درخواست کد چک کردن لوگین در صفحات با session



conter
پنج شنبه 06 مهر 1391, 16:58 عصر
با سلام خدمت همه دوستان عزیز من توی انجام یک پروژه گیر کردم من یک صفحه لوگین دارم که کاربر از اونجا وارد میشه حالا وقتی کاربر وارد شد به مسیر مورد نظر هدایت میشه فرض کنید مسیر لوگین این باشه : www.xyz.ir/login.php (http://www.xyz.ir/login.php) و صفحه ای که کاربر به اون هدایت میشه این : www.xyz.ir/students/index.html (http://www.xyz.ir/students/index.html)
حالا من میخوام توی صفحه student چک کنم ببینم که کسی که این صفحه رو لود کرده آیا کاربره یا لوگین شده یا نه چطور میتونم این کار رو انجام بدم من فقط در مورد session خوندم که با اون میشهs این کار رو کرد بدون نیاز به اینکه توی هر پیج لوگین کرد ... ممنون میشم کد های صفحه لوگین و کد های صفحه student رو برام بگذارید
من کلی گشتم ولی یک سری کد که به کارم نمیاد گیر اومد ممنون




<?php

// start the session
session_start();

//if the session is registered to a valid user then show content
if (session_is_registered("username")) {

echo "Yay, you're valid";

}

//not registered session
else {

echo "You are not a valid user, please login";

}
?>




تو این کد که به نظرم کمی مفید میاد میشه توی قسمت echo vali کد های قسمت student رو اجرا کرد و در اخر هم اگر درست نبود ارجاعش داد به صفحه لوگین ... حالا از اساتید کمک میخوام که از اول و صفحه لوگین منو راهنمایی کنن !‌

id1385
پنج شنبه 06 مهر 1391, 21:00 عصر
index.php


<?php
if ( !isset($_SESSION) )
{
session_start();
}

include '../lang/fa.php';

if(isset($_SESSION['SESS_MEMBER_ID']) AND ($_SESSION['SESS_UserType'] == '0') AND ($_SESSION['SESS_IsActive'] == '1'))
{
header("location:cpl");
exit();
}
else
{
?>


login.php


<?php
session_start();
require_once "../../inc/conf.php";
require_once "../../inc/JDate.php";
require_once "../../inc/function.php";
include '../../lang/fa.php';

$errmsg_arr = array();
$errflag = false;

$login = remove_injection($_POST['username']);
$password = remove_injection($_POST['password']);

if($login == '') {
$errmsg_arr[] = 'نام کاربری اشتباه است';
$errflag = true;
}
if($password == '') {
$errmsg_arr[] = 'پسورد اشتباه است';
$errflag = true;
}

if($errflag) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
session_write_close();
// username and password error
header("location: ../login/?error_num=3");
exit();
}

$SQL = "SELECT * FROM `site_users` WHERE `UserName` = '$login' AND `UserPass` = '$password' AND `UserType` = 0 LIMIT 1 ";
$result=mysql_query($SQL);

if($result) {
if(mysql_num_rows($result) > 0 )
{
session_regenerate_id();
$member = mysql_fetch_assoc($result);
// session writing
$_SESSION['SESS_MEMBER_ID'] = $member['ID'];
$_SESSION['SESS_FIRST_NAME'] = $member['Name'];
$_SESSION['SESS_LAST_NAME'] = $member['Family'];
$_SESSION['SESS_UserType'] = $member['UserType'];
$_SESSION['SESS_IsActive'] = $member['IsActive'];
$ISACTIV_USER = $member['IsActive'];
session_write_close();
// end of session writing

if ( $ISACTIV_USER != 1)
{
header("location: ../login/?error_num=4");
exit();
}
elseif ($ISACTIV_USER == 1)
{
// found and active
header("location: ../cpl/");
exit();
}
}
else
{
// not found
header("location: ../login/?error_num=1");
exit();
}
}
else
{
// query error
header("location: ../login/?error_num=2");
}
?>

conter
پنج شنبه 06 مهر 1391, 21:41 عصر
دوست عزیز الان از کد قسمت login میشه برای کلیه صفحاتی که نیاز به لوگین دارن استفاده کرد ؟

morteza_naderloo
پنج شنبه 06 مهر 1391, 21:48 عصر
من این کد ها رو بررسی کردم
بله کافیه لینک بدی یا اینکه بررسی کنی اگر کاربر لوگین نکرده بود پیغام لطفا وارد شوید نشون بده .
مثال :


if(!isset($_SESSION[login_check])){
echo "Please login first";
echo "<a href='login.php'>enter</a>";
}

patriotic
جمعه 07 مهر 1391, 01:05 صبح
شما فقط کافیه اول هر کدوم از صفحه هات چک کنی ببینی که session ها مقدار دهی شدن یا نه.فقط همین!مثال


<?php
session_start();
if(isset($_SESSION['username'])){
echo "taeed";//اگه سشن مقدار دهي شده باشه اين دستور اجرا ميشه
}else{
echo "no";//اکرم مقدار دهي نشده باشه اين دستور اجرا ميشه
}
?>


خب اگه میخواین اگه کاربر لوگین شده یا نه هم میشه این کد رو استفاده کد،که اگه لوگین نشده بود کاربرمون به صفحه لوگین هدایتش کنه




<?php
session_start();
if(isset($_SESSION['username'])){
echo "متن را به کاربر نمايش بده";
}else{
header("Location: login.php");//کاربر رو به صفحه لوگين هدايت ميکنه
}
?>

conter
جمعه 07 مهر 1391, 10:12 صبح
دوستان عزیز از همه گی ممنون فقط یک سوال الان متوجه شدم توی صفحات دیگم چیو بذارم اما وقتی میخوام هنگام لوگین session رو شروع کنم و بش مقدار بدم از این کد استفاده کنم یا راه ساده تری هم هست ؟؟

<?php
session_start();
require_once "../../inc/conf.php";
require_once "../../inc/JDate.php";
require_once "../../inc/function.php";
include '../../lang/fa.php';

$errmsg_arr = array();
$errflag = false;

$login = remove_injection($_POST['username']);
$password = remove_injection($_POST['password']);

if($login == '') {
$errmsg_arr[] = 'نام کاربری اشتباه است';
$errflag = true;
}
if($password == '') {
$errmsg_arr[] = 'پسورد اشتباه است';
$errflag = true;
}

if($errflag) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
session_write_close();
// username and password error
header("location: ../login/?error_num=3");
exit();
}

$SQL = "SELECT * FROM `site_users` WHERE `UserName` = '$login' AND `UserPass` = '$password' AND `UserType` = 0 LIMIT 1 ";
$result=mysql_query($SQL);

if($result) {
if(mysql_num_rows($result) > 0 )
{
session_regenerate_id();
$member = mysql_fetch_assoc($result);
// session writing
$_SESSION['SESS_MEMBER_ID'] = $member['ID'];
$_SESSION['SESS_FIRST_NAME'] = $member['Name'];
$_SESSION['SESS_LAST_NAME'] = $member['Family'];
$_SESSION['SESS_UserType'] = $member['UserType'];
$_SESSION['SESS_IsActive'] = $member['IsActive'];
$ISACTIV_USER = $member['IsActive'];
session_write_close();
// end of session writing

if ( $ISACTIV_USER != 1)
{
header("location: ../login/?error_num=4");
exit();
}
elseif ($ISACTIV_USER == 1)
{
// found and active
header("location: ../cpl/");
exit();
}
}
else
{
// not found
header("location: ../login/?error_num=1");
exit();
}
}
else
{
// query error
header("location: ../login/?error_num=2");
}
?>

conter
جمعه 07 مهر 1391, 10:34 صبح
دوستان عزیز واسه اینکه خوب ببینید مشکلم چیه من صفحه لوگین و ایندکس اون سیستمی که باید چه کنه رو میذارم ببینید :

اینجا یک لوگین و یک ایندکس هست لوگین از روی یک ایندکس متعلق به صفحه لوگین فراخونی میشه

ایندکسی که توی این فایل قرار دادم متعلق به سیستمی هستش که باید چک کنه ببینه کاربر ولیده یا نه و اگر نه برگردونتش به صفحه لوگین !‌ در ضمن این کد ها الان با session مشکل دارن و درست کار نمیکنن ممنون میشم کسی اصلاح کنه و مشکلمو بگه!



یک سوال دیگه هم همین جا بپرسم بد نیست ببینید وقتی شما فایلی رو روی سرور آپ میکنید بر فرض مثلا یک سیستم ولی نمیخواید که کسی با وارد کردن ادرسش تو بروزر اونو ببینه و فقط باید لوگین کنه تا ببینتش باید از session یا همین کاری که من الان درگیرش استفاده کرد ؟

conter
شنبه 08 مهر 1391, 14:41 عصر
عزیزان لطف کنید یک توجهی به این کد ها بکنید ببینید مشکل داره یا خیر چون من وقتی توی بروزر ادرس صفحه رو میزنم خطا رو نشون میده اما وقتی لاگین میکنم بازم خطا نشون میده یعنی کلا لاگین نمیکنه ببینید :

کد صفحه check login :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<link REL="SHORTCUT ICON" HREF="qeshmac.ico">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>

<?php

include 'mytool.php';
if(isset($_POST["myusername"]))
{
// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];


$host="localhost"; // Host name
$username='royana_napu'; // Mysql username
$password='HWv*[Q=IT9W&'; // Mysql password
$db_name="royana_nap"; // Database name
$tbl_name="test"; // Table name

// Connect to server and select database.

$link = mysql_connect($host,$username,$password)or die("cannot connect");
mysql_select_db($db_name)or die("cannot select DB");


$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and
password='$mypassword'";

$result=mysql_query($sql,$link);

if(mysql_fetch_assoc($result))
{
//goto main page
$_SESSION["mys"]=$myusername;
print( redirect('students/indexs.php'));
}
else
{
//back to login
print( redirect('indexl.php?cmd=error'));
}
}
else
{
print( redirect('indexl.php'));
}


?>

</body>
</html>

این کد صفحه دانشجویان یا همون محاسبات :


<?php
session_start();
include 'mytool.php';
if(!isset($_SESSION["mys"]))
print(redirect('users/indexl.php?timeout'));
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<link REL="SHORTCUT ICON" HREF="qeshmac.ico">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>سیستم نمرات</title>
<!-- reset css -->
<style>
body { font-family:Arial, Helvetica, Sans-Serif; font-size:12px; margin:0px 20px;}

که باقیش ربطی نداره و این کد صفحه mytool :



<?php
function redirect($page)
{
$s = "<script language='javascript'>
window.location='$page';
</script>";
return $s;

}
?>


من session ها رو ساختم و به نظرم همه چی درسته اما خوب اونجوری که توقع داشتم کار نکرد الان کلا هرچقدر هم که بزنی طبق خطاش فقط خطا نشون میده اصلا دیگه لاگین نمیشه مشکل چیه ؟ لطف کنید بگین اشکالم کجاست ممنون