可以php cron jobs访问会话变量/ cookies吗?

时间:2009-11-09 06:46:42

标签: php cron

我是cron工作的新手,我已经在这个主题上做了很多搜索,但我无法完全理解它。 cron job可以访问cookie或会话变量吗?

谢谢!

4 个答案:

答案 0 :(得分:9)

cron作业将无法访问cookie,因为根据定义,它不会从Web浏览器请求中调用。只有Web浏览器存储包含会话ID的cookie。没有网络浏览器,没有cookie,没有会话。

话虽如此,如果您 以某种方式知道会话ID,您应该能够通过在使用session_start()之前将ID提交到session_id()来手动启动会话。

答案 1 :(得分:2)

另一个答案是,可以将命令行Web客户端使用会话cookie文件。 例如:

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

1。获取登录页面

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

2。钓掉任何隐藏的值

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手动添加非隐藏的变量

FORMVARS = “持久= Y&安培;登录名= USERNAME&安培;的passwd = SECRET”

4。将表单数据发布到目标

$ WGET -O login.html --post-data =“$ {HIDDENVARS}&amp; $ {FORMVARS}”“”https://login.yahoo.com/config/login?“

5。利润;)

答案 2 :(得分:0)

我认为有一个名为pseudo cron的项目可以访问会话和/或cookie。但这对我没有意义。

答案 3 :(得分:0)

基于时间的服务器端&#34; cookie&#34;在cron工作中运行:

使用file()来读取服务器端&#34; cookie&#34; - 文本文件。

使用fopen,fwrite,fclose编写服务器端&#34; cookie&#34;。

如果在&#34; cookie&#34;中存储多个数据值,请使用implode:

主要代码:

<?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';

?>

一种直接来自Heath Robinson头脑的方法 - 不是很优雅,但是如果你想将类似cookie的行为应用于cron工作,它就会起作用。