我目前正在编写一个用户必须填写用户名和密码的脚本。然后,当用户登录时,脚本会检查他/她的用户名是否已在我的数据库中注册。如果是这种情况,则用户登录我的外部网站(使用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没有值,所以我不认为这是问题所在。我查了一些其他可能的解决方案,但到目前为止没有任何帮助我解决这个问题。
如果有任何不清楚的地方,请随时提出。
答案 0 :(得分:2)
您无法通过向服务器发送登录页面的POST请求来登录用户。你的服务器登录的是什么,而不是用户。
此外,您无法使用PHP将POST数据重定向到用户。您所能做的就是使用隐藏字段method="POST"
和action="http://www.differentwebsite.com/"
制作包含username
和password
的表单,该表单将在页面加载时通过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);
所以输出会直接发送给用户。