|
|
|
$_SESSION แสดงภาษาไทยเป็นแบบนี้ครับ ?????????? แก้ไงหรอครับ |
|
|
|
|
|
|
|
ให้ code มา 700 กว่าบรรทัด ปัญหาที่ถามอยู่บรรทัดไหนครับ ตัวแปร $_SESSION อะไรที่ส่งค่าออกมาเป็น ??????????
|
|
|
|
|
Date :
2016-09-07 17:49:25 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
555++ ละเอียดดีไง แต่อาจให้ข้อมูลไม่ถูกต้องมา
ถ้าคิดจะใช้ UTF-8 ทุกสิ่งทุกอย่างต้องเป็น UTF-8 ไฟล์ ฐานข้อมูล และอะไรก็ตาม และ ปัญหานี้อาจไม่ได้เกิดจากไฟล์นี้ก็ได้
UTF-8
|
|
|
|
|
Date :
2016-09-07 17:59:17 |
By :
goragod |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขออภัยครับ ความตั้งใจของผมแค่จะเอาไว้ข้างใต้ session_start(); ครับ ตั้งใจเขียนไว้แบบนี้ครับ
Code (PHP)
<?php
session_start();
if($_SESSION['Class'] == "")
{
header("location:loginisp.php");
}
if($_SESSION['Class'] != "ผ่านการอนุมัติ")
{
header("location:loginisp.php");
}
?>
แต่รูปที่ผมแนบมา ผมเพียงทดลอง echo ออกเป็น 2 แบบคือแบบ $objResult ซึ่งปกติดีครับ แต่พอเป็น $_SESSION จะเป็น ??????? ทันทีครับ ซึ่งต่างจาก $objResult ที่แสดงเป็นภาษาไทยได้ปกติดีครับ
ส่วนด้านล่างเป็นหน้า check login ครับจุดเริ่มต้นที่ผมเอาไว้ start session
Code (PHP)
<?php
session_start();
mysql_connect("localhost","root","");
mysql_select_db("decc");
mysql_query("set name UTF8");
$strSQL = "SELECT * FROM tblmember WHERE Email = '".mysql_real_escape_string($_POST['Email'])."'
and Passwd = '".mysql_real_escape_string($_POST['Passwd'])."'";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
if(!$objResult)
{
echo "Email and Password Incorrect!";
}
else
{
$_SESSION["CODE_ISP"] = $objResult["CODE_ISP"];
$_SESSION["Status"] = $objResult["Status"];
$_SESSION["Class"] = $objResult["Class"];
session_write_close();
if($objResult["Status"] == "ISP")
{
header("location:profile_isp.php");
}
}
mysql_close();
?>
ด้านล่างเป็นฐานข้อมูลที่ผมใช้อยู่ครับใช้ utf8_general_ci
|
ประวัติการแก้ไข 2016-09-07 18:05:55
|
|
|
|
Date :
2016-09-07 18:01:04 |
By :
damnern007 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Class enum ก็เปลี่ยนเป็น 0 1 y n pass npass เขียนรับค่าก็ 0 กับ 1 เข้าไม่ใช้ภาษาไทยหรอก หรือจะจัดการเรื่อง UTF-8 อย่างพี่เขาบอก
|
|
|
|
|
Date :
2016-09-07 19:57:49 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ครับ ผมก็กะว่าจะไปใช้ภาษาอังกฤษแทนไม่ก็ตัวเลข แต่ถ้าแก้ต้องแก้หลายเพจมากครับ ผใก็เลขอยากจะหาทางให้ session แสดงภาษาไทยได้ จะได้ไม่ต้องปรับอันอื่นๆ ขอบคุณพี่ๆมากครับที่แนะนำ
|
|
|
|
|
Date :
2016-09-07 21:01:06 |
By :
damnern007 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. แก้ตรงฟอร์มหน้าที่ผู้มีอำนาจจะสั่งอนุมัติ ทำเป็น select ให้เลือก อนุมัติหรือไม่อนุมัติ ให้มันส่งค่ามาเก็บเป็น 0 หรือ 1
2. ในตารางแก้ต้อง Class Enum เป็น 1 กับ 0
3. ถ้าเปรียบเทียบ ง่ายสุดก็ if else
if($_SESSION['Class'] == "")
{
header("location:loginisp.php");
}
if($_SESSION['Class'] != "1")
{
header("location:loginisp.php");
}
4.เวลาตรงไหน หน้าเพจไหน จะต้องการแสดงค่า $_SESSION['Class'] ก็ใช้ if else switch case อีก ทำเป็นไฟล์ แล้วก็ include มันไปทุกหน้า (จริงๆ ถ้าง่าย เขียนฟังก์ชั่นง่ายๆ ก็ได้)
function classNames($aaa)
{
switch ($aaa)
{
case '0' :
$aaa="ไม่อนุมัติ";
break;
case '1' :
$aaa="อนุมัติ";
break;
default :
$aaa="ไม่อนุมัติ";
break;
}
return $aaa;
}
เวลาเรียกใช้งานก็
echo classNames($_SESSION['Class']);
ผมว่ามันไม่เสียเวลาครับ ลองพิจารณาครับ
|
ประวัติการแก้ไข 2016-09-07 21:48:02 2016-09-07 21:49:24
|
|
|
|
Date :
2016-09-07 21:47:16 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เปลี่ยน วิธีเก็บ session อย่าเก็บเป็นภาษาไทยตรงๆ
เพราะมันจะถูกบันทึกลงไฟล์ ซึงไฟล์ที่เก็บ session ไม่ได้เป็น utf8 แต่เป็น ascii
เมื่่อคุณเก็บลงไฟล์ ตัวแปลเป็นภาษาไทย จาก utf8 ไปเป็น ascii ก็จะกลายเป็น ???????
ตัวอย่างการเก็บ session ที่เป็นภาษาไทย
Code (PHP)
session_start();
$_SESSION['testthai']=base64_encode('ทดสอบภาษาไทย');
////////////////////////////////////////////////////////////////////////////////////
if( 'ทดสอบภาษาไทย'===base64_decode($_SESSION['testthai'])){
echo 'TRUE';
}else{
echo 'FALSE';
}
|
|
|
|
|
Date :
2016-09-08 08:07:15 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|