2015-11-08 57 views
3

我正在尝试设置一个需要获取用户在登录表单上传递的凭据的php脚本。我已经在我的apache服务器上用登录表单设置了表单身份验证,该登录表单将用户重定向到php脚本,但是当我访问“会话”cookie时,我得到一长长的加密行,而不是单独记录用户名和密码。有没有办法让Apache将这些值传递给PHP脚本?如果有,我如何获得这些价值?如何在登录Apache后将凭据传递给PHP脚本

请详见下文:

的.htaccess为目录中的PHP脚本 - webi /的.htaccess:

AuthFormProvider ldap 
AuthType form 
AuthFormLoginRequiredLocation "http://my.server.addr/webi/login/index.html" 
AuthName "LDAP" 
AuthLDAPURL "ldap://ldap.server.ip/ou=users,dc=example,dc=com" 
Require valid-user 
Session On 
SessionEnv On 
SessionCookieName session path=/ 
SessionCryptoPassphrase secret 
SessionMaxAge 900 

PHP脚本 - webi /资料/ index.php文件:

<?php 
     $cookie_name = "session"; 
     if(isset($_COOKIE[$cookie_name])) 
     { 
      echo "<li class='active'><a href='#'><span>$_COOKIE[$cookie_name]</span></a></li>"; 
      echo "<li><a href='#'><span>Update profile data</span></a></li>"; 
      echo "<li><a href='#'><span>Company</span></a></li>"; 
      echo "<li class='last'><a href='#'><span>Contact</span></a></li>"; 
     } 
     else 
     { 
      echo "<li class='active'><a href='#'><span>NO PROFILE</span></a></li>"; 
     } 
    ?> 

登录表格 - webi/log在/ index.html中:

<form class="form" method="POST" action="login-handler"> 
     <input type="text" name="httpd_username" value="" placeholder="Username"> 
     <input type="password" name="httpd_password" value="" placeholder="Password"> 
     <button type="submit" name="login" id="login-button">Login</button> 
     <input type="hidden" name="httpd_location" value="http://my.server.addr/webi/profile" /> 
</form> 

htaccess的对于其中登录表单是目录 - webi /登录/ htaccess的:

Require all granted 

htaccess的进行登录处理程序目录 - webi /登录/login-handler/.htaccess

SetHandler form-login-handler 
AuthFormProvider ldap 
AuthType form 
AuthFormLoginRequiredLocation "http://my.server.addr/webi/login/index.html" 
AuthName "LDAP" 
AuthLDAPURL "ldap://ldap.server.ip/ou=users,dc=example,dc=com" 
Require valid-user 
Session On 
SessionEnv On 
SessionCookieName session path=/ 
SessionCryptoPassphrase secret 
SessionMaxAge 900 

感谢)

+1

您在提交使用POST,你应该用户'$ _POST'的用户名和密码。会话cookie包含一个散列值(session-id)来标识用户与服务器的连接。所有会话变量(链接到会话ID)存储在服务器而不是客户端(浏览器/ cookie)上。 – shanmuga

+0

$ _POST已设置,但为空。是否有任何其他方式获得凭据传递给form-login-handler? –

+0

php'$ _POST'是获取HTTP POST请求的表单属性的推荐方式。如果你说的'$ _POST'是空的,那么可能会有一些其他问题(可能是ajax sysntax等),这会导致错误的请求。你应该看看如何让'$ _POST'工作而不是其他选择。 – shanmuga

回答