ถามเกี่ยวกับสร้าง cookie เเล้วเก็บลงไฟล์ text เเล้วนำค่ามาใช้ครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ถามเกี่ยวกับสร้าง cookie เเล้วเก็บลงไฟล์ text เเล้วนำค่ามาใช้ครับ

ถามเกี่ยวกับสร้าง cookie เเล้วเก็บลงไฟล์ text เเล้วนำค่ามาใช้ครับ
https://www.ninenik.com/forum_view_3008_1.html
มาจากโพสบนครับ

ผมสร้าง cookie ที่เป็น array เเล้วเก็บไว้ใน text ไฟล์ cookie  จะเปลี่ยนทุก 10 วิ เราจะนำค่า array มาใช้ยังไงครับ
เอาใส่ตรง 
echo "50%";
ล่างสุดครับ

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
    <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<?php
$con= mysqli_connect("localhost","root","","baccarat_db") or die("Error: " . mysqli_error($con));

mysqli_query($con, "SET NAMES 'utf8' ");
 
$query = "SELECT * FROM slot where id_slot=1 " or die("Error:" . mysqli_error()); 
//3.เก็บข้อมูลที่ query ออกมาไว้ในตัวแปร result . 
$result = mysqli_query($con, $query); 
// ถ้ายังไม่มี cookie ชื่อนี้ หรือ มีแล้ว แต่หมดอายุ เช็คจากวันที่ข้อมูล cookie
// กำหนดอายุ ของ ตัวแปร cookie ด้วย php ตอนที่ 2 http://niik.in/445 
// https://www.ninenik.com/content.php?arti_id=445 via @ninenik
if(!isset($_COOKIE['ck_checktime20']) || (isset($_COOKIE['ck_checktime20']) && time() > (int)$_COOKIE['ck_checktime20'])){
    setcookie("ck_checktime20", time() + 10,time() + 10); // สร้าง cookie เวลาปัจจุบันใหม่ ทุก 1 นาที บวกเพิ่มเท่ากับ 60 วิ
    // การสร้างตัวแปร cookie ด้วย php ต้องใช้คำสั่งนี้โดยห้ามมีการ echo หรือแสดงค่าใดๆ ก่อน
    // ตัวแปร จะเรียกใช้งานได้ หลังจากสร้างและโหลดหน้านี้ใหม่อีกครั้ง เพราะตัวแปร cookie จะถูกส่งใปใช้งานผ่าน header
   $arr_data = array(rand(0,100),rand(0,100),rand(0,100),rand(0,100),rand(0,100));// random ค่าแล้วเก็บเป็น array
    $str_data = implode(",",$arr_data); // ข้อมูล string โดยสร้างจากตัวแปร array
    setcookie("ck_valuedata20", $str_data,time() + 10); // สร้าง cookie ข้มอูลใหม่ ทุก 1 นาที บวกเพิ่มเท่ากับ 60 วิ
}
?>
<?php 
$i=0;
$modifyTime = filemtime("random_data.txt"); // เวลาอัพเดทข้อมูลไฟล์ล่าสุด
 // เงื่อนไขสำหรับทำการ สร้างข้อมูลใหม่ เมื่อ cookie เปลี่ยนแปลง หรือหมดอายุ
if(!isset($_COOKIE['ck_checktime20']) && time() > $modifyTime + 10){
    echo "Generate!!!<br>";   
    ob_start();  // ตำแหน่งเริ่มต้น ข้อมูลที่จะเก็บไว้ใน buffer      
    echo $str_data;

    print_r(explode(",",$str_data)); // ใช้ค่าตัวแปรที่กำหนดให้กับ cookie ใหม่
    $data_static = ob_get_contents(); // เก็บ HTML ที่แสดง ไว้ในตัวแปร  
    ob_end_flush();   // ตำแหน่งสิ้นสุด     
    file_put_contents("random_data.txt",$data_static);


}else{
    echo "Use old value";    
/*   echo $_COOKIE['ck_valuedata']."<br>"; 
    print_r(explode(",",$_COOKIE['ck_valuedata'])); // ใช้ค่าจาก cookie เดิม*/
    file_get_contents("random_data.txt");
	print_r(explode(',', $_COOKIE['ck_valuedata20']));


//  echo include_once("random_data.txt"); // หรือใช้คำสั่งนี้แทนก็ได้
}

 ?>


<?php 


while ( $i<= 5) {
	
 ?>
<br><br><br>
<div class="progress">
  <div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" style="width: 
  <?php echo "50%"; ?>"></div> <!-- เอาค่า array ใส่ตรงนี้ยังไงครับ ที่echo "50%"; -->
</div>

<?php 
$i++;
}
 ?>



Golff Sinlapachai 183.88.18.xxx 01-04-2020 12:53:45

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ


  • ( หรือ เข้าใช้งานด้วย Facebook คลิก )
 ความคิดเห็นที่ 1
สร้างตัวแปร array รับค่าข้อมูลจาก cookie
 

<?php
 // เงื่อนไขสำหรับทำการ สร้างข้อมูลใหม่ เมื่อ cookie เปลี่ยนแปลง หรือหมดอายุ
if(!isset($_COOKIE['ck_checktime'])){
    echo "Generate!!!<br>";   
    echo $str_data."<br>";
    $arr_cookies = explode(",",$str_data); // ใช้ค่าตัวแปรที่กำหนดให้กับ cookie ใหม่
}else{
    echo "Use old value.<br>";    
    echo $_COOKIE['ck_valuedata']."<br>"; 
    $arr_cookies = explode(",",$_COOKIE['ck_valuedata']); // ใช้ค่าจาก cookie เดิม
}
?>


 
แล้วอ้างอิงผ่าน key
 
เช่น $arr_cookies[0]..$arr_cookies[1]... ไปเรื่อยๆ ในลูปก็แทนด้วยตัวแปร เช่น $arr_cookies[$i]


Ninenik 223.24.161.xxx 01-04-2020
 ความคิดเห็นที่ 2
ช่วยดูโค้ดหน่อยครับ อยากให้ใน 10 วิ ต้องได้ตัวเลขที่เหมือนกัน 
ผมลองรันพร้อมกันมันขึ้นเเบบนี้ครับ 


<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
    <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<?php
$con= mysqli_connect("localhost","root","","baccarat_db") or die("Error: " . mysqli_error($con));

mysqli_query($con, "SET NAMES 'utf8' ");
 
$query = "SELECT * FROM slot where id_slot=1 " or die("Error:" . mysqli_error()); 
//3.เก็บข้อมูลที่ query ออกมาไว้ในตัวแปร result . 
$result = mysqli_query($con, $query); 
// ถ้ายังไม่มี cookie ชื่อนี้ หรือ มีแล้ว แต่หมดอายุ เช็คจากวันที่ข้อมูล cookie
// กำหนดอายุ ของ ตัวแปร cookie ด้วย php ตอนที่ 2 http://niik.in/445 
// https://www.ninenik.com/content.php?arti_id=445 via @ninenik
if(!isset($_COOKIE['ck_checktime']) || (isset($_COOKIE['ck_checktime']) && time() > (int)$_COOKIE['ck_checktime'])){
    setcookie("ck_checktime", time() + 10,time() + 10); // สร้าง cookie เวลาปัจจุบันใหม่ ทุก 1 นาที บวกเพิ่มเท่ากับ 60 วิ
    // การสร้างตัวแปร cookie ด้วย php ต้องใช้คำสั่งนี้โดยห้ามมีการ echo หรือแสดงค่าใดๆ ก่อน
    // ตัวแปร จะเรียกใช้งานได้ หลังจากสร้างและโหลดหน้านี้ใหม่อีกครั้ง เพราะตัวแปร cookie จะถูกส่งใปใช้งานผ่าน header
   $arr_data = array(rand(0,100),rand(0,100),rand(0,100),rand(0,100),rand(0,100));// random ค่าแล้วเก็บเป็น array
    $str_data = implode(",",$arr_data); // ข้อมูล string โดยสร้างจากตัวแปร array
    setcookie("ck_valuedata", $str_data,time() + 10); // สร้าง cookie ข้มอูลใหม่ ทุก 1 นาที บวกเพิ่มเท่ากับ 60 วิ
}
?>
<?php 
$i=0;
$modifyTime = filemtime("random_data.txt"); // เวลาอัพเดทข้อมูลไฟล์ล่าสุด
 // เงื่อนไขสำหรับทำการ สร้างข้อมูลใหม่ เมื่อ cookie เปลี่ยนแปลง หรือหมดอายุ
if(!isset($_COOKIE['ck_checktime']) && time() > $modifyTime + 10){
    echo "Generate!!!<br>";   
    ob_start();  // ตำแหน่งเริ่มต้น ข้อมูลที่จะเก็บไว้ใน buffer      
    echo $str_data;
 
    $arr_cookies = explode(",",$str_data); // ใช้ค่าตัวแปรที่กำหนดให้กับ cookie ใหม่
    $data_static = ob_get_contents(); // เก็บ HTML ที่แสดง ไว้ในตัวแปร  
    ob_end_flush();   // ตำแหน่งสิ้นสุด     
    file_put_contents("random_data.txt",$data_static);
 
}else{
    echo "Use old value";    

    file_get_contents("random_data.txt");
     $_COOKIE['ck_valuedata']."<br>"; 
    $arr_cookies = explode(",",$_COOKIE['ck_valuedata']);
 
}

 ?>


<?php 
$test = '70';
while ( $i< 5) {
 ?>
<!-- <br><br><br> -->

<div class="progress">
  <div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" style="width: 
  <?php  echo $arr_cookies[$i].'%' ?>"></div>  <!-- เอาค่า array ใส่ตรงนี้ยังไงครับ ที่echo "50%"; -->
</div>

<?php 
$i++;
}
 ?>


Golff Sinlapachai 183.88.18.xxx 01-04-2020 16:32
 ความคิดเห็นที่ 3
ถ้าอิงจาก ส่วนนี้ http://niik.in/que_3007_6724_2
 
<?php
if(!isset($_COOKIE['ck_checktime']) && time() > $modifyTime + 10){
    echo "Generate!!!<br>";   
    ob_start();  // ตำแหน่งเริ่มต้น ข้อมูลที่จะเก็บไว้ใน buffer      
    echo $str_data;
  
    $arr_cookies = explode(",",$str_data); // ใช้ค่าตัวแปรที่กำหนดให้กับ cookie ใหม่
    $data_static = ob_get_contents(); // เก็บ HTML ที่แสดง ไว้ในตัวแปร  
    ob_end_flush();   // ตำแหน่งสิ้นสุด     
    file_put_contents("random_data.txt",$str_data); // ค่าที่เขียนลงไฟล์จะจ้องเป็นค่่าจากตัวแปร  $str_data
  
}else{
    echo "Use old value";    
 
 	$fileData = file_get_contents("random_data.txt"); // ใช้ค่าจากไฟล์
    $arr_cookies = explode(",",$fileData); 
//     $_COOKIE['ck_valuedata']."<br>"; 
//    $arr_cookies = explode(",",$_COOKIE['ck_valuedata']);
  
}
?>
 
ตัวแปร $str_data คือข้อความ เลขสุ่ม ที่อยู่ในรูปแบบ 1,3,4,5 เป็นต้น
เช่นเดียวกับตัวแปร $fileData ที่อ่านค่าจากไฟล์ ด้วยคำสั่ง file_get_contents()
ทั้งสองค่า คือ $str_data และ $fileData ถูกแปลงจากข้อความ string เป็น array
โดยใช้คำสั่ง explode() และนำค่าไปไว้ในตัวแปร $arr_cookies
โดยมี key เริ่มต้นที่ 0 บวกเพิ่มที่ละ 1 ไปจนครบจำนวน เช่น
ถ้า $str_data หรือ $fileData เป็น 1,3,4,5 จะได้ตัวแปร $arr_cookies
จากคำสั่ง 
 
$arr_cookies = explode(",",$str_data);
// หรือ
$arr_cookies = explode(",",$fileData); 
 
// print_r($arr_cookies);
Array
(
    [0] => 1
    [1] => 3
    [2] => 4
    [3] => 5
)
นั่นคือ 
$arr_cookies[0] มีค่าเท่ากับ 1
$arr_cookies[1] มีค่าเท่ากับ 3
$arr_cookies[2] มีค่าเท่ากับ 4
$arr_cookies[3] มีค่าเท่ากับ 5
 
เวลาเราเอาค่าไปวนลูป ไม่ว่าจะใช้ในรูปแบบคำสั่ง  for,while,foreach การอ้างอิง key
ก็จะแตกต่างกัน สมมติใช้เป็น for ก็จะเป็น
 
$arr_cookies = array(1,3,4,5);
//print_r($arr_cookies);
if($arr_cookies){
    for($i = 0; $i < count($arr_cookies); $i++){
        echo $arr_cookies[$i];
    }
}
 
ระวังเรื่องตำแหน่งการอ้างอิง key และการกำหนดเงื่อนไข < หรือ <=
<= 4 จะเป็น 0,1,2,3 และ 4
< 4   จะเป็น 0,1,2,3
 
ถ้า key ผิด จะทำให้ key ที่เกินมา จะขึ้นแจ้งว่าเป็น undefined_index ซึ่งเป็นตัวเดียวกันกับ key
ยกตัวอย่าง พอเราวนลูปไปถึง $arr_cookies[4] ซึ่งเราไม่มีค่า key นี้ก็จะเกิด การแจ้งเตือน error
 
การวนลูป array อีกตัวอย่าง ที่นิยม คือใช้ foreach เช่น
 
$arr_cookies = array(1,3,4,5);
//print_r($arr_cookies);
if($arr_cookies){
    foreach($arr_cookies as $key => $value){
  //      echo $key." - ".$value; // กรณีต้องการแสดง key และ value
  //      echo $arr_cookies[$key];// กรณีอ้างอิงโดยใช้ $key
        echo $value;
    }
}
 
กรณีนี้เราไม่ต้องกังวลเรื่อง key เพราะจะสนใจแต่ ค่าของข้อมูล และข้อมูลจะวนลูป
จนครบรายการ หรือเราจะใช้การอ้างอิง key ตามตัวที่ comment ไว้ก็ได้
    ส่วนการวนลูป array ด้วย while ส่วนใหญ่จะใช้กับข้อมูลจำนวนมากๆ อย่างวนลูปแสดง
ข้อมูลจากฐานข้อมูล ที่จำนวนเราอาจจะไม่ทราบแน่ชัดว่าเท่าไหร่
 
แนวทางการนำไปใช้ ก็จะประมาณ
 
<?php 
$test = '70';
if($arr_cookies){
    foreach($arr_cookies as $key => $value){
 ?>
<!-- <br><br><br> -->
 
<div class="progress">
  <div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" style="width: 
  <?php  echo $arr_cookies[$key].'%' ?>"></div>  <!-- เอาค่า array ใส่ตรงนี้ยังไงครับ ที่echo "50%"; -->
</div>
 
<?php 
    }
}
 ?>


Ninenik 27.55.142.xxx 01-04-2020
 ความคิดเห็นที่ 4
ผมต้องใช้ while ดึงข้อมูลจาก db ด้วยครับ พอเอามาใส่ใน โค้ดเเล้วมันขึ้นเเบบนี้ครับตามรูป



ถ้าตรง array มีเท่าไหร่ตรงข้อมูล db มันขึ้นตามจำนวน array
$arr_data = array(rand(0,100),rand(0,100));


โค้ดอันนี้เอาใส่ใน ตรงไหนครับ

if($arr_cookies){
    foreach($arr_cookies as $key => $value){
   
            }
}
<?php

$con= mysqli_connect("localhost","root","","baccarat_db") or die("Error: " . mysqli_error($con));

mysqli_query($con, "SET NAMES 'utf8' ");
 
$query = "SELECT * FROM slot where id_slot=1 " or die("Error:" . mysqli_error()); 
//3.เก็บข้อมูลที่ query ออกมาไว้ในตัวแปร result . 
$result = mysqli_query($con, $query); 
// ถ้ายังไม่มี cookie ชื่อนี้ หรือ มีแล้ว แต่หมดอายุ เช็คจากวันที่ข้อมูล cookie
// กำหนดอายุ ของ ตัวแปร cookie ด้วย php ตอนที่ 2 http://niik.in/445 
// https://www.ninenik.com/content.php?arti_id=445 via @ninenik
if(!isset($_COOKIE['ck_checktime']) || (isset($_COOKIE['ck_checktime']) && time() > (int)$_COOKIE['ck_checktime'])){
    setcookie("ck_checktime", time() + 10,time() + 10); // สร้าง cookie เวลาปัจจุบันใหม่ ทุก 1 นาที บวกเพิ่มเท่ากับ 60 วิ
    // การสร้างตัวแปร cookie ด้วย php ต้องใช้คำสั่งนี้โดยห้ามมีการ echo หรือแสดงค่าใดๆ ก่อน
    // ตัวแปร จะเรียกใช้งานได้ หลังจากสร้างและโหลดหน้านี้ใหม่อีกครั้ง เพราะตัวแปร cookie จะถูกส่งใปใช้งานผ่าน header
   $arr_data = array(rand(0,100),rand(0,100));// random ค่าแล้วเก็บเป็น array
    $str_data = implode(",",$arr_data); // ข้อมูล string โดยสร้างจากตัวแปร array
    setcookie("ck_valuedata", $str_data,time() + 10); // สร้าง cookie ข้มอูลใหม่ ทุก 1 นาที บวกเพิ่มเท่ากับ 60 วิ
}
?>
<?php 
$i=0;
$modifyTime = filemtime("scanslot/Joker.txt"); // เวลาอัพเดทข้อมูลไฟล์ล่าสุด
 // เงื่อนไขสำหรับทำการ สร้างข้อมูลใหม่ เมื่อ cookie เปลี่ยนแปลง หรือหมดอายุ
if(!isset($_COOKIE['ck_checktime']) && time() > $modifyTime + 10){
     "Generate!!!<br>";   
    ob_start();  // ตำแหน่งเริ่มต้น ข้อมูลที่จะเก็บไว้ใน buffer      
     $str_data;
   
    $arr_cookies = explode(",",$str_data); // ใช้ค่าตัวแปรที่กำหนดให้กับ cookie ใหม่
    $data_static = ob_get_contents(); // เก็บ HTML ที่แสดง ไว้ในตัวแปร  
    ob_end_flush();   // ตำแหน่งสิ้นสุด     
    file_put_contents("scanslot/Joker.txt",$str_data); // ค่าที่เขียนลงไฟล์จะจ้องเป็นค่่าจากตัวแปร  $str_data
   
}else{
     "Use old value";    
  
    $fileData = file_get_contents("scanslot/Joker.txt"); // ใช้ค่าจากไฟล์
    $arr_cookies = explode(",",$fileData); 
//     $_COOKIE['ck_valuedata']."<br>"; 
//    $arr_cookies = explode(",",$_COOKIE['ck_valuedata']);
   
}

  
while($row = mysqli_fetch_array($result)) { 

    if($arr_cookies){
    foreach($arr_cookies as $key => $value){



$Image=  $row['FilesName'];
              $path = "imgslot/"; 
              $image =   $path. $Image;
   ?>

 <div style="width:160px;margin-top: 2%" class="card <?php echo $arr_cookies[$key].'%' == 100 ? ' card-100' : ''  ?>">
    <img class="card-img-top " width="148px" height="138px" src="<?php echo $image ;?>" alt="Card image" style="width:100%">
    <kbd><p ><?php echo $row["Name"]; ?></p></kbd>

      <div class="card-footer">
         <div class="progress">

          <?php if ($arr_cookies[$key]<=10) { ?>
             <div class="progress-bar progress-bar-striped active"style="background-color: #171414d1;
           width:100%">
      </div>
          <?php } ?>


           <?php if ($arr_cookies[$key]<100&&$arr_cookies[$key]>10) { ?>
            <div class="progress-bar progress-bar-striped active"style="background-color:<?php 
            if($arr_cookies[$key]>10&&$arr_cookies[$key]<=20){ ?> 
            #f63a0f <?php }elseif ($arr_cookies[$key]>20&&$arr_cookies[$key]<=45) { ?>
            #f27011 <?php }elseif ($arr_cookies[$key]>45&&$arr_cookies[$key]<=65) { ?>
            #f2b01e <?php }elseif ($arr_cookies[$key]>65&&$arr_cookies[$key]<=85) { ?>
            #f2d31b <?php } ?>;
          width:<?php  echo $arr_cookies[$key].'%'; ?>">
      </div>
            <?php } ?>

            <?php if ($arr_cookies[$key]==100) { ?>
                <div class="progress-bar "style="background-color:<?php if($arr_cookies[$key]==100){ ?> #3fd455 <?php } ?>;
            width:<?php  echo $arr_cookies[$key].'%'; ?>">
      </div>
           <?php } ?>


      
    </div><!-- progress -->
    </div><!-- card-footer -->
  </div><!-- card -->

<div style="width: 2%; "></div>


 <?php
}//foreach
    }//if
}//while
 ?>




Golff Sinlapachai 183.88.18.xxx 01-04-2020 20:30
 ความคิดเห็นที่ 5
if($arr_cookies){
    foreach($arr_cookies as $key => $value){

    	}
    }


ถ้าเอาไว้นอก while $arr_cookies[$key] มันเเสดง array เเต่ตัวเเรก
https://www.img.in.th/image/TC2zLY


Golff Sinlapachai 183.88.18.xxx 01-04-2020 20:54
1 2 Next






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ