【发布时间】:2013-03-13 08:33:27
【问题描述】:
我目前正在编写用户必须填写用户名和密码的脚本。然后,当用户登录时,脚本会检查他/她的用户名是否已在我的数据库中注册。如果是这种情况,则用户登录我的外部网站(使用 cURL),如果没有,用户登录我无权访问数据库的其他网站。
if($count==1){
$curl = curl_init('http://www.myownwebsite.com/');
curl_setopt ($curl, CURLOPT_POSTFIELDS, "gebruikersnaam=$myusername&wachtwoord=$mypassword");
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_exec($curl);
}
else {
$curl = curl_init('http://www.differentwebsite.com/');
curl_setopt ($curl, CURLOPT_POSTFIELDS, "username=$myusername&password=$mypassword");
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_exec($curl);
}
如您所见,我的脚本将行数存储在一个计数变量中,如果查询结果为 1 行,它会登录到我的站点,如果不是,它会登录到另一个站点。用户名和密码检查是在用户登录的实际网站上完成的。
现在我的问题是,我希望它“跟随位置”,或者可以这么说。脚本,就像现在一样,重定向(?)到例如http://www.myownwebsite.com/checklogin.php(checklogin.php 是我在其中使用 cURL 的脚本)。
我尝试使用 followlocation cURL 函数解决此问题,但这样做会给我一个警告:
警告:curl_setopt(): CURLOPT_FOLLOWLOCATION 在启用安全模式或在 ----- 中设置 open_basedir 时无法激活
我使用 phpinfo(); 检查了我的 php.ini function 和 safemode 被关闭,open_basedir 没有值,所以我认为这不是问题。我查找了其他一些可能的解决方案,但到目前为止没有任何帮助我解决这个问题。
如果有任何不清楚的地方,请随时询问。
【问题讨论】:
-
CURLOPT_MAXREDIRS的值是多少? -
脚本中没有 maxredirs,所以我猜它可能是默认值?我需要对它做些什么吗?
-
如我所见..您正在使用 CURLOPT_POSTFIELDS 但您没有设置 CURLOPT_POST 的值..您是否将其设置在其他地方..?
-
再次阅读错误信息。到目前为止,您的故障排除没有得到正确的结果,因为您可以打开 safe_mode 或设置 open_basedir。你说两者都不是。请仔细检查失败的具体请求。对于它,它可能不是您在其他地方检查过的。总是对具体的要求进行故障排除,而不是在天空中的其他城堡。 - 参见Php - Debugging Curl
-
@new_developer 错了,
CURLOPT_POST是隐含的。