【发布时间】:2012-02-16 04:09:51
【问题描述】:
我的 cURL 脚本在我的 localhost 上 anymore 不起作用(所以请记住它之前确实起作用)(所以它确实在我的外部主机上起作用,因此:它可能是服务器设置):
这个脚本之前在我的本地主机上运行良好(它仍然在我的主机上运行)。没有改变。
- 也许我在本地主机上运行此脚本超过 3000 次这一事实很有用。
- 我在 Windows 7 上运行,使用 WampServer 设置主机。
- 我可能更改了设置,这会影响 cookie 的写入。但是是哪一个?
真正的问题:cURL 没有设置 cookie!应该打开哪些 apache 模块来写入 cookie(在 .txt 文件中)?我正在运行 wampserver。
请注意我已经在使用:
curl_setopt($curlTable, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($curlTable, CURLOPT_COOKIEFILE, 'cookie.txt');
而那个 php.ini 是:
extension=php_curl.dll is uncommented
- 附带问题:curl_close 是否取消设置 cookie?如果没有设置 cookiejar 选项?
- 主要问题:为什么 curl 不像它应该做的那样写一个 cookie(并且在我的外部主机上,而不是在我的 LOCALHOST 上。
其他信息:
phpinfo()
curl
cURL support enabled
cURL Information 7.21.7
Age 3
Features
AsynchDNS Yes
Debug No
GSS-Negotiate Yes
IDN No
IPv6 Yes
Largefile Yes
NTLM Yes
SPNEGO No
SSL Yes
SSPI Yes
krb4 No
libz Yes
CharConv No
Protocols dict, file, ftp, ftps, gopher,
http, https, imap, imaps, ldap, pop3,
pop3s, rtsp, scp, sftp, smtp, smtps, telnet, tftp
Host i386-pc-win32
SSL Version OpenSSL/0.9.8r
ZLib Version 1.2.5
libSSH Version libssh2/1.2.7
目前使用:
preg_match('/name="csrf" value="(.*?)"/', $getTokenCurlData, $token);
$postFields = array(
'user' => $userNum,
'paswoord' => $userPass,
'login' => 'loginform',
'csrf' => $token[1]);
// 'user='.$userNum.'&paswoord='.$userPass.'&login=loginform&csrf='.$token[1]
$postData = http_build_query($postFields);
$curlTable = curl_init();
curl_setopt($curlTable, CURLOPT_URL, 'link');
curl_setopt($curlTable, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($curlTable, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($curlTable, CURLOPT_ENCODING, 'gzip');
curl_setopt($curlTable, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlTable, CURLOPT_POST, true);
$tableData = curl_exec($curlTable);
if (!$tableData) echo 'post problem?'.$tableData;
if ($tableData == false)
{
echo 'Curl error: ' . curl_error($curlTable);
}
curl_close($curlTable);
// Here I further process my data.
【问题讨论】:
-
/var/log/apache/errors.log 它说什么?或者你登录的任何地方。在 PHP 中启用显示错误
-
你怎么知道它不起作用。什么位不工作?
-
它返回 false,但没有给出错误。看看我对这个答案的评论:stackoverflow.com/a/8961232/574700.
-
curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookies.txt');用于存储cookies。 -
@ZombieHunte:是的,我知道,但它没有设置 cookie。应该启用哪些选项来写入文件?
标签: php cookies curl setcookie