ขอความช่วยเหลือ[PHP] Function System() เพื่อการตั้งเวลาเครื่องผ่านเว็บ

เริ่มโดย l3master, 22 มีนาคม 2016, 21:56:05

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

l3master

พอดีผมทำโปรเจค Rpi อ่ะครับ ระบบคล้ายๆ Linux
ตอนนี้จนปัญญาจริงๆ ครับ ไม่รู้พึ่งทางไหนดี  :wanwan031:


ผมต้องการจะต้องค่าเวลาและวันที่ผ่านทางหน้าเว็บอ่ะครับ
แต่จนวันนี้ก็ทำไม่ได้

โดยคอมมานหลักในการตั้งเวลาก็ประมาณนี้ date -s "2 OCT 2006 18:00:00"
ผมก็เลยเขียน php ดังนี้ครับ
โดยรับค่าจากผู้ใช้มา แล้วก็เปลี่ยนวันที่เครื่องhost ตามค่าที่ได้รับอ่ะครับ

                      $day=$_POST['day'];
                      $month=$_POST['month'];
                      $year=$_POST['year'];
                      system("sudo date -s ".$day." ".$month." ".$year."");

ทำแบบนี้ไม่มีเออเร่อครับ แต่เวลาก็ไม่เปลี่ยนด้วย
ผมก็ลองหลายวิธีอยู่เหมือนกัน ไม่ได้สักที วอนผู้รู้ช่วยชี้แนะด้วยครับ  :wanwan017:

ป.ล.ผมลองใช้คำสั่ง system("sudo shutdown -r now"); เพื่อสั่งรีสตาร์ทผ่านเครื่องก็ผ่านนะครับ


CoreBlack.Net รับทำ [direct=https://www.coreblack.net/line-oa-chatbot]แชทบอทไลน์ Line Oa.[/direct] และ แชทบอท Facebook แฟนเพจ
รับออกแบบหน้าเว็บ | พัฒนาเว็บไซต์ | พัฒนาระบบหลังบ้าน | พัฒนา API Service และสคริปต่างๆ

@Add Line ID : boobewc (ให้คำปรึกษาฟรีครับ ออนไลน์เกือบตลอด 24 ชม.)

whatif

จาก system("sudo date -s ".$day." ".$month." ".$year."");
1) ลอง เปลี่ยนเป็น echo แทนก่อนนะ echo("sudo date -s ".$day." ".$month." ".$year."");
2) แล้วเอา output จาก 1) ที่ได้ไปลองรัน shell ดูว่ามันผ่านมั้ย ?

3) คิดว่าไม่ผ่าน ให้ใส่ single quote เข้าไปคร่อมวันที่ ตามนี้ ตัวแดง
echo("sudo date -s '".$day." ".$month." ".$year."'");

4) เอา output ที่ได้จาก 3) ไปลองรันที่ shell อีกครั้ง
5) หากผ่านแก้ echo เป็น system

ลองดูนะ ไวๆ ก็ทำ 3,4,5 เลย

ปล.
a) ทำไมตัวอุปกรณ์ที่ว่าไม่มี sync time ผ่าน ntp อ่ะ ?
b) หากอุปกรณ์มันคล้ายๆ linux ต้องทำ hwclock --systohc ด้วยม่ะ เพื่อ set the hardware clock to the current system time

ngokung

แบบนี้ได้ไหมครับ

In Windows, the code would look like this:
shell_exec("date 09-09-99"); // Use "date mm-dd-yy" or "time hh:mm:ss", respectively

In UNIX, according to the date man page, the code would look like:
shell_exec("date 0909hhmm1999"); // It says "date MMDDhhmiYYYY". I'm not sure how to set seconds, although I assume "mi" = "minutes"

อ้างอิงจาก http://stackoverflow.com/questions/3923848/change-todays-date-and-time-in-php

l3master

ขอบคุณทุกท่านนะครับ เดียวพรุ่งนี้ผมจะลองทำ
ตัว raspberrypi มี syc เวลาอยู่ครับ
ผมเข้าใจว่า เป็นพวกอ้างอิงตาม Timezone ใช่มั้ยหว่า
ถ้าใช่มั้นต้องเรียก ไปตั้งทุกครั้งที่เปิดเครื่องเลยอ่ะครับ

ส่วน Hardward clock ผมตั้งไม่เป็นอ่ะครับ T^T
เพราะงั้นผมต้องตั้งค่าวันที่ใหม่ทุกๆครั้ง ที่เปิดเครื่องครับ
จึงแก้ปัญหาที่ปลายเหตุ โดยการเพิ่มฟังก์ชั่นนี้แหละครับ

หน้าตาที่ผมออกแบบไว้ประมาณนี้ครับ


ป.ล.ผมทำโปรเจคสมาร์ทฟาร์มครับ พวกตั้งเวลารถน้ำ ตั้งเวลาไห้แสง ประมาณนี้ครับ


CoreBlack.Net รับทำ [direct=https://www.coreblack.net/line-oa-chatbot]แชทบอทไลน์ Line Oa.[/direct] และ แชทบอท Facebook แฟนเพจ
รับออกแบบหน้าเว็บ | พัฒนาเว็บไซต์ | พัฒนาระบบหลังบ้าน | พัฒนา API Service และสคริปต่างๆ

@Add Line ID : boobewc (ให้คำปรึกษาฟรีครับ ออนไลน์เกือบตลอด 24 ชม.)

honghong

ลองใช้ ดูครับ

system("sudo date -s \"{$day} {$month} {$year}\"");

อ่านค่าที่รับมาก่อน เหมือนด้านบน
echo"sudo date -s \"{$day} {$month} {$year}\"";

อ้างอิง จากที่เขาทำมา
exec('date -s "24 NOV 2013 12:38:00"')
http://stackoverflow.com/questions/20177595/php-change-server-date-time

ohmohm

ทดลองแบบ ปีเดือนวัน ซิครับ

                      system('sudo date -s "'.$year.'-'.$month.'-'.$day.'"');

ปล. ถ้าเป็น hardware ลองหา real-time clock module สำหรับ Raspberry Pi ดูซิครับ โครงงานน่าสนจัง