|
|
|
ดึง SESSION มาใช้ ครับ - ตามโค้ดนี้ครับมันก็แสดงผลปรกติ แต่ SESSION ไม่มาครับ จะ ดึง SESSION มายังไง |
|
|
|
|
|
|
|
- ตามโค้ดนี้ครับมันก็แสดงผลปรกติ แต่ SESSION ไม่มาครับ จะ ดึง SESSION มายังไงครับ
- แล้วถ้าเกิดจะ Reload เฉพาะ รูปทำยังไงหรอครับ (โดยไม่ต้องโหลดใหม่ทั้งหน้า หรือทั้งฟอร์ม)
Code (PHP)
#------ verify_image.php -----#
<?
session_start();
$text = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789abcdefghijklmnopqrstuvwxyz";
$rand = substr(str_shuffle($text),0,6);
$_SESSION['verify_ses'] = trim($rand);
$im = imagecreatefromjpeg("../images/verify.jpg");
$textcolor = imagecolorallocate($im, 0, 0, 255);
imagestring ($im, 7, 14, 5, $rand,$textcolor);
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
?>
#-----------------------------#
#---------- form.php ---------#
<form ... action="test.php">
<input type="text" name="code" id="code" size="15" class="text_in_box2" />
<img src="includes/verify_image.php" border="1" />
</form>
#-----------------------------#
<? echo "code = ".$_SESSION['verify_ses']; ?>
#-----------------------------#
#---------- test.php ---------#
$code = $_POST['code'];
if(trim($code) != trim($_SESSION['verify_ses']){
echo " != ";
exit();
}
#----------------------------#
Tag : - - - -
|
|
|
|
|
|
Date :
2010-06-01 10:26:58 |
By :
t-monroe |
View :
1554 |
Reply :
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมเคยเจอปัญหาแบบนี้เหมือนกันครับ มันจะแสดงภาพเดิมทั้งที่ค่า session เปลี่ยนไปแล้ว
ทำให้ปวดหัวอยู่พักใหญ่
ปัญหาก็คือว่ามัน cache ภาพเดิมไว้ เราต้องทำไงก็ได้เวลามัน load ไม่ให้ browser
ไปดึงที่ cache มาแสดง ดังนี้
1. บังคับไม่ให้ cache ใส่ header ในไฟล์ verify_image.php ใต้บรรทัด 14
header("Cache-Control: no-cache, must-revalidate");
2. วิธีแบบบ้านๆ ใส่ timestamp ตรง <form ... action="test.php">
เพื่อป้องกันการ cache แบบนี้
<form ... action="test.php/<?php echo date("YmdHis");?>">
|
|
|
|
|
Date :
2010-06-01 12:04:00 |
By :
pnbps |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ภาพมันเปลี่ยนปกติทุกอย่าง ครับ แต่ปัญหาอยู่ที่
เวลาผมตรวจสอบ
$code = $_POST['code'];
if(trim($code) != trim($_SESSION['verify_ses']){
echo " != ";
exit();
}
ผมจะดึง SESSION มายังไงครับ ในไฟล์ form.php กับ test.php ไม่มีค่าของ $_SESSION['verify_ses']
ขอบคุณ ครับ
|
|
|
|
|
Date :
2010-06-01 12:12:32 |
By :
t-monroe |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใน form.php กับ test.php ได้ประกาศ session_start(); รึยังครับ
ส่วนเรื่อง reload ใช้ javascript เลยครับ
Code (Javascript)
<script>
function reload(){
document.getElementById('captcha').src = "includes/verify_image.php?" + Math.random();
}
</script>
<form ... action="test.php">
<input type="text" name="code" id="code" size="15" class="text_in_box2" />
<img id="captcha" src="includes/verify_image.php" border="1" />
<a href="javascript:reload()">Reload</a>
</form>
|
|
|
|
|
Date :
2010-06-01 12:29:45 |
By :
kerb |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เราประกาศ session_start(); ใน form.php กับ test.php แล้วจะได้ $_SESSION['verify_ses'] จาก verify_image.php
มาใช่ไหมครับ ???? งงงง
ขอบคุณครับ
|
|
|
|
|
Date :
2010-06-01 15:29:56 |
By :
t-monroe |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช่แล้วคับ การประกาศ session_start(); หมายถึงเราต้องการเปิดใช้งาน session คับ ถ้าไม่เปิดมันก้อใช้ไม่ได้ ไม่ว่าจะกำหนดหรือเรียกใช้ก็ตาม และ session บนเว็บเดียวกัน จะได้ค่าเท่ากันคับ ไม่ใช่ประกาศอีกที่ แล้วจะได้อีกค่า เหมือนกันทุกที่คับ
|
|
|
|
|
Date :
2010-06-01 17:57:02 |
By :
kerb |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ
|
|
|
|
|
Date :
2010-06-02 11:05:54 |
By :
t-monroe |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|