我正在为登录脚本编写web服务。我必须把它保存在HTTPS服务器上。一般来说,我们在服务器端得到的用户名和密码是
if(isset($_REQUEST['login'])){
$user=mysql_escape_string($_REQUEST['username']);
$password=hash('sha512',$_REQUEST['password']);
} 但这对于HTTP连接来说是很好的。
我从来没有使用过HTTPS连接用于web服务,所以我想知道有没有其他方法可以通过HTTPS连接传递用户名和密码?那么如何从请求中检索数据。
我的客户希望在头信息中发送这些数据
Method: POST
Content-Type: application/x-www-form-urlencoded
Content: username=mynames&password=abcabc从这里我需要检索数据。我对此一无所知。
发布于 2012-06-26 14:22:31
HTTPS对PHP代码实际上是透明的。它完全由浏览器和服务器处理。您可以像访问$_REQUEST请求一样访问HTTP变量。
编辑(略微修改的问题):
如果您的客户希望您有一个登录表单来提交用户名和密码(如您对问题所做的更改所示),您只需使表单输入与通常在HTTP连接中相同。将它们分别命名为"username“和"password",然后从要将表单发布到的页面上的$_POST中提取它们的数据。将服务器设置为在HTTPS上响应将使其透明地处理其他所有事情,正如我前面提到的。
发布于 2012-06-26 14:20:24
您可以使用HTTP Auth Basic对请求进行身份验证。
发布于 2012-06-26 14:41:40
正如Piotr提到的那样,不要使用HTTP身份验证。
正如其他人所说:只需将vhost设置为在https上运行,就可以运行了。您可以添加类似以下内容的内容来验证连接是否安全:
<?php
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] && isset($_POST) && isset($_POST['login'])) {
// Your username and password verification here.
}不过,请使用$_POST。$_REQUEST是一种表达“我真的不知道我在这里做什么……”的令人讨厌的方式。
https://stackoverflow.com/questions/11201707
复制相似问题