|
|
|
Cookie ผมใช้ cookie บน localhost ได้ แต่เมื่ออัพขึ้นไปใช้บน server ทำไมถึงใช้ไม่ได้ครับ |
|
|
|
|
|
|
|
มันน่าจะ Error น่ะครับ
|
|
|
|
|
Date :
2009-09-09 21:46:21 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
error โค้ดผม หรือว่ายังไงครับคุณ win
|
|
|
|
|
Date :
2009-09-09 21:49:04 |
By :
ken |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอาโคดมาดู
|
|
|
|
|
Date :
2009-09-09 21:52:58 |
By :
panyapol |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใส่ path หรือว่า domain ไปหรือเปล่า
|
|
|
|
|
Date :
2009-09-09 22:05:14 |
By :
plakrim |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมลองรันใน firefox ปรากฎว่าได้ครับ แต่ ie ไม่ได้อะครับ
|
|
|
|
|
Date :
2009-09-09 22:17:41 |
By :
ken |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
โพสโค้ดมาให้ดูหน่อยครับ
|
|
|
|
|
Date :
2009-09-09 22:40:35 |
By :
NanoTHoro |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<?php
session_start();
ob_start();
session_register("s_ad_user");
//session_register("s_ipaddress");
if (getenv("HTTP_X_FORWARDED_FOR"))
{
$ipaddress=getenv("HTTP_X_FORWARDED_FOR");
}
elseif (getenv("HTTP_CLIENT_IP"))
{
$ipaddress=getenv("HTTP_CLIENT_IP");
}
else
{
$ipaddress=getenv("REMOTE_ADDR");
}
if (isset($_COOKIE["ipaddress"])) {
$sql2 = "DELETE FROM tb_ip_login WHERE ip_login = '$ipaddress' ";
mysql_query ($sql2) or die ("Delete Error");
echo "<script>
alert ('You will be unable to login for 15 minutes.');
window.location = 'login.php';
</script>";
exit();
}
?>
$ad_user = $_POST['ad_user'];
$ad_pass = $_POST['ad_pass'];
$sqlSelect = "SELECT ad_user, ad_pass FROM admin_login WHERE (ad_user ='$ad_user') AND (ad_pass='$ad_pass')";
$qry = mysql_query($sqlSelect);
$recCount = mysql_num_rows($qry);
if ($recCount < 1) //หมายถึงล็อกอินเข้าระบบไม่ได้
{
//หาไอพีของผู้ล็อกอิน ด้วยคำสั่งนี้ (ยาวหน่อย เพราะคำสั่งแบบสั้นๆ บางทีหาไม่ได้)
if (getenv("HTTP_X_FORWARDED_FOR"))
{
$ipaddress=getenv("HTTP_X_FORWARDED_FOR");
}
elseif (getenv("HTTP_CLIENT_IP"))
{
$ipaddress=getenv("HTTP_CLIENT_IP");
}
else
{
$ipaddress=getenv("REMOTE_ADDR");
}
//เมื่อได้ไอพีมาแล้ว ก็ตรวจสอบไอพีก่อนว่ามีแล้วหรือยัง ถ้ามีแล้ว ให้บวกเค้าเตอร์อีก 1 ถ้ายังไม่มี ให้เพิ่มใหม่และเริ่มนับเค้าเตอร์เป็น 1
$sqlSelect = "SELECT ip_login, count_of_fail_login FROM tb_ip_login WHERE (ip_login ='$ipaddress')";
$qry = mysql_query($sqlSelect);
$recCount = mysql_num_rows($qry);
if ($recCount < 1) //ยังไม่มี
{
$sqlInsert = "INSERT INTO tb_ip_login values('$ipaddress', 1)"; //อย่าลืมว่าเริ่มนับหนึ่งใหม่
mysql_query ($sqlInsert) or die ("Insert ERROR");
}
else
{
$result = mysql_fetch_array($qry);
$Counter = $result['count_of_fail_login'] + 1; //เพิ่มค่าเข้าระบบผิดอีกหนึ่ง
$sqlUpdate = "UPDATE tb_ip_login SET count_of_fail_login = $Counter WHERE ip_login = '$ipaddress'";
mysql_query ($sqlUpdate) or die ("Update ERROR");
}
}
//ตรงนี้เป็นขั้นตอนตรวจสอบจำนวนครั้งที่เข้าระบบผิด และล็อกไอพีไม่ให้เข้าระบบ ตาเวลาที่กำหนด คุณลองทำดูเองก่อน ติดแล้วค่อยมาถามนะครับ
//หลังจากครบเวลาที่กำหนดแล้ว อย่าลืมว่าระบบจะเริ่มนับหนึ่งใหม่ ตรงนี้คุณก็ลองทำดูกอ่นอีกเหมือนกันครับ
$sqlSelect = "SELECT * FROM tb_ip_login WHERE (ip_login ='$ipaddress')";
$qry = mysql_query($sqlSelect);
$row = mysql_fetch_array($qry);
$sqlSelect2 = "SELECT ad_user, ad_pass FROM admin_login WHERE (ad_user ='$ad_user') AND (ad_pass='$ad_pass')";
$qry2 = mysql_query($sqlSelect2);
$row2 = mysql_fetch_array($qry2);
if (($row[1] >= 3) AND (empty($row2[0]))) //ยังไม่มี
{
//$_SESSION['ipaddress'] = $ipaddress;
setcookie("ipaddress",$ipaddress,time()+60);
/*
$sql2 = "DELETE FROM tb_ip_login WHERE ip_login = '$ipaddress' ";
mysql_query ($sql2) or die ("Delete Error");
*/
echo '<script language="JavaScript">';
echo 'alert("ชื่อผู้ดูแลระบบ หรือ รหัสผ่าน ไม่ถูกต้อง\nคุณได้ทำการล็อกอินเกินกว่า 3 ครั้ง\nหลังจากคุณล็อกอินครบ 3 ครั้งแล้ว คุณจะไม่สามารถล็อกอินได้อีกภายในเวลา 15 นาที");';
echo "window.location = 'login.php'";
echo '</script>';
exit();
}
$sql = sprintf("select * from admin_login where ad_user = '%s' and ad_pass = '%s'",
mysql_real_escape_string($ad_user),
mysql_real_escape_string($ad_pass));
$result = mysql_query($sql) or die ("SQL Error");
$row = mysql_fetch_array($result);
$sqlSelect2 = "SELECT * FROM tb_ip_login WHERE (ip_login ='$ipaddress')";
$qry2 = mysql_query($sqlSelect2);
$row2 = mysql_fetch_array($qry2);
if (empty($row[0])){
echo '<script language="JavaScript">';
echo 'alert("ชื่อผู้ดูแลระบบ หรือ รหัสผ่าน ไม่ถูกต้อง\nคุณได้ทำการล็อกอินเกินกว่า 3 ครั้ง\nหลังจากคุณล็อกอินครบ 3 ครั้งแล้ว คุณจะไม่สามารถล็อกอินได้อีกภายในเวลา 15 นาที");';
echo "window.location = 'login.php'";
echo '</script>';
exit();
}
$_SESSION['s_ad_user'] = $ad_user;
echo "<script>
alert ('สวัสดี คุณ $row[3] $row[4].');
window.location = 'detail.php';
</script>";
exit();
ob_end_flush();
อันนี้โค้ดเต็มๆ
|
|
|
|
|
Date :
2009-09-09 23:01:04 |
By :
ken |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าเป็นผมจะใส่ ob_start(); บนสุดครับ
เผื่อได้
|
|
|
|
|
Date :
2009-09-09 23:21:45 |
By :
panyapol |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองแล้ว ยังไม่ได้อ่า
|
|
|
|
|
Date :
2009-09-09 23:52:30 |
By :
ken |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตามที่คุณพีบอกอะครับ ส่วนการหาไอพีควรจะหาแค่ครั้งเดียวพอ ทำไมต้องให้โปรแกรมหาซ้ำซ้อนครับ
ลองดูตรงนี้ด้วยครับ
?> //ปิดแล้ว แต่คุณยังมีคำสั่ง พีเอชพีทำงานต่อจากแท็กปิด
}
}
ซ้อนกันอยู่ 2 อัน เท่าที่ดูผมเห็นว่าก่อนหน้านั้นปิดหมดแล้ว (อิอิอิ หรือผมตาถั่วมองไม่เห็นก็ไม่แน่นะครับ แต่อยากให้ลองตรวจดูอีกทีครับ)
|
|
|
|
|
Date :
2009-09-09 23:56:59 |
By :
NanoTHoro |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ie มันเปิดให้เขียน cookie หรือเปล่า
|
|
|
|
|
Date :
2009-09-10 00:16:55 |
By :
plakrim |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เปิดนะครับ เพราะเวลาลองรันบน local ยังได้เลยครับ
|
|
|
|
|
Date :
2009-09-10 08:44:13 |
By :
ken |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
วันนี้ไม่ต้องปลุกแงะ อิอิอิ
ครับๆๆๆๆ
คุณบอกว่าใช้ไฟฟ็อกได้ แต่ไออีไม่ได้ แสดงว่าโค้ดถูกต้องแล้ว และใช้โลคอลได้ แต่ใช้บนฌซอร์เวอร์ไม่ได้ งั้นคุณลองลดระดับของ ซีเคอร์ริตี้ในไออีลงอีกระดับนึงครับ แล้วลองตรวจสอบค่าการรับคุกกี้อีกทีครับ อย่าลืมว่า เซอร์เวอร์ใช้อินเตอร์เน็ต แต่โลคอลโฮสใช้ อินทราเน็ตอะครับ ลองปรับเปลี่ยนตัวนี้ดูครับ และๆๆๆๆ ทดลองใช้กับเครื่องอื่นดูด้วยครับ (อย่าบอกนะว่ามีเครื่องเดียว.... ร้านเน็ตมีให้ทดลองครับ แต่อย่าไปปล่อยไวรัสใส่ร้านเขาซะล่ะ ออิอิอิิอิ)
|
|
|
|
|
Date :
2009-09-10 09:09:10 |
By :
NanoTHoro |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ครับลองปรับเป็น Accept All Cookie แล้วก็ยังไม่ได้ครับ
ลองรันบนเครื่องอื่น IE คนละเวอร์ชั่นก็ยังไม่ได้ครับ
อืม..... พอจะมีวิธีอื่นที่ไม่ใช้ Cookie ได้ไหมครับ (วิธีที่ทำยังไงให้มันใช้ได้นะครับ) เริ่มมึนครับ
|
|
|
|
|
Date :
2009-09-10 09:20:51 |
By :
ken |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คุณนาโน เงียบไปเลย รอคำตอบอยู่นะครับ
|
|
|
|
|
Date :
2009-09-10 10:35:10 |
By :
ken |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อิอิอิ ขอโทษทีครับ วันนี้ไม่ค่อยได้อยู่หน้าคอมตลอด เดี๋ยวอาจจะต้องเข้าออฟฟิสที่พัทยานะครับ กลับมาอีกทีคงจะเย็นๆ ครับ แค่อาจจะนะ
โอเคเข้าเรื่องนะครับ เท่าที่ดูตรงนี้คุณให้คุกกี้ในการจำไอพีที่ไม่สามารถล็อกอินได้ใช่ไหมครับ เพื่อกักเวลาเขา เราใช้วิธีเก็บลงฐานข้อมูลเหมือนเดิมสิครับ เวลาจะตรวจสอบว่าเขาอยู่ในช่วงเวลาที่โดนกักหรือเปล่า เราก็เอาเวลา (และวันที่ด้วย) ที่เก็บไว้ในฐานข้อมูล มาตรวจสอบกับวันที่และเวลาปัจจุบันขณะที่เขากำลังล็อกอิน รอบที่ 4-5-6... น่าจะง่ายกว่าคุ๊กกี้ไหมครับ สร้างเขตข้อมูลขึ้นมารองรับในตารางเดิมที่มีอยู่แล้วก็ได้ อีกอย่างนะครับ การเก็บด้วยคุกกี้ คุกกี้ถูกเก็บที่เครื่องผู้ใช้ เวลาเขาลบคุกกี้ไปแล้ว เขาก็ไม่ถูกบล็อคอยู่ดี จริงไหมครับ
|
|
|
|
|
Date :
2009-09-10 10:47:14 |
By :
NanoTHoro |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คุณเคนเป็นไงบ้างครับ ทำได้หรือยัง ผมรอลุ้นอยู่นะครับ
|
|
|
|
|
Date :
2009-09-10 12:17:04 |
By :
NanoTHoro |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าทำอย่างที่คุณ Nano ว่า เกิดผู้ใช้ปรับเวลา ก็สามารถหลุดจากการบล็อกได้อยู่ดี ใช่ไหมครับ
|
|
|
|
|
Date :
2009-09-10 13:15:28 |
By :
ken |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ้างอิงเวลาในเซอร์เวอร์สิครับ ยังงัยเขาก็ปรับไม่ได้ อิอิอิ
|
|
|
|
|
Date :
2009-09-10 13:34:22 |
By :
NanoTHoro |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ประกาศ setcookie ไว้ใน พาธไหนครับ ควรประกาศ setcookie ไว้ root นอกสุดเลยนะครับเพื่อที่จะใช้ใน subdirectory ได้
*** ถ้าประกาศ setcookie ไว้ใน Directory ในๆๆ ลึกๆ มันจะใช้ใน root นอกๆไม่ได้ครับ
|
|
|
|
|
Date :
2009-09-10 14:48:51 |
By :
adaaugusta |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วครับ คุณ Nano ตามวิธีที่แนะนำ แต่ยังคาใจว่า cookie ใช้ได้แต่ firefox แต่ ie ไม่ได้ซะงั้น
|
|
|
|
|
Date :
2009-09-10 18:18:39 |
By :
ken |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มีด้วยหรอ ที่แบ่งพรรคแบ่งพวกแบบนี้
|
|
|
|
|
Date :
2009-09-10 18:38:01 |
By :
panyapol |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ดีใจด้วยครับ ส่วนที่ถามอันนี้ผมก็ไม่แน่ใจเหมือนกันครับ สงสัยแบ่งพรรคแบ่งพวก เหมือนคุณพีว่าละมั้งครับ ฮาๆๆๆๆ
|
|
|
|
|
Date :
2009-09-10 20:34:27 |
By :
NanoTHoro |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2009-09-12 23:57:18 |
By :
nakait20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<?php
define('_W_ADDRESS_', $_SERVER['HTTP_HOST']);
if (_W_ADDRESS_ == "localhost" || _W_ADDRESS_ == "localhost:81") {
$webaddress = false;
} else {
$webaddress = _W_ADDRESS_;
}
setcookie("ipaddress", $ipaddress, time()+60, _W_ROOT_, $webaddress);
?>
แบบนี้จะได้มั้ย?
|
|
|
|
|
Date :
2009-09-13 02:02:10 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_W_ROOT_ ก็คือตำแหน่ง root ของเว็บ อย่างไทยครีเอทก็ /
หรืออะไรประมาณนี้ ถ้าเว็บอยู่ใน /dir ก็กำหนด /dir/
|
|
|
|
|
Date :
2009-09-13 02:04:02 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|