2009-11-09 32 views
9

Tôi mới làm công việc cron và tôi đã thực hiện nhiều tìm kiếm về chủ đề này nhưng tôi không thể hiểu nó đầy đủ. công việc cron có thể truy cập cookie hoặc biến phiên không?php cron job có thể truy cập vào các biến session/cookies không?

cảm ơn!

+0

Bạn thực sự phải chỉ định trường hợp sử dụng trong đó quyền truy cập này là cần thiết. –

Trả lời

8

Công việc cron sẽ không thể truy cập cookie, vì theo định nghĩa, nó không được gọi từ yêu cầu trình duyệt web. Chỉ trình duyệt web lưu trữ cookie, chứa id phiên. Không có trình duyệt web, không cookie, không phiên.

Có nói rằng, nếu bạn làm biết id phiên bằng cách nào đó, bạn sẽ có thể bắt đầu phiên họp bằng tay bằng cách cho ăn id vào session_id() trước khi sử dụng session_start().

+0

Và đó là chỉ khi phiên vẫn còn tồn tại. Một công việc cron chạy, nói, giờ hoặc ngày sau đó có thể sẽ cố gắng tải một phiên không tồn tại nữa. –

+0

Cảm ơn rất nhiều vì câu trả lời hay của bạn. Tôi thích nó. –

0

Có một dự án có tên là pseudo cron mà tôi cho rằng sẽ có thể truy cập phiên và/hoặc cookie. Nhưng nó sẽ không có ý nghĩa với tôi.

+0

Không thực sự.Bằng cách chạy từ một yêu cầu thực tế, nó "thấy" các cookie từ người yêu cầu trang tại thời điểm chính xác đó, không phải cookie từ người có công việc cron bạn đang chạy. Giới hạn tương tự @deceze trích dẫn sẽ áp dụng ở đây. Bạn cần phải biết trước * session_id * và sử dụng nó để bắt đầu một phiên. Mà họ làm cho giả cron không phải là một lựa chọn tốt, trừ khi bạn không thể sử dụng cron. –

+0

Vâng, bạn nói đúng. Nhưng tôi nghĩ rằng nó là có liên quan kể từ khi câu hỏi không có tham chiếu đến phiên cụ thể để truy cập. Nhưng nếu bạn muốn truy cập một phiên có id phiên đã biết thì câu trả lời từ lừa sẽ chính xác. –

2

Câu trả lời khác là người dùng có thể sử dụng tệp cookie phiên với ứng dụng khách dòng lệnh. dụ:

C=~/tmp/x 
WGET="wget --keep-session-cookies --load-cookies=$C --save-cookies=$C" 

1. được trang đăng nhập

$WGET -O index.html "http://mail.yahoo.com" 

2. vớt ra bất kỳ giá trị ẩn

HIDDENVARS=`cat index.html | tr '\r\n\t' ' ' | tr -s ' ' | sed "s|> *<|>~<|g" | tr '~' '\n' | \ 
grep -i "<input .*hidden" | sed "s|.*name=\"\([^\"]*\)\".*value=\"\([^\"]*\)\".*$|\1=\2|g" | tr '\n' '&'` 

3 tự thêm không giấu vars

FORMVARS = ".persistent = y & thông tin đăng nhập = USERNAME & passwd = SE CRET "

4. bài form-data với mục tiêu

$ wget -O login.html --Quảng cáo-data = "$ {} HIDDENVARS & $ {FORMVARS}"" https: // đăng nhập. yahoo.com/config/login? "

5. lợi nhuận;)

0

Một thời gian, server-side "cookie" để chạy trong một công việc định kỳ:

Sử dụng tập tin() để đọc các server-side "cookie" - một tệp văn bản.

Sử dụng fopen, fwrite, fclose để viết "cookie" phía máy chủ.

Sử dụng nổ tung nếu lưu trữ nhiều hơn một datavalue trong "cookie" của bạn:

mã chính:

<?php 

$username = 'whatever'; 

$usercookie = 'http://yourdomainname.com/cookiebank/'.$username.'cookie.txt'; 

$oldtime = file($usercookie); 

if(is_array($oldtime)) { 
    $cookievalue = implode(" ",$oldtime); 
} 
else { 
    $cookievalue = $oldtime; 
} 

// $cookievalue can then be used as you wish... 

$newtime = date("M j G:i:s"); 

$newtime = strtotime($newtime)*1000; // current time in msec 

$myfile = fopen($usercookie, "w") or die("Unable to open file!"); 
fwrite($myfile, $newtime); 
fclose($myfile); 


echo 'done'; 

?> 

Một cách tiếp cận thẳng từ tâm trí của Heath Robinson - không phải là rất tao nhã nhưng nó hoạt động nếu bạn muốn áp dụng hành vi giống cookie cho công việc cron.

Các vấn đề liên quan