cURL关注位置无法正常工作

时间:2013-03-13 08:33:27

标签: curl php

我目前正在编写一个用户必须填写用户名和密码的脚本。然后,当用户登录时,脚本会检查他/她的用户名是否已在我的数据库中注册。如果是这种情况,则用户登录我的外部网站(使用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);
}

如您所见,我的脚本将行计数存储在count变量中,如果查询结果为1行,则会在我的站点上登录,如果不是,则会在另一个站点上登录。用户名和密码检查在用户登录的实际网站上完成。

现在我的问题是,我希望它“跟随位置”,或者可以这么说。现在,该脚本将(?)重定向到例如http://www.myownwebsite.com/checklogin.php(checklogin.php是我正在使用cURL的脚本)。

我尝试使用followlocation cURL函数来解决这个问题,但这样做会给我一个警告:

  

警告:curl_setopt():启用safe_mode或在-----

中设置open_basedir时,无法激活CURLOPT_FOLLOWLOCATION

我使用phpinfo()检查了我的php.ini;函数和安全模式关闭,open_basedir没有值,所以我不认为这是问题所在。我查了一些其他可能的解决方案,但到目前为止没有任何帮助我解决这个问题。

如果有任何不清楚的地方,请随时提出。

1 个答案:

答案 0 :(得分:2)

您无法通过向服务器发送登录页面的POST请求来登录用户。你的服务器登录的是什么,而不是用户。

此外,您无法使用PHP将POST数据重定向到用户。您所能做的就是使用隐藏字段method="POST"action="http://www.differentwebsite.com/"制作包含usernamepassword的表单,该表单将在页面加载时通过JavaScript提交。这是您可以输出的页面的简单示例。

<html>
<head>
<script type="text/javascript">
function submit_form()
{
    document.myform.submit();
}
</script>
</head>
<body onload="submit_form();">
    <form method="POST" name="myform" action="http://www.google.com/">
        <input type="hidden" name="username" value="someusername"/>
        <input type="hidden" name="password" value="somepassword"/>
    </form>
</body>
</html>

至于你为什么要重定向用户,这是因为你跳过了:

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

所以输出会直接发送给用户。