添加SSL证书后,登录表单无效

时间:2013-12-26 15:21:57

标签: php ssl login

我有一个登录表单:

<form method="post" action="verify.php" name="loginform">
<table border="0" bgcolor="orange" align="center">
<tr><td colspan="3"><h1><b>Please Enter Username and Password</b></h1></td></tr>
<tr>
<td><label>User Name</label>
</td>
<td>:
</td>
<td><input type="text" name="user"/>
</td>
</tr>
<tr><br/>
<td><label>Password</label>
</td>
<td>:
</td>
<td><input type="password" name="pwd"/>
</td>
</tr>
<tr><td colspan="3" align="center"><input type="submit" class="submit-green" value="Login"/></td>
</tr>
</table></form>

我将verify.php作为

<?php
session_start();
include "dbconfig.php";
$user=$_POST['user'];
$pwd=sha1($_POST['pwd']);

$sql='select * from admin where username="'.$user.'" AND password="'.$pwd.'"';
$res=mysql_query($sql) or die('Login query error:'.  mysql_error());
if(mysql_num_rows($res)==1)
{
header("Location:index");
}
else
{
header("Location:login.php");
}
$row = mysql_fetch_array($res);
$_SESSION['admin']=$row['id'];
?>

这里有错误吗?我找不到任何错误。它工作正常,直到我在我的网站上使用SSL证书。现在它不起作用。我做了一个print_r请求,知道通过post方法获得的值。但只有密码才能获得,而且SHA1值也是错误的。为什么会这样?

1 个答案:

答案 0 :(得分:0)

从HTTP切换到HTTPS时,您正在丢失会话,因为HTTPS会话cookie上设置了Secure标记,因此只能通过HTTPS访问它们。这意味着当您切换到HTTPS时,无法传输旧的HTTP会话cookie。您可以尝试将HTTP会话传递给HTTPS。

以下是another answer

的示例

HTTP代码:

$currentSessionID = session_id();
header('https://yoursite.com/login.php?session='.$currentSessionID);

HTTPS代码:

// Retrieve the session ID as passed via the GET method.
$currentSessionID = $_GET['session'];

// Set a cookie for the session ID.
session_id($currentSessionID);

显然,你会想让它更安全。这只是传达一般概念的一个简单例子。