PHP ช่วยดูรูปต่อไปนี้แล้วชี้้แจ้งข้อผิดพลาดให้ที (ไม่ได้ขอ code นะ)
$_SESSION
ช่วยคุณได้ ^^
Date :
2013-11-20 15:50:36
By :
tumkung_narakjung
session_id(); คือ หมายเลขประจำเครื่อง Client ซึ่งแต่ละเครื่องหรือ Browser จะมีค่าไม่เหมือนกัน
session_start(); เป็นคำสั่งสำหรับการเริ่มใช้งาน session (จะต้องประกาศทุกครั้งก่อนการใช้งาน session)
session_register(); เป็นคำสั่งสำหรับประกาศตัวแปร session (ปัจจุบันได้ถูกยกเลิกใช้ไปแล้ว)
$_SESSION["var"] = value; คือการประกาศค่าตัวแปร session
$SESSION["var"]["1"] = value; // Session แบบ Array
$SESSION["var"]["2"] = value; // Session แบบ Array
session_write_close(); จบการ Create Session
unset($_SESSION["var"]); ยกเลิก/ลบค่า Delete Session ที่ต้องการ
session_destroy(); ยกเลิกลบค่า Delete Session ทั้งหมด
session_encode(); เข้ารหัส Encode Session
อืมจากที่ได้เข้าไปดูแล้วได้ความรู้มากเลย
แต่ขอถามหน่อยจ๊ะ ว่า session ตัวไหนหรือที่เป็นตัวเก็บค่าอะ ใช่ session_id หรือป่าว พอดีกลัวโดนถามว่าตัวไหนเป็นตัวเก็บค่าแล้วจะอธิบายไม่ถูกอ่า หมายเลขประจำเครื่อง Client นี่คือไรหรอ ใช่หมายเลขเครื่องคอมหรือป่าวหรือไอดี IP และจะต้องประกาศตัวแปลทุกหน้าเลยใช่ไหม เออแล้วก็สุดท้ายแล้วจ๊ะ Session จะหายไปประมาณ 20 นาที (default) อันนี้อยู่ได้สูงสุดแค่ 20 นาทีจริงๆหรอมากกว่านี้หรือน้อยกว่านี้ได้ไหม แล้วค่า (default) นี่คืออะไรหรอหมายถึงค่าสิ้นสุดหรอหรือป่าว
Date :
2013-11-20 16:08:37
By :
noomalea
ศึกษาการสร้างระบบ LOG IN ก่อนครับ
1. ตอนนี้ให้คิดถึงแค่ภาพนี้ก่อน ภาพหลังจากนั้นอย่าพึ่งคิด . .. . คิดแค่เค้ากด user pass มาเนี่ยเราวิ่งไปตรวจสอบที่ไหน
ถ้าผ่าน --- > เก็บลงเซสซั่น ตรงนี้ศึกษาการเก็บเซสซั่น . . . แล้วรีเฟรชไปหน้าหลังจากการ Log in
2. ไฟล์หลังจากการ Log in ทึุกไฟล์ต้องมีการเช็คเซสซั่น ถ้าไม่มีต้องขึ้นให้ user ไปเข้าสู่ระบบมาก่อน
3. ถ้าได้เซสซั่น จากการเก็บของข้อ1 มาแล้วก็ง่ายในการระบุตัวบุคคลว่า สมาชิกคนนี้คือใคร หลังจากนั้นการจัดการในแบบภาพต่างๆที่ตามก็จะง่ายมากๆ
Date :
2013-11-20 16:20:40
By :
meannerss
อ้อ เข้าใจละจ้า ขอบใจจ้า
Date :
2013-11-20 16:28:33
By :
noomalea
1. ตัวแปร session ที่เก้ฐค่าเค้าก็บอกอยู่นะครับ
Code (PHP)
$_SESSION["var"] = value; #คือการประกาศค่าตัวแปร session
$SESSION["var"]["1"] = value; // Session แบบ Array
$SESSION["var"]["2"] = value; // Session แบบ Array
เอามาถอดสแควรูด(เอาให้เข้าใจง่ายๆ)
ปกติแล้วการประกาศตัวแปร PHP แบบธรรมดาจะอยู่ในรูปแบบนี้
Code (PHP)
$test = 'Test';
ส่วนตัวแปรแบบ session จะอยู่ในรูปแบบนี้
Code (PHP)
$_SESSION["test"] = 'Test';
ลอง echo ทั้งสองค่าออกมาดูผลลัพธ์ก็จะเหมือนกัน คือ Test
Code (PHP)
<?PHP
session_start(); #ประกาศใช้ตัวแปร session
$test = 'Test';
$_SESSION["test"] = 'Test';
#แสดงค่าในตัวแปรออกมาดู
echo 'ค่าตัวแปร $test ที่ประกาศแบบธรรมดา คือ '.$test."<br />";
echo 'ค่าตัวแปร $_SESSION[test] คือ '.$_SESSION["test"];
?>
2. ค่า default ก็คือ ค่าเริ่มต้น
ตัวแปรประเภท session มีระยะเวลาการใช้งานประมาณ 20 นาที คือ หากเราใช้งานเบราเซอร์ในระยะเวลา 20 นาที ค่าในตัวแปร session จะไม่ถูกทำลาย หากปิดเบราเซอร์หรือไม่กระการใดภายในระยะเวลา 20 นาที ค่าตัวแปร session นั้นๆ ก็จะถูกทำลาย
วิธีแก้แบบง่ายๆๆๆๆ คือ เขียนโค้ด Auto refresh ให้เมื่อเวลาถึง 10 นาทีแล้วให้รีเฟรชเบราเซอร์ครั้งนึง
พอจะเข้าใจบ้างป่าวไม่รู้
Date :
2013-11-20 16:33:30
By :
arm8957
o/ ถาม ๆ ใครตอบก็ได้นะ
- ตั้งชื่อฟิลด์สื่อถึงงานดี แจ่ม....
- แต่ความยาวแบบนี้จะมีปัญหาอะไรหรือเปล่าครับ ถ้าดีจะเอาไปใช้บ้าง...
Date :
2013-11-20 19:35:08
By :
telesyn
ภาพที่ 1 ภาพ Code ระบบล็อคอินในปัจจุบันที่เอามาแก้ไขอันเก่า
ภาพที่ 2 ภาพ Code ระบบล็อคอินในอดีตที่มีปัญหาก่อนหน้า
พี่ค่ะ ภาพที่ 1 และ ภาพที่ 2 แตกต่างกันยังไงหรอค่ะ ในเมื่อมีการสั่งเก็บค่า session เหมือนกัน เอ๋ะ หรือไม่เหมือน
คือถ้ามันเหมือนกันและใช้ได้เหมือนๆกัน เราจะได้กลับไปแก้เพิ่มประกาศตัวแปล session ในหน้าอื่นให้รับค่ามาทำงานอะค่ะ
ตอบด้วยนะค่ะขอบคุณค่ะ
Date :
2013-11-21 09:59:54
By :
noomalea
1. ถ้าเป็นโค้ดแล้วทำไมไม่เอาโค้ดมาโพสเลย จะ Cap รูปมาเพื่อ?
2. ภาพที่ 2 ตัวไหนคือตัวแปร session ครับ ช่วยบอกผมหน่อย ผมไม่รู้?
3. ผมอยากให้คุณทำความเข้าใจ(ไม่ใช่ลอกนะ) แล้วดูหลักการการทำงานของระบบล็อคอินที่เค้าโพสให้กัน จากนั้นทำระบบของตัวเอง ไม่ใช่แก้ เพราะหากคุณแก้คุณก็ต้องเข้าใจคำสั่งทุกคำสั่งของโค้ดนั้นๆ ซึ่งคุณน่าจะมือใหม่อยู่
4. อ่านพื้นฐาคโครงสร้างภาษา คำสั่งต่างๆ ฯลฯ --> อ่านครับอ่าน
Date :
2013-11-21 10:09:41
By :
arm8957
เค้าทำรูปเพราะกลัวเพื่อน ๆ ลอก code ไง ฮ่า ๆ ๆ
Date :
2013-11-21 10:19:57
By :
telesyn
นำ session มาใช้งานทำให้รันเชิ่อมต่อกับFrom อื่นๆและแยกผู้ใช้งานได้แล้วค่ะ แต่ทำไมพอเอาไปใส่ใน PDF ถึงไม่สามารถดึงข้อมูลขึ้นมาแสดงแต่ข้อมูลของ SESSION['UserID'] นั้น มันขึ้นมาหมดเลยเหมือนรูปด้านบนๆเลยค่ะพอใส่คำสั่ง WHERE ใน บันทัด $sql = "select * from student_information "; มันขึ้นว่าWarning: mysql_fetch_array()กับFPDF error: Some data has already been outputในบันทัด while ($result1 = mysql_fetch_array($query1)) มันเกิดปัญหาตรงไหนค่ะ หน้าสุดท้ายของการทำงานระบบละค่ะ
Code (PHP)
<?
session_start();
if($_SESSION['UserID'] == "")
{
echo "Please Login!";
exit();
}
mysql_connect("localhost","root","153452");
mysql_select_db("msci_cru_research");
mysql_query("SET NAMES UTF8");
$strSQL = "SELECT * FROM member WHERE UserID = '".$_SESSION['UserID']."' ";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
?>
<?php
$host="localhost";
$user_db="root";
$pw_db="153452";
$db="msci_cru_research";
$con=mysql_connect($host,$user_db,$pw_db);
mysql_query("SET NAMES UTF8");
if($con){ mysql_select_db($db);
}else{
echo "Can not connect db Server";
die();
}
require("fpdf.php");
class PDF extends FPDF {
function SetThaiFont() {
$this->AddFont('AngsanaNew','','angsa.php');
$this->AddFont('AngsanaNew','B','angsab.php');
}
function conv($string) {
return iconv('UTF-8', 'TIS-620', $string);
}
}
$pdf = new PDF();
$pdf->SetThaiFont();
$pdf->SetMargins(20, 20);
$pdf->AddPage();
$pdf->SetFont('AngsanaNew', 'B', 20);
$pdf->Cell( 0 , 5 , iconv( 'UTF-8','TIS-620' , 'ใบนัดรับเอกสาร' ) , 0 , 1 , 'C' );
$pdf->Ln(10);
$pdf->SetFont('AngsanaNew','B',16);
$sql = "select * from student_information ";
$query1 = mysql_query($sql);
$cnt = 0;
while ($result1 = mysql_fetch_array($query1))
{
++$cnt;
$pdf->Write( 0 , iconv( 'UTF-8','TIS-620' , ' รหัสนักศึกษา ' ) ); $pdf->Write( 0 , iconv( 'UTF-8','TIS-620' , $result1["ID_student_identification_code"] ) );
$pdf->Write( 0 , iconv( 'UTF-8','TIS-620' , ' ชื่อ ' ) );$pdf->Write( 0 , iconv( 'UTF-8','TIS-620' , $result1["student_name"] ) );$pdf->Ln(8);
$pdf->Write( 0 , iconv( 'UTF-8','TIS-620' , ' วันที่รับจดหมาย ' ) );$pdf->Write( 0 , iconv( 'UTF-8','TIS-620' , $result1["std_document"] ) );
$pdf->Write( 0 , iconv( 'UTF-8','TIS-620' , ' วันที่ลงทะเบียน ' ) );$pdf->Write( 0 , iconv( 'UTF-8','TIS-620' , $result1["std_day"] ) );$pdf->Ln(8);
$pdf->Ln(8);
}
$pdf->Output();
?>
Date :
2013-11-21 14:43:32
By :
noomalea
ไม่เกี่ยวกับปัญหาที่เกิดนะ แต่ ทำให้มันเหลือการ connect ครั้งเดียวก็พอครับ
?
session_start();
if($_SESSION['UserID'] == "")
{
echo "Please Login!";
exit();
}
mysql_connect("localhost","root","153452");
mysql_select_db("msci_cru_research");
mysql_query("SET NAMES UTF8");
$strSQL = "SELECT * FROM member WHERE UserID = '".$_SESSION['UserID']."' ";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
?>
<?php
$host="localhost";
$user_db="root";
$pw_db="153452";
$db="msci_cru_research";
$con=mysql_connect($host,$user_db,$pw_db);
Date :
2013-11-21 14:47:38
By :
telesyn
ในที่สุด ก็รันออกมาได้ตาม SESSION['UserID'] ขอบคุณกับคำตอบต่างๆในกระทู้นี้นะค่ะ
ไปทำ ระบบอื่นต่อละค่ะ Code ด้านล่างคือที่ทำสำเร็จแต่เป็นแค่ตัวทดสอบนะค่ะ ใครส่งสัยอะไรก็มาดูได้ค่ะ
(ตอนนี้ก่อนทำระบบใหม่ต้องขอลงCode ตัวเต็มเอกสารก่อนค่ะ อิอิ)
Code (PHP)
<?
session_start();
if($_SESSION['UserID'] == "")
{
echo "Please Login!";
exit();
}
mysql_connect("localhost","root","153452");
mysql_select_db("msci_cru_research");
mysql_query("SET NAMES UTF8");
$strSQL = "SELECT * FROM member, student_information WHERE UserID = '".$_SESSION['UserID']."' AND member.Username = student_information.Username ";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
$cnt = 0;
require("fpdf.php");
class PDF extends FPDF {
function SetThaiFont() {
$this->AddFont('AngsanaNew','','angsa.php');
$this->AddFont('AngsanaNew','B','angsab.php');
}
function conv($string) {
return iconv('UTF-8', 'TIS-620', $string);
}
}
$pdf = new PDF();
$pdf->SetThaiFont();
$pdf->SetMargins(20, 20);
$pdf->AddPage();
$pdf->SetFont('AngsanaNew', 'B', 20);
$pdf->Cell( 0 , 5 , iconv( 'UTF-8','TIS-620' , 'ใบนัดรับเอกสาร' ) , 0 , 1 , 'C' );
$pdf->Ln(10);
$pdf->SetFont('AngsanaNew','B',16);
{
++$cnt;
$pdf->Write( 0 , iconv( 'UTF-8','TIS-620' , ' รหัสนักศึกษา ' ) ); $pdf->Write( 0 , iconv( 'UTF-8','TIS-620' , $objResult["Username"] ) );
$pdf->Write( 0 , iconv( 'UTF-8','TIS-620' , ' ชื่อ ' ) );$pdf->Write( 0 , iconv( 'UTF-8','TIS-620' , $objResult["student_name"] ) );$pdf->Ln(8);
$pdf->Write( 0 , iconv( 'UTF-8','TIS-620' , ' วันที่รับจดหมาย ' ) );$pdf->Write( 0 , iconv( 'UTF-8','TIS-620' , $objResult["std_document"] ) );
$pdf->Write( 0 , iconv( 'UTF-8','TIS-620' , ' วันที่ลงทะเบียน ' ) );$pdf->Write( 0 , iconv( 'UTF-8','TIS-620' , $objResult["std_day"] ) );$pdf->Ln(8);
$pdf->Ln(8);
}
$pdf->Output();
?>
Date :
2013-11-21 15:25:17
By :
noomalea
Load balance : Server 03