0

我正在为登录脚本编写 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

从这里我需要检索数据。我对此一无所知。

4

3 回答 3

2

HTTPS 对 PHP 代码实际上是透明的。它完全由浏览器和服务器处理。您可以像访问 HTTP 请求一样访问 $_REQUEST 变量。

编辑(略微修改的问题):

如果您的客户希望您有一个登录表单来提交用户名和密码(正如您对问题所做的更改所示),您只需将表单输入与通常在 HTTP 连接中的输入相同。分别将它们命名为“用户名”和“密码”,然后从您将表单发布到的页面上的 $_POST 中提取它们的数据。正如我之前提到的,将服务器设置为响应 HTTPS 将使其透明地处理其他所有内容。

于 2012-06-26T06:22:30.577 回答
1

您可以使用 HTTP Auth Basic 对请求进行身份验证。

于 2012-06-26T06:20:23.680 回答
1

正如 Piotr 所提到的,不要使用 HTTP 身份验证。

正如其他人发布的那样:只需将 vhost 设置为在 https 上运行即可。您可以添加类似这样的内容来验证连接是否安全:

<?php
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] && isset($_POST) && isset($_POST['login'])) {
    // Your username and password verification here.
}

请使用 $_POST。$_REQUEST 是一种令人讨厌的说法:“我真的不知道我在这里做什么......”。

于 2012-06-26T06:41:40.253 回答