ปัญหาการส่งค่า session ใน ajax

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: ปัญหาการส่งค่า session ใน ajax

Re: ปัญหาการส่งค่า session ใน ajax

โดย บุคคลทั่วไป » 09/08/2022 1:43 am

เป็นเหมือนกันล็อคอินหลุดแล้วผลข้อมูลเพี้ยน

Re: ปัญหาการส่งค่า session ใน ajax

โดย mindphp » 26/06/2010 8:38 pm

ลงโค้ดช่วยครอบโค้ดหน่อยครับ
ขั้นต้น ลอง print_r($_SESSION);
ท้ายไฟล์ที่สร้างก่อนครับ และลองดูให้หน้าอื่นๆ

Re: ปัญหาการส่งค่า session ใน ajax

โดย kik » 26/06/2010 7:19 pm

ส่วน
ob_start() และ session_start() นั้นอยู่ในหน้า config.php ซึ่งมีการ include อยู่ในส่วนของ index.php อยู่แล้วคะ
เมื่อทำการ login จะตรวจสอบค่าถ้าถูกต้องจะส่งค่า $error=false เพื่อให้ในส่วนของ ajax ตรวจสอบค่าถ้าได้ค่าคืนมาเป็น false ก็จะไปยังหน้า member.php เมื่อไปหน้า member.php ที่ลองทำการทดสอบค่าว่าค่าใน session ว่างหรือไม่ ปรากฏว่าค่า session เป็นค่าว่าง

*ค่าในหน้า member.php ลงผิด
แก้จาก $_SESSION[$prefix][password] เป็น $_SESSION[$prefix][login][password]

Re: ปัญหาการส่งค่า session ใน ajax

โดย kik » 26/06/2010 7:04 pm

chkLogin.php

<?php
@header("content-type: text/html; charset=UTF-8");
$referer = getenv("HTTP_REFERER");
$referer = ($referer == '') ? $_SERVER[HTTP_REFERER] : $referer;
$host = $_SERVER[HTTP_HOST];
if(preg_match("/$host/ui",$referer)){
include ('../../bin/config.php');
include ("../../language/$config[lng].php");
include ('../../bin/function.php');
include ('../../bin/db_class.php');
$db = new sql($config[db_server], $config[db_username], $config[db_password], $config[db_name]);
DEFINE('MAIN_INIT', 'chklogin');
include ('login.php');
echo $error;
$db->close();
}
?>

member.php

if(defined('MAIN_INIT')){

if($_SESSION[$prefix][login] == '' && $_SESSION[$prefix][password] == ''){
echo 'no';
}else{
echo 'yes';
}

}

Re: ปัญหาการส่งค่า session ใน ajax

โดย kik » 26/06/2010 7:01 pm

ขออภัยที่มาลงให้ช้านะคะ

นี้ code หน้า login.php

โค้ด: เลือกทั้งหมด

if(defined('MAIN_INIT')){
		$login_root = MAIN_INIT == 'chklogin' ? '../../' : '';
		if($_REQUEST[action] == 'login'){
			$login_user = trim($_POST[login_user]);
			$login_password = trim($_POST[login_password]);
		}elseif($_REQUEST[action] == 'logout'){
			setCookie($prefix.'login_user', '', time(), '/');
			setCookie($prefix.'login_password', '', time(), '/');
			$login_user = '';
			$login_password = '';
			unset($_SESSION[$prefix][login]);
		}elseif(isset($_SESSION[$prefix][login])){
			$login_user = $_SESSION[$prefix][login];
			$login_password = $_SESSION[$prefx][login][password];
		}else{
			$_SESSION[$prefix][login] ;
			$_SESSION[$prefix][login][password];
		}
		if($login_user != '' && $login_password != ''){
			$login_result = $db->search($config[db_member],'username',$login_user);
			if($login_result[username] == $login_user && $login_result[password] == $login_password){
				$_SESSION[$prefix][login] = $login_user;
				$_SESSION[$prefix][login][password] = $login_password;
				
				if($_SESSION[$prefix][login] == '' && $_SESSION[$prefix][password] == ''){
					echo 'no';
				}else{
					$error = false;
				}
			}else{
				$error = $lng[LOGIN_ERROR];
				$login_user = '';
				$login_password = '';
			}
			
		}
		if($login_user == '' || $login_password == ''){
			$patt = array('/{(LNG_[A-Z_]+)}/e','/{USERNAME}/','/{PASSWORD}/','/{FUNCTION}/','/{FORMACTION}/','/{REGISTER}/','/{FORGOT}/');
			unset($replace);
			$replace[] = '$lng[$1]';
			$replace[] = $login_user;
			$replace[] = $login_password;
			$replace[] = 'return chkLogin(login_form.login_user.value,login_form.login_password.value,\'error\')';
			$replace[] = 'index.php?action=login';
			$replace[] = getURL('register','','','');
			$replace[] = getURL('forgot','','','');
			$content = preg_replace($patt,$replace,file_get_contents("$login_root$config[temp]member/loginform.html"));
		}

	}

Re: ปัญหาการส่งค่า session ใน ajax

โดย mindphp » 26/06/2010 2:45 pm

ลองเอาโค้ดแต่ละหน้ามาลงดูหน่อยครับ

ปัญหาการส่งค่า session ใน ajax

โดย kik » 26/06/2010 9:08 am

ได้ทำการสร้างฟอร์ม login โดยมีการเช็คค่าโดยการใช้ ajax
ในไฟล์ที่ ajax เรียนนั้นถ้าข้อมูลถูกต้องจะกำหนดค่า session ขึ้นมาเพื่อที่เก็บค่า user
จึงใช้ session เก็บค่านั้นเพื่อส่งไปยังหน้าถัดไป ปัญหาที่เกิดคือ ค่า session ที่ส่งไปยังเพจถัดไปหลังจาก login สำเร็จกลับไม่มี ทั้งที่ประกาศ session_start(); ไว้ทั้งสามหน้า

หน้า main -> chkLogin ถ้าสำเร็จ -> member

ข้างบน