【问题标题】:PHP script from command prompt - is it possible to set \ read cookies?命令提示符下的 PHP 脚本 - 是否可以设置 \ 读取 cookie?
【发布时间】:2014-07-23 15:47:43
【问题描述】:

我有一个简单的 php 页面,我正在尝试从终端控制台 (ssh) 运行这个 php 脚本:

php /home/account/domains/domain.com/public_html/script.php

现在我可以运行脚本了工作得很好(读写cookies..)

所以我的问题是,我可以从终端运行这个脚本(就像上面一样),并让 cookie 以某种方式保存吗?

我的 php 脚本很简单:

setcookie("cookie", "cookie", time()+30);
if (!isset($_COOKIE["cookie"])){
echo "New Cookie is set!";
}else{
echo "The Cookie already set!";
}

非常感谢您的帮助!

【问题讨论】:

  • Cookies 保存在客户端。从命令行运行 PHP 时,没有客户端。 setcookie() 所做的只是在对客户端的响应中发出一个标头。标头包含 cookie 名称和值。没有从命令行发出/打印标题。
  • 您好 Jonathen,感谢您的回复!那么,在从终端运行 php 脚本后,是否有任何“解决方法”来保存\读取 cookie?
  • 您想从哪里读取它们并将它们写入?没有客户。
  • 您在 CLI 中运行脚本实际上是想做什么?
  • 对,明白,我只是想,如果有外部服务或类似的,那将打开一个客户端,并从那里运行它,这听起来像是一个基本问题......谢谢!跨度>

标签: php cookies terminal setcookie


【解决方案1】:

Cookie 仅存在于浏览器中。从命令行运行脚本时不涉及浏览器,因此这些 cookie 无处可存储。

如果您需要在对命令行脚本的调用中存储数据,则需要读取数据并将其写入文件。一种简单的方法可能是:

// At the start of the script...
$PERSIST = unserialize(file_get_contents("myscript.cache")) ?: array();

// Read data from there...
print $PERSIST["blah"];
// Write some
$PERSIST["foo"] = "stuff";

// At the end of the script, save it back
file_put_contents("myscript.cache", serialize($PERSIST));

【讨论】:

  • 感谢您的回答,问题是,它必须存在 30 秒,然后才能杀死自己,就像 cookie 一样,我可以编写另一个删除此文件的 shell 脚本,但是这听起来像一个丑陋的解决方案,而且,我真的不想每 2 秒创建和删除文件,这会杀死我的 HD :),你不觉得吗?还是谢谢!
  • 如果您需要跟踪脚本上次运行的时间,请将时间存储在文件中。不用担心硬盘;会好的。
  • 好的,我认为有更好的方法,可能没有,还是谢谢!!
【解决方案2】:

如果你愿意运行一些 exec() 函数,你可以保存 cookie 和东西 - 见

How to get past the login page with Wget?

【讨论】:

  • 这是针对不同问题的解决方案。 (另外,这不是一个很好的解决方案;curl 函数也可以存储 cookie。)
猜你喜欢
  • 2011-11-26
  • 1970-01-01
  • 2021-07-07
  • 1970-01-01
  • 1970-01-01
  • 2014-03-18
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
相关资源
最近更新 更多